Friday, January 4, 2008

Ice Storms, Power Companies, and Project Estimation

Rob, a coworker of mine tagged me to come up with an example and confirmation of Agile development principles in real life.

To be fair to the business world outside of software development, most of the Agile software principles existed in the "real world" in various forms long before they were expounded by Agile proponents. But it's nice when you do observe the real world confirming an agile principle you have worked to implement in a team software environment.

Recently, a massive ice storm knocked out power to a large portion of the mid-west. The resulting damage in my community caused power outages to over 50% of homes and businesses. If you have ever lost power for an extended time period in sub-freezing temperatures, you understand the importance of electric power for the necessities of life. And when that power is lost for multiple days, it becomes a really big deal.

Even though the situation was not humorous, I had to laugh out loud when I heard the power company's estimate for restoring power in our area: "We hope to restore power to this area in 2 to 10 days."

It wasn't a mocking laugh or a laugh of ridicule. I laughed at the brutal honesty of the project estimation. I laughed at some of my past software projects where we probably knew less about our project requirements than the power company, but gave a more feature-rigid and date-rigid estimate.

Every subsequent morning, the power company was on the radio giving their revised project estimates. 2 to 10 days became 6 to 8 days, the next morning it became 4 to 5 days, and the morning after it became 2 days. Since it was impossible to really know on the first day the extent of the work to be performed, the power company didn't provide a wild guess. They effectively worked in daily iterations, revising their estimate as they worked. Since electric power is so critical during cold weather, they didn't have the option to guess on day one, and find out 4 days later that it would take longer than expected. When it comes to electric power, there isn't any room for salesmanship, PR spin, or blatant bluffing.

Agile software development allows us to take the same measure-by-doing approach. Instead of spending large amounts of time designing and estimating at the beginning of a project (which often ends up being mostly a guess anyway), we can start working in short iterations and revising estimates as we progress. By the second or third iteration, there is enough real-world data to chart out a reasonable projection of when the whole project will be completed.

So, can the software world learn something from a utility company? Yes. Estimate by doing. And if it is important, there is no room for guessing, bluffing, or wishful thinking.