June 16, 2008

...Learn TDD with Codemanship

Pro-Waterfall Rant Highlights Nature Of The Delusion

Check out Linda Wilkinson's blog post in which she quite rightly assumes that I am young, inexperienced and misinformed about matters pertaining to software methodology.

Linda cogently argues:

So let's talk about waterfall. The Real Deal, not the assumptions made by people who don't remember dumb terminals and have never worked on a project that "admitted" to using waterfall technique.

I've never, in more than 25 years, EVER worked on a waterfall project of any size whatsoever that wasn't broken down into workable pieces or that was moved into production in one big "bang". In addition, do you realize the quality of software products over the past 20 years has gone down, not up? Do you think that indicates your predecessors were stupid or that we do things "better" now?

No. Back in the "olden days", breaking a large project into smaller, workable pieces was called "phased delivery".

And there you have it, folks. That's the only freakin' difference. "Phased" vs "incremental".


You're indulging in a myth if you think users were not involved early and often in the process. You're indulging in a myth if you think there was some kind of gigantic, all-encompassing design document at the get-go.

And that, my dear Watson, is why those "poor deluded people" believe the way they do. Poor "crazy folks".

So, as you can see, I stand corrected. "Waterfall" development is actually iterative and incremental and involves users throughout the development lifecycle.

Remember, you heard it here first, folks!

Anyway, sarcasm aside, maybe what Linda needs is a little history lesson about the origin of the term "waterfall model". Of course, having literally just this minute hatched from the breeding facility they grow contextualists like me in, I was not there at the time and can only relate that which I've managed to glean from books and wotnot.

The term was coined after an article published in 1970 by Winston W. Royce, to describe development flowing steadily downward through phases of requirements analysis, design, construction, testing, integration and maintenance. Ironically, Royce presented this as an example of a flawed, dysfunctional model for software development. Despite this, Royce's criticisms of the model were largely ignored, and it was actually adopted by many organisations as "the way to deliver software".

Not so, said Royce. He went on to propose an iterative sequence of "waterfalls", the closest equivalent model today being widely known as the spiral model. What Linda describes is NOT waterfall software development. Waterfall is what Royce argued against in his article. Spiral is what he advocated. And that, by the sounds of it, is what Linda has been successfully doing all these years.

But she believes she has been practicing waterfall development. Which, technically, is a delusion.

Posted 10 years, 1 month ago on June 16, 2008