Software Development with Linux

You failed not Waterfall

MON, 01 AUG 2011

It looks like more and more agile proponents have seen the light and stopped demonizing Waterfall. In the last two weeks, Stop Blaming Waterfall and Waterfall Works were posted on Agile Zone. In addition to having better titles than this post, they were published by active agile advocates...

That said, what I want to point out is that you should never blame the tools you are using. They are only tools. They are not taking any decision. You only have yourself to blame, since it is you that failed.

Every tools in existence was conceived for a particular purpose, with a particular problem in mind, and a particular context for its usage. As for everything in life, choices were made in the conception of the tools. Each choice mean some advantages and some disadvantages. Those choices were made with the understanding, the needs, and the environment at that time. If you don't understand the decision process that went in creating the tool, you will have a hard time using it. That is true for software development processes, software development techniques, and project management techniques as well.

When some one says that agile failed (whatever that means), many start jumping around saying that is because it was not really/fully agile, that it was wrongly implemented, etc. Why nobody does the same when it is waterfall that failed?

When I see/hear/read things like this, my understanding is that either I have misunderstood the person's message, or that she/he did not understand that those are only tools to be used in certain circumstances, often with modifications, and the you take the bits you need and leave the bits you do not need.

The waterfall model and its derivatives were fine when they were conceived, and are still fine today when the circumstances are similar to what they were at that time. You will probably need to adapt for the particularities of your project, but you should do that anyway, whatever the software development process you are using as your base template.