Sunday, October 23rd, 2016
Estimating and planning are two difficult tasks. Software development consists of making thousands of decisions about a lot of feature-related issues. Uncertainty in a software estimate results from uncertainty in how the decisions will be resolved. As we make a greater percentage of those decisions, we reduce the estimation uncertainty,
The Cone of Uncertainty shows how estimates become more accurate as a project progresses. It describes the evolution of the amount of uncertainty during a project.
At the beginning of a project, comparatively little is known about the product to develop, so estimates are subject to large uncertainty. During this phase, a schedule estimate is typically as far off as 60% to 160%, that is, a project expected to take 20 weeks could take anywhere from 12 to 32 weeks.
As more research and development is done, more information is learned about the project, and the uncertainty then tends to decrease.
The Cone represents the best-case accuracy that is possible to have in software estimates at different points in a project. It’s easily possible to do worse. It isn’t possible to be more accurate; it’s only possible to be more lucky.
Meaningful commitments are not possible in the early, wide part of the Cone. Effective organizations delay their commitments until they have done the work to force the Cone to narrow (about 30% of the way in).
Summing-up: The reason the estimate contains variability is that the software project itself contains variability. The only way to reduce the variability in the estimate is to reduce the variability in the project. The Cone narrows only as we make good decisions that reduce variability. The accuracy of an estimate depends on how much we have reduce the variability in the project.