Estimate Refinement

16.4 Estimate Refinement

When you miss a project milestone, there is a question about how to recalibrate the schedule. Suppose that you have a 6-month schedule. You planned to meet your first milestone in 4 weeks, but it actually took 6 weeks. Should you:

  • Assume you can make up the lost two weeks later in the schedule?

  • Add the two weeks to the total schedule?

  • Multiply the whole schedule by the magnitude of the slip, in this case by 50 percent?

The most common approach is option #1. The reasoning usually goes like this: "Requirements took a little longer than we expected, but now they're solid, so we're bound to save time later. We'll make up the shortfall during coding and testing." But a 1991 survey of more than 300 projects found that projects hardly ever make up lost time—they tend to get further behind (van Genuchten 1991). Option #1 is seldom the best choice.

Option #2 assumes that the first milestone took two weeks longer than it should have but that the rest of the project will take the originally estimated amount of time. The Achilles' heel of option #2 is that estimation errors tend to be inaccurate for systemic reasons that pervade the whole project. It's unlikely that the whole estimate is accurate, except for the part that you've had real experience with. With rare exception, the correct response to actual results that diverge from estimated results is option #3.

Changing the estimate after missing or beating a milestone isn't the only option, of course. You can cut features, spend some of your project's risk buffer, or perform some combination of adjustments. You might also decide to delay and get more data by monitoring how you do meeting the next milestone. But if you're still off by 50 percent in meeting the next milestone, your corrective actions won't have as much time to work as they would have had when you first detected the estimation error.

Tip #74 

When you reestimate in response to a missed deadline, base the new estimate on the project's actual progress, not on the project's planned progress.

 Python   SQL   Java   php   Perl 
 game development   web development   internet   *nix   graphics   hardware 
 telecommunications   C++ 
 Flash   Active Directory   Windows