The Cone of Uncertainty

This is a perma-link reference resource intended to provide a quick and easily digestible summary.  If a picture is said to paint a thousand words, then interactive pictures must surely do even more.  This is not intended to introduce the full concept as a standalone article.

The Basic Concept

The cone of uncertainty is a graphic depiction of the increasing accuracy that is possible for estimates as the details of a project become more known over time. It is used to guide estimates and manage expectations of accuracy.  The term, coined by Steve McConnell, shows what any experienced software professional knows - at the beginning of any project we don’t know exactly how long a project is going to take.

Remember that the whole point of software estimation is to determine whether the project is even possible.

"

The primary purpose of software estimation is not to predict a project’s outcome; it is to determine whether a project’s targets are realistic enough to allow the project to be controlled to meet them.    "

—Steve McConnell, Software Estimation: Demystifying the Black Art

So what does this mean?

The diagram shows that estimates created at Initial Concept time can be inaccurate by a factor of 4x on the high side or 4x on the low side. The total range from high estimate to low estimate is 16x.

Image Credits: Construx.com

Deep Dive

But of course, nothing is as simple as it seems.  Whilst the Cone is an important concept for explaining this uncertainty in complex projects, the cone is actually the best case scenario. The Cone represents the error in estimates created by skilled estimators. It’s easily possible to do worse. According to the research, it isn’t possible to be more accurate; it’s only possible to be more lucky.

Research found that the accuracy of software estimates depend on the level of refinement of the software’s definition. The more refined the definition, the more accurate the estimate.  As Steve McConnell says, "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 itself."

Note: if the project is not well controlled, or if the estimators aren’t very skilled, estimates can fail to improve as shown below.  Then, the Cone is much wider, sometimes referred to as Cloud of Uncertainty, that persists to the end of the project. The issue may be that the estimates don’t converge, but the root cause is that the project itself doesn’t drive out enough variability to support more accurate estimates.

We discuss this here, in Setting Up for Success.

Image Credits: Construx.com