Friday, March 23, 2007

Food chain and software development

We all know about the food chain. Humans are on the top of food chain. We eat chicken and chicken feeds on cereals. This can be used as a metaphor for the software development. For example, in a typical software development cycle, the first step is to gather the requirements, requirements are consumed by architecture design. Developers consume architecture to write code and develop software.

Lets extend this concept little further. Lets assume that food consumed by the chicken contains pesticide(say DDT, which is a common problem in India) and chicken also carries chicken flu virus. If we eat this chicken(not me :)), we are not only killing pests in our stomach :D, but also risking our life from chicken flu! Lets apply this to software development. What if requirements are not properly written and architecture not properly designed. Coding suffers the most !

We can extend this concept further to associate it with price. Think about the cost of treatment of the diseases caused by eating this chicken. You not only pay for bird flu treatment (say 1000$), but you also pay for the disease caused by the pesticide (say another 1000$). Total cost turns out to be 2000$. Suppose the food grains which chicken had was not polluted or chicken was not suffering from bird flu. Then cost goes down to 1000$. Same applies to software development. For each polluted step in between, you have to pay a price (time and money) to fix it!

But then there is a flaw here. In case of software development, cost of fixing problem is proportional to the level at which pollution(yeah, pollution :)) occurs. If requirements are not gathered properly, then the price paid to fix this will be much higher than what you pay to for fixing problems in architecture.

So next time when you start a new project, make sure you go do not pollute any step in between !

1 comment:

Anonymous said...

People should read this.