Search
Enter Keywords:
Sunday, 05 September 2010
Home arrow Development Methods arrow Its all Evolution
Its all Evolution PDF Print E-mail
Written by Peter Harrison   
Tuesday, 12 January 2010

Although I have been critical of waterfall in the past I recently came to a realisation; that evolution is something that occurs in software development regardless of whether you intend it or not. Unless your software is dead.

In the past I have seen waterfall as a method diameterically opposed to evolutionary methods such as Extreme Programming. However, I now see that all software development is always subject to evolution. Even projects run strictly on a waterfall basis cannot escape from the process of selection which occurs in a free market.

The difference becomes a matter of degree; do you encourage evolution to guide your projects or do you try to reign over them, maintaining control? Perhaps I better start by defining what I mean by evolution. Computer code is similar to DNA, and in this sense it is heritable.

Software replicates itself onto users computers, and it is the users and the choices they make about which software to install and use that make up the ultimate evolutionary environment that acts as a form of "user selection".

In this way all software is part of an ecosystem which rewards the software that users find most beneficial. No software is outside of this ecosystem, and thus all software is subject to the same kinds of evolutionary pressure as natural life forms face.

Agile software development methods tend to ramp up evolution. The principle of releasing early and releasing often encourages a tighter feedback loop between software developers and users, and in doing so strengthening the selective pressure for good software.

Extreme Programming adds further selection pressure in the form of unit tests and continuous code review in the form of peer programming. A close relationship between developer and user fosters a tight feedback cycle.

Short iterations and strong selection are key to utilizing the naturally occuring and inevitable process of evolution. Waterfall tends to put faith in the ability of people to design complex systems. The ability of people to think and foresee issues is certainly a huge asset, however I feel that many developers put far too much faith in their ability to design systems.

In my previous article on appropriate design the message is that developers should know their limits; know how far and in how much detail they can take a design before it falls victim to diminishing return. Its often far earlier than one may believe.

Clearly software development is not only a evolutionary process. We need skilled developers to create and modify code, and this is a creative process of the highest intellectual level. Understanding evolutionary processes allows us to leverage our intellect.

Finally I would encourage software developers to gain a more in depth understanding of evolutionary processes so they can more fully appreciate its power. Two books in particular are excellent resources, "The Selfish Gene", and "The Bind Watchmaker", both written by Richard Dawkins.

Last Updated ( Tuesday, 12 January 2010 )
 
< Prev   Next >

© 2010 www.devcentre.org
Joomla! is Free Software released under the GNU/GPL License.