I recently stumbled upon the following post on reddit:
Let me try to explain it in the simplest possible terms:
Waterfall* is about preventing surprises.
Agile is about dealing with surprises.
The first approach believes that most surprises can be prevented. The second approach believes that most surprises can’t be prevented. You must deal with surprises as you discover them and you can’t analyze them away.
Which approach is most suitable all depends on the kind of work you’re doing. If you have few surprises, you don’t need Agile. If you have many surprises, you either need more expertise and/or an Agile approach.
What makes it difficult is that incompetence can also result in preventable surprises but the very fact you’re incompetent also makes it hard to make judgement calls about the best approach to use.
Agile is not better than Waterfall, or vice versa, just like slippers are not better than sneakers, or a spoon is better than a fork, or the spork is better than both.
If you’re on the beach I’d rather have slippers, if you’re giving a lecture in front a few hundred people I’d rather wear sneakers.
The biggest problem with an Agile way of working is that if we try to prevent sucking at predicting, we will guarantee to suck at adapting.
Our leaders frequently mistake surprises as incompetence. Depending on the nature of the work they might not be preventable.
And if we try to prevent those surprises we cannot prevent, we will actually have even more surprises because we make wrong assumptions and close doors too early that cause even more surprises down the line.
In statistics this is called over-fitting, where the line perfectly follows the noise.
If there are many surprises, focus on early failure. As counter-intuitive as it sounds, that means taking small and simple steps.
The key thing is that they must be steps that take you closer to your destination. Magnificent plans easily fool us into believing that we’re getting closer to our destination.
Start with humble, anti-fragile plans that become more confident as you do and learn, not over-confident and fragile plans that are obliterated by reality.
Your plans suck because yo’re trying to make them great. Assume they suck, take into account reversibility and preserve optionality so you have a fighting chance to make them great.
*Adding an asterisk here because the Waterfall model was mistakenly drawn from the 1970 paper by Winston Walker Royce. I’m referring to how it’s currently viewed, not to how might have been intended.