Wednesday, October 18, 2006

Democracy of Software development

The ever present question of finding the most efficient methodology to run a system. We find some strong ideas to oppose or propose one kind of a system or another. Lets talk about the political system:
First scenario:
Take an utopic kingdom run by a very efficient King. A king who is passionate and powerful and who makes sure that his kingdom is running smooth. A king who makes sure that no one in his kingdom is hungry and deprived of basic human amenities. Now ask anyone in this kingdom if they would like to change the King? The answer would be no. Why would anyone like to change a system which is so efficiently run? Now ask a hungry beggar or homeless in a democratically run country if the democracy in his country is any better than the aforementioned kingdom. Do we have to guess the reply?
Second scenario:
Same kingdom but now the king is corrupt. A king who uses his army to terrorize and impose his own dogma. A kingdom where justice has been hijacked by a few and a kingdom where even basic human amenities are scarce.


Even though the people were happy in the first scenario, they did not have the power to make any difference. It became more evident in the second scenario when being powerless was a peril. The same people who were happy in the first did not have any power to make a change for themselves in the second. The worst case scenario was bad. The order of the algorithm was quadratic.

I am not a politician but a programmer who analyse a system for its behaviour in the best and worst case scenarios. Democracy is not the best system to run a country but is the most efficient in the scenarios where it comes to humanity. People may not be happy but they do have power to make a change. Now why am I talking about a political system when I cannot claim any expertise in it? No I am not. Actually I am talking about the software development. "Phased development does not work". You have heard this from the methodology champions. Thats the reason why DDD and methodologies like eXtreme programming are so popular. Now if the phased development like waterfall was so bad and inefficient why would it exist anyway? The answer to this question lies in the story of the kingdom I narrated. When a system lacks democracy or iterativeness or closed loop revisits the need of managing it skyrockets. The system can be efficient if managed properly but is too fragile to absorb any loose threads or misses. Democracy or the iterativeness provides a platfom to correct things. With fluid goals and the risk of losing team members makes phased programming very difficult to manage. Bring the democracy to software development.

No comments: