This post is from Sergio Romano, Assembla's product leader and skilled technical lead. He's currently deep into the process of building an advanced set of portfolio and ticketing features. Here he takes some time to recommend "iterative planning".
I originally got the idea for this blog article when Santiago Ceria, a professor from my university who also happens to be responsible for process and quality improvement in a big outsourcing company in Argentina, made a bold remark to our class that "Estimation is a REQUIRED step in EVERY project plan". I respected Professor Ceria, but I couldn't agree with him less.
Estimation in Today's World
Software engineering is a young discipline and thus it is heavily influenced by the project management "fashions of the day". You see people jumping between Waterfall, RUP, Scrum, XP or whatever is hot at the moment. Despite the great diversity in these approaches to software development, one can extract some nearly universal principles by threading a middle path between them.
I believe that ESTIMATORS have swung the pendulum too far in one direction and have taken estimation to a point where it is counter-productive. Luckily, there are guys like Andy, our CEO (check his posts about estimation and other things you should avoid), the 37 Signals founders and Kanban gurus who are starting to move pendulum back in the opposite direction.
I see two reasons why estimation is so hyped right now.
Reason 1 - Clients & the Illusion of Control
The first is that clients always ask for a detailed timeline. However, what they actually want is commitment. This carries a lot of weight because when big projects are undertaken, they are generally paid for with someone else's money.
Mostly, they want to trust that you will finish. I may be an idealist, but can't we build trust without a schedule that is managed with a stopwatch? Let's look at an analagous example, do you vote for a presidential candidate because of their timeline or because of the solution they propose to fix a problem? Trust comes from successful incremental releases.
Reason 2 - More detailed plans
The second reason that estimation is so hyped is that estimators often provide a more detailed plan. But the real question is: "Is it always better to have a more detailed plan?"
Let's look at 3 simple examples - each more detailed than the last
1) John will do task A and then he will do task B
2) John will do task A in approximately 2 hours and, after finishing it, he will do task B in aproximately 3 hours.
3) John, who will probably be wearing his favorite yellow shirt, will do task A in aproximately 2 hours and, after finishing it, he will do task B in aproximately 3 hours, but only after taking a 45 minute lunch break.
It's clear from #3 that more detailed plans aren't always better.
On the other hand, the level of detail in plan 2 may seem more reasonable than plan 1. Of course, it depends on the precision of those estimates and the amount of time it takes you to make them. If it took you one day to figure out that it should take John 5 hours to complete his tasks, I bet you would have preferred that he just got started.
Will the more detailed plan make things worse?
I will raise the ante of this discussion, by asking whether detailed estimation will even cause you screw up your project.
Many people will grudgingly admit that initial estimates are often wrong by up to a factor of 4. This lack of precision, whether it is in the form of overestimation or underestimation, is sure to cause problem such as: incorrect decisions, Parkinson's law, less chance of success, etc.
And, if you believe this, we are not just wasting the time we spent estimating but we are actually causing problems in the project itself.Of course, the counter argument is that estimating up front will give you more confidence and control at the beginning of a project. But, is that really the case?
A lot of people think that if you have a very detailed plan you will have more control of your project. I believe that a detailed plan ties your future to your past: You may find yourself saying, "Sure, this is the best way to go, the plan that we created a year ago says so and we haven't had any problems following it so far". That may be the case, but have you consider the new competitors that have sprung up or the changing economic conditions?
The Solution: Iterative Plans
I believe that not only should development of a product be iterative, but also the plan for development of a product as well. This is especially true if you are designing your own products where you have to be very careful not to invest more than is needed.
I think we need stronger theories about iterative plans. Do you want some tips? Check out previous posts from Andy about how we do our work.
An iterative plan is a great choice for an iterative development methodology with client participation (ie: agile). A very detailed initial plan goes against the benefits of a iterative product development. It may be controversial, but I think that minimizing estimation actually minimize the risk of the project.