Software farming

What is software? is it science? or is it engineering?   If it is science, what are the principles?  who are the people behind it?.  Our day to day life is so much influenced by learning the laws of physics, chemistry , mathematics and all applied and ancillary areas.  


We needed an archimedes (3rd century BC) to discover  that upward thrust of an object being immersed is equal to the weight of the fluid getting dispersed, we needed a Newton, Einstein and Edison and many others and their life time keenness to invent solutions to problems. We know the laws of science,  how and why we are able to thrive on earth, a bit of a change in gravity of earth can make all life disappear, but it is so much orderly, the sun, earth and other planets are all are working in such a perfect pattern and we know the formulae behind it.   Every tool we are using (say plumber, electrician, farmer or a mechanic) has many years of evaluation. and engineering is essentially applied science. 


Software is not science, there are no defined laws, what we have in the name of design, agile and code practices are mere recommendations but no one is sure if you really can succeed in building great software by following the recommendations, while the probability of success may be more when you follow compared to not following anything, there is no guaranty. 


For me software is more similar to farming, we dream and believe we are planting seeds and going to grow fruits, but land up buying everything from grocery store.  Its more of a bread or any other perishable food, tasty, yummy if it is made properly and eaten fresh or hot, if not it goes into trash, if good it is consumed and goes into sewer.  You need to repeat the shopping and almost every day or week. 


We all start dreaming about planting seeds and hoping we will reap fruits and vegetables and land up buying from grocery store eventually and the problem is perpetual.   


Software is same, you want to build product and dream that solves all problems, but it becomes stale or trash eventually. 


If I have to fake it and treat software as science, here are couple of laws I can propose.


First law of software : 

Software is perishable.  Software, irrespective of who designed or built or how much money or effort burned into it, it eventually becomes trash.  


Second law of software:

Rate of Software decay is inversely proportional to  quality of analysis, design and maintenance and is always > 0 


Let me get back to farming,  as a son of farmer and husband to a wife who grows her own vegetables when possible, I see what helps good yield.

Preparation :   You need to prepare the soil, augment as needed , add compost, make sure it is weed free.  get good and right seeds (you reap what you sow).  


Weather : with great soil and seeds, can you get high yield, no you need a great environment, right amount of sunlight and shade ,  right amount of water etc are needed and yes the quality of inputs (water etc) affects the growth.  When you have right preparation and support from weather, you increase the probability of great yield.


Nurturing:   assuming great preparation and weather makes all the difference, what is there are weeds eating all the nutrients or there are pests eating your plants?   or your plants grow randomly with too many suckers? Nurturing is important. 



Lets apply the same for software farming.


preparation

It takes lot of preparation, everyone with lot of money and some ideas can not built great software, even if you have lot of preparation and weather and nurture, if the seeds are bad.  Seed is the idea,  great seeds are a must and unfortunately you do not know easily how to figure out which is a great seed.  It needs exploratory practice. At times you may dream of great fruits but you may be able to sell the leaves or roots and still make more money.   Unlike regular farming, world doesn't need too many products being built so the success rate for software is like sex, out of millions of sperms only one gets success fertilization.  

preparation includes analysis, designs and putting things together into shape.


Weather

The team, the leadership and required resources can amount to the weather. 


Nurturing

Once you build product, you need to continuously nurture it , care for it and then only you will reap the results.

Remember,  the second law of software, the greater the nurturing the less the decay, no  plant or tree is permanent. 


Essentially you need to continue farming and after all  "Sofware is mortal"








 

Comments

Popular posts from this blog

The Mumbai trip

Garden Arbor

Indiatoday book club lottery - a 419 cheating