The Day Agile Kicked Waterfall’s Butt!!!
Have you heard of Alexander The Great?
He was a Macedonian warrior king who, by the age of thirty, had conquered one of the largest empires in ancient history — stretching from the Ionian sea to the Himalayas’. Undefeated in battle, he is considered one of the most successful commanders of all time. In fact, till today top military academies throughout the world still teach his tactical exploits.
One of Alexander’s greatest battles was fought at Gaugamela, against the Persian king Darius III.
And although his army was outnumbered 2 to 1 by the Persians, Alexander kicked Darius’s butt all the way from Gaugamela to Arbela (modern day Iraq).
So how did Alexander win against such great odds?
The answer is simple…
Alexander adopted an agile approach — whilst Darius was Waterfall.
Thinking he had the advantage due to the large size of his army (assumptions), Darius committed his forces to a decisive win from the beginning.
However, Alexander took an incremental approach, constantly probing his enemy and adapting his strategy based on what he learnt from their responses (feedback mechanism).
Darius came to the battlefield with a structured plan of attack (up-front requirements gathering)
But Alexander knew the importance of being flexible — especially under rapidly changing circumstances. And he responded to change by not committing to a plan of attack until the right opportunity presented itself (phased requirements gathering and ‘last possible moment’).
Because Darius didn’t know his generals on a personal level, he didn’t have their — or his armies — full loyalty. Which explains why his army deserted the battlefield and Darius was eventually killed by one his own generals.
Alexander on the other hand took the time to know each of his generals on an individual basis. And as a result he was able to build his strategies around their individual strengths and weakness. Add to that the fact that he lead by example and empowered his generals to make decisions, Alexander inspired fierce loyalty amongst his troops — to the point they were prepared to fight to the death for him
Lastly, Darius relied heavily on a predefined signal systems (documentation) to communicate with his army.
However, understanding the importance of personal, clear communication channels — especially within volatile situations — Alexander’s communication system was also backed up by personalmessengers. Which is why he was able to quickly respond to the danger on the left flank that could have lost him his whole army and caused his victory to be short lived.
So there you have it – that’s how ‘Alexander The Great’ (Agile) kicked Darius’s (Waterfall) butt. And this victory against such great odds can teach us some useful lessons about how to improve the delivery of our software development projects.
1. Avoid committing too early — especially when you don’t have all the information you need. You’ll make better decisions if you wait till the last possible moment.
2. Collecting requirements upfront — and assuming they will never change over the duration of the software development project — can cost you dearly in terms of delayed delivery times, additional development costs and software that has little or no value to your customer.
3. It’s better to develop software incrementally. Because with each iteration we learn more. And the more you learn, the better you get.
4. Empowered team members make better technical decisions, are more productive and develop higher quality software.
5. Face to face communications are much more effective than documentation at eliminating ambiguity and ensuring everyone is working towards the same objectives.
Hope this helps.