“Waterfall” is a Misleading Term in Projects
By Nader K. Rad
I believe the term “waterfall”, which is used a lot in the Agile context, is misleading. This is so because
- it’s supposed to refer to the other development approach, which is technically predictive development;
- it’s also used to refer to anything that is not Agile.
Besides Agile (adaptive development) and predictive development, there’s also a third possibility, which is, in fact, more common than others: chaos. Approaches that are not Agile are not necessarily predictive; they may be just chaotic.
The result is that the use of the term “waterfall” mixes predictive systems with chaotic ones and in doing so undermines the predictive system and the interesting things in it.
So, let me explain it.
What is predictive development?
A predictive development method is one that tries to first create an optimized design and plan for the product, and then create the product based on that initial plan.
So, we’re practically “predicting” the best way of creating the product, hence the name “predictive development”. I’ve also seen some resources refer to it as “plan-driven”, which is a descriptive name as well.
What is adaptive development (Agile)?
An adaptive development method uses minimal planning and instead works in small partitions of time, creates representative increments of the product, shows them to the customer and end users, receives feedback, and then uses that feedback to decide about the next step.
In an adaptive method, we rely on feedback to find our way instead of an initial plan. We carry on, show various versions of our product to people, and adapt to their needs and wants. This resembles the way humans and other animals have continuously and incrementally evolved to adapt to their environment.
“Agile” is the popular name for such adaptive systems.
Which one is the correct approach?
It’s not a matter of right and wrong; they are both fine and interesting, and each of them is suitable for certain types of project.
Think of Spotify and Netflix. Using an adaptive system gives them a significant advantage because they can’t “know” exactly what we expect from them. They let their products evolve and emerge based on our interactions. This makes them more successful, and makes us happier. (By the way, if any of those two companies are reading this, please fix your algorithms for suggesting movies and music – I sometimes feel like a random suggestion would work better than what you’re giving me!)
Now, think about a piece of software used in an airplane. Do you want to be in a plane that uses software that was built using Agile methods? I certainly wouldn’t want to be there. It needs a very careful predictive system that thinks about every possibility and guarantees safety; it’s not about coming up with cool features and seeing whether they work. It’s about people’s lives. It’s the same for some pieces of software used in hospitals, as well as for software that is used on satellites, which are supposed to work without problems for many years, as you can’t go up there and turn it off and on again!
It’s not only about the sensitivity of the product, but also about the nature of the product. Something like a building doesn’t have the conditions to be developed iteratively to enable adaptation, and so we have to use a predictive system.
Agile community members always refer to “waterfall” when they want to explain the differences or criticize the “other approach”.
Historically, waterfall was a nickname given to predictive development, when people started thinking of using adaptive systems for IT development instead of the more common predictive approach. Nowadays, though, the way the word waterfall is used in the community, it simply means “anything that is not Agile”.
So, is predictive development the only thing that is not Agile? No! There’s a third option, which is more common than both adaptive development (Agile) and predictive development: it’s chaos. Yes, most projects don’t have a structured approach; people just keep working, and the project somehow happens.
Why is this a serious problem?
Now, you may be asking, “Why is this problem with the word “waterfall” serious?” I believe it is so because it undermines the value of having a structured system (adaptive or predictive) and leads the Agile community to mix up the value of predictive systems with the disadvantages of chaotic projects.
For example, is it fine to have project managers in Agile?
It is not fine if your Agile system is Scrum (or one of its flavors). Scrum is not the only option, though, and most other first-generation Agile methods have project managers (e.g., DSDM) or are not against having project managers (e.g., XP).
What has happened in the IT world is that there have been many chaotic projects with incompetent people wearing the label of “project manager” who have been annoying people without adding much value, because of the chaotic nature of the system.
Now, when we keep using the word waterfall the way we do, it results in mixing chaotic project management with proper project management in predictive systems. The former may be annoying, while the latter is a strong support. As a result, the Agile community resists the idea of having project managers without giving it enough of a chance.
When we talk about project management, it’s all about facilitation and coordination, and predictive systems have experienced many different ways of achieving that. By recognizing predictive systems as a closely matched alternative to Agile, in the same family of structured systems (in contrast to chaos), and by being open to the ideas that are generated in this other family member, we can learn a lot of things that can be useful in our Agile projects. We shouldn’t miss this opportunity.
So, my suggestion is to stop using the vague “waterfall” word and to refer to other systems with more specific labels, to avoid confusion and force improvement.