Software Estimation and the Cone of Uncertainty
It is notoriously difficult to estimate how long something will take to do. Take, for example, travel. A car journey to London from Brighton should be easy to estimate based on the distance divided by a reasonable average speed. But what is a reasonable average speed? Traffic should also be considered if the estimate is to be accurate and, for the same reason, roadworks. There are other considerations that would affect the estimate but what is obvious from this small set is that it is not possible to guarantee an estimate’s accuracy at this stage.
If we take the example further, and look at how such an estimate would change over the duration of the journey, we can see that the only time the estimate can be guaranteed as 100% accurate is once the journey is complete – when the estimate is an actual.
The situation is no different in software development and the accuracy of the estimation of software tasks also increases over time. This change in accuracy over time often referred to as the ‘Cone of Uncertainty’.
The Cone of Uncertainty shows how an estimate will start with a high degree of uncertainty – either over-estimated or under-estimated – which then improves over time as more is known about the task(s). The diagram shows several common stages within a project and shows how accuracy will be increased as the project progresses.
If, therefore, it is not possible to guarantee the accuracy of an estimate, then another approach is required.
Continue reading



