The contentious myth of Waterfall development?

Frans has finally had enough of the bickering on the ALT.NET lists. The last straw was when he mentioned the “W” word – “Waterfall development”, at which point he was allegedly set upon by a band of Kent Beck-loving, test-infected, over-zealous Agile thugs :-). Frans’ main complaint (and probably a fair one) was the lack of evidence or science behind any of the arguments. Chad Myers had a good reply, where he used an industry example to try and show Waterfall development is fairly useless compared to iterative development.

All this reminded me of something I heard ages ago: Waterfall never really existed. I decided to have a quick look into it. First stop, Wikipedia, which states that the first reference to Waterfall-style development by Winston W. Royce in 1970 was in showing a model that was good in theory but flawed in practice. The purpose of his paper was to describe how the model could be fixed by adopting a more iterative approach. (He didn’t use the term “waterfall”, but he does use the familiar waterfall phase diagram.)

In the original paper, Managing the Development of Large Software Systems [PDF], Royce asserts that “the [Waterfall] implementation described above is risky and invites failure”, his main complaint being that it takes too long to get feedback from testing and that any changes to design required become too disruptive late in the process. He then goes on to describe the steps to “transform a risky development process into one that will provide the desired product”. Royce even concludes that the “simpler method [Waterfall] has never worked on large software development efforts.”

This 2003 piece from Conrad Weisert has a bit more on the topic. His conclusion seems in rough agreement with Royce’s: that phased software development is fine in theory and can work “when practiced with sensible judgment and flexibility” (or even agility ;-) ). But he is quite adamant that strict “Waterfall development”, in which one never revists previous phases nor adapts to feedback from later in the process, does not and has never existed. This lends a bit of weight to Chad’s view that strictly phased development processes “eventually devolve into necessary sub-standard Agile”.

So according to my 5 minute, quasi-research, all this debate over Waterfall development is really just discussing a theoretical model presented over 37 years ago for the purpose of illustrating the advantages of iterative development. :-) Now can we all stop arguing about waterfall and get back to attacking people that misuse code comments please? :-)