Are you familiar with the exploits 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’s considered one of the most successful commanders of all time. So much so, that top military academies throughout the world still teach his military tactics today.
One of Alexander’s greatest battles was fought at Gaugamela, against the Persian king Darius III.
And although his army was outnumbered two to one 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 larger size of his army (assumptions), Darius committed his forces to a decisive win from the beginning.
However, Alexander took an iterative and incremental approach, constantly probing his enemy and adapting his strategy based on what he learnt from their responses (feedback loop).
Darius came to the battlefield with a predetermined plan of attack (up-front requirements; static Gantt charts).
But Alexander knew the importance of being flexible — especially under rapidly changing circumstances. And he responded to change by not committing to a specific plan of attack until the right opportunity presented itself (just-in-time execution).
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 personal messengers. 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 and product 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 a development project — can cost you dearly in terms of delayed delivery times, additional development costs and an end deliverable that has little or no value to your customer.
3. It’s better to develop software, products and services incrementally. Because with each iteration we learn more. And the more we learn, the better we get.
4. Empowered teams make better decisions, are more productive and develop higher quality software/products.
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.
Do feel free to share your thoughts below;