Understanding Estimation Uncertainty
Software development consists of making literally thousands of decisions about how the software will function. Uncertainty in a software estimate results from uncertainty in how the decisions will be resolved. As you make a greater percentage of those decisions, you reduce the estimation uncertainty.
The Cone of Uncertainty (below) shows how estimates become more accurate as a project progresses. The horizontal axis contains common project milestones and the vertical axis contains the degree of error that has been found in estimates created by skilled estimators at various points in the project.
As you can see from the graph, estimates created very early in the project are subject to a high degree of error. Estimates created at Initial Concept have a total range from high estimate to low estimate of 4x divided by 0.25x, or 16x.
Estimation accuracy improves rapidly for the first 30% of the project improving from ±4x to ±1.25x. This is because the milestones shown tend to be front-loaded into the project’s schedule.
The more refined the project definition, the more accurate the estimate. The reason the estimate contains variability is that the software project itself contains variability.
The only way to reduce variability in the estimate is to reduce the variability in the project. The picture below shows what happens when the project does not focus on reducing variability – the uncertainty is not a Cone, but rather a Cloud that persists to the end of the project.
The issue is not really that the estimates do not converge, the issues is that the project itself does not converge – that is, it does not drive out enough variability to support more accurate estimates.
The Cone narrows only as you make decisions that eliminate variability. If a project is not well controlled or well estimated, you can end up with a Could of Uncertainty (above) that contains even more estimation error than that represented by the cone.
How Can I Get An Accurate Estimate?
The key to getting an accurate estimate is to remove most of the design uncertainty before attempting to create an estimate. In order to ensure an accurate estimate we strongly recommend our design service.
We bill for time and materials and do not accept fixed price projects, but are always happy to estimate.
- McConnell, Steve. "Chapter 4 - Where Does Estimation Error Come From?" Software Estimation: Demystifying the Black Art. Redmond, WA: Microsoft, 2006. Print.
- McConnell, Steve. "The Cone of Uncertainty." Construx Software. Web. 16 Dec. 2010.
- Wiegers, Karl Eugene. "Chapter 1 - The Essential Software Requirement." Software Requirements. Redmond, WA: Microsoft, 2003. Print.