As I was driving home last night from work, I thought of another analogy on why the Agile process works so well.
Trip to California
I thought back to my trip to California and how I went about planning and taking the trip. I planned the trip really at four levels:
1) Starting and Ending Points – Where was I starting from and where was I trying to get to?
2) Route – What major roads would I take?
3) Stops – Where would I stop along the way for rest, meals and recharging?
4) Detailed Directions – How to I get to routes, stops, and the end point.
When I thought about how I planned and took the trip, I confirmed the end point first. I chose the end point based upon what I wanted from a relaxing trip. Next I reviewed the possible routes and confirmed the routes very early on. These routes were chosen based upon some different criteria or requirements; speed, scenery, landmarks, and others. When it came to the stops, I did something interesting. I planned out the potential stops based on the distance travelled but only reserved the stops for the next day. (and I really only reserved meal stops two hours in advance) I figured that things may change on the trip and I may make better or worse time. No sense booking hotel rooms too early. Last responsible moment right? And then finally for the detailed directions, I again planned the potential directions at a high level, but only confirmed detailed directions for the next day. No sense about worrying when to turn left in Palm Desert when I am in Idaho right?
Looking back, I see that the road trip models an Agile project very well:
1) Starting and Ending Points – Business Value – what am I trying to achieve?
2) Route – Solution Architecture
3) Stops – Iterations/Features
4) Detailed Directions – User Stories
I can’t think of taking a trip any other way? Why would I spend time detailing and confirming the directions to a pancake house in Boise when I’m at my front door? It also saved a huge amount of rework as I consulted local highway authorities at the start of each day and avoided roads I had planned to take. Since I was travelling in iterations, there were no hotels rooms and reservations to cancel.
And then I made one really neat observation. At the end of every day I reviewed the map and route I travelled as compared to what I planned. I guess these were my first retrospectives. Once this was complete I planned my next day’s travel.
I really like this analogy and I think I’ll continue using it. 🙂