How many times has it happened that you had a perfect plan for a holiday or some event that you were organising and the plan fell flat owing to some scenario that you hadn’t anticipated? Well, we have all been there. German Field Marshall Helmuth von Moltke the Elder put this succintly – “No plan survives contact with the enemy”.
Perhaps you were able to recover in some of those snafus but, as would agree, it was because you improvised, you adapted to the situation, and reacted accordingly. Well, that is being Agile truly.
We have grown up thinking we need to plan for the future down to the smallest detail. But the reality is something entirely different. Yes, we need to plan. But not as much as we think and not as far in the future as we are led to believe. We need to plan better, not more.
This couldn’t be more true than software development. The Waterfall model of software development relied on heavy upfront planning that was documented even more heavily. Then the software teams were made to march a thin line that was their plan. But after all these years and a lot of frustrated clients and money poured down the drain, we have realised that Waterfall probably wasn’t the best way to go forward. This is why Agile software development model came into being. It includes various levels planning but each detailed appropriately and not focussed on having all details mentioned upfront.
You begin with a high level list of features duly prioritised (called the Product Backlog). Then a few items are picked from the top of the list (highest priority items) and details thrashed out. These detailed items (called User Stories) are estimated by the development team and then a few of them are selected to be completed within a short timebox (one to two weeks long) called the Sprint. The list of items to be worked within the Sprint is called the Sprint Backlog. During the Sprint, the team implements the features selected in the Sprint and at the end of the Sprint you have working software in accordance with your requirements. This process is performed iteratively over the product backlog and during the course of the development, you can release the working software to the market multiple times.
Effectively, we don’t plan the entire project in advance. We plan at a high level and then refine bits of the plan iteratively. This helps us incorporate ground realities in our plan as we go about refining it. Things change all the time and we make sure that we are in a position of reacting accordingly. Quoting the famous American General George S. Patton – “A good plan executed today is better than a perfect plan executed at some indefinite point in the future”.