Thursday, July 07, 2005

Software development is not construction

Three days ago I've posted my opinion that technical competence is required for PM managing IT projects. Of course understanding technology is not enough. PM should be aware of an essential difference between software development and traditional construction-type projects.

Software development is not construction engineering, where most activities are repetitive and can be described in a detail by the procedures or automated. Kidd distinguished such kind of procedural work from the effort of knowledge worker, who's job is based on creativity and communication. Therefore software developer should be considered designer because, as Reeves pointed - code is the design. Moreover, in software all the effort is design, as stated Fowler.

Every design activity is more similar to research than the production. Design is hard to schedule, because of its very nature. Conklin and Weil have studied the designers behaviors and concluded that solving complex problems (design is such activity) is non-linear, chaotic and nearly impossible to plan - "the flow of their [designers'] thinking was full of upredictable leaps" (Conklin, Weil - "Wicked Problems: Naming the Pain in Organizations").


Figure 1: Actual pattern of problem-solving activity of one designer - the "seismograph" (source: Conklin, Weil - "Wicked...") [click to enlarge]

Also Fowler says that creative processes are not easily planned, and so predictability may well be an impossible target. This could be one of the reasons of the failure of applying the deterministic project management techniques to software projects.

It is important to understand the essential difference between traditional construction engineering and software development. Those who don't get it, won't see anything wrong with building a bridge an agile way :).

UPDATE (2005-07-18): Mishkin Berteig pointed me to the article supporting my argument. Really worth reading. Thanks Mishkin!

2 comments:

Mishkin Berteig said...

You might be interested in the article I wrote on Kuro5hin: The Software Construction Analogy is Broken. The comments in the story are often just as informative and insightful as anything in the article itself (which is to say that I didn't get everything right and there was a lot that other people were able to add). You might also be interested in my blog: Agile Advice - it's about

Unknown said...

Thanks for your feedback - the article is really interesting, so is your blog.