The Fibonacci sequence and the cone of uncertainty are two concepts that keep recurring in agile development. They target the heart of agile estimation techniques. In this article, you will learn why this is the case, where both concepts come from, and why the Fibonacci sequence ideally represents the uncertainty.
The Cone of Uncertainty
In 1958, the American Association of Cost Engineers released a standard estimate classification system to be used in construction and engineering of the chemical industry. Here, uncertainty ranges were introduced to cost estimations. Then, in 1981 Barry Boehm adopted this mechanism for software engineering in his book “Software Engineering Economics”. Another 16 years later, in 1997 Steve McConnell coined the phrase “Cone of Uncertainty” in his book “Software Project Survival Guide”.
The cone of uncertainty expresses a simple fact. The further an event lies in the future, the less we know about it. As a result, our estimates of this event are inaccurate, blurry, or even incorrect. The closer we get to an event, the more we learn about it. This enables us to make better predictions and assumptions about this event. If we are very close to an event, there is almost no doubt about what will happen. For example, in an hour, in a minute or in the next second. Ultimately, any uncertainty has disappeared after an event has occurred. We now know everything about it. Well, we may not know everything personally, but the event is history and cannot be changed.
The Cone of Uncertainty in Hurricane Forecasts
This approach is also used to describe the possible effects of hurricanes. While they are moving across the Atlantic it is not yet clear where they will eventually make their landfall.
The picture shows the cone of uncertainty for hurricane Dorian from the hurricane season 2019. As can be seen, the possible corridor of the hurricane widens the further it is from the current location of the hurricane. This is due to the uncertainty regarding the weather influences on the future path of the hurricane. (In reality, the hurricane did not cross Florida, but turned north. It passed the entire east coast of the United States and did not stop until it reached Canada).
Cost Estimation in Software Engineering
This uncertainty can also be observed in software engineering. When developers are asked to estimate the delivery costs for certain requirements, this often works only to a limited extent. Because, the further the engineers are away from actually implementing these requirements, the more uncertain and inaccurate their estimates will be. They just don’t know the details and issues related to the specific implementation yet. Interestingly, the above authors all found the more or less the same uncertainty factors regarding the cost estimates.
The greater the time lag between a developers estimation and the actual time of implementation, the greater the uncertainty and the risks. This requires finding an estimation model that takes this into account accordingly. Therefore, an approach that maps the cone of uncertainty is highly desirable.
A linear Estimation Approach
Let us first try a linear estimation approach. We should all be aware of this from surveys. “On a scale of 1 to 10, how happy are you with / how good are you / how much do you like … and so on”.
The picture shows the representation of a linear scale against the cone of uncertainty. The linear scale certainly forms something like a cone. However, this does not fit the cone of uncertainty well enough to be regarded as an estimation approach that is worthwhile.
The T-Shirt Size Method
Another common approach is the estimation of t-shirt sizes (S / M / L / XL). Let’s see how those t-shirt sizes match the Cone of Uncertainty.
As it turns out, they do not form a cone. Just as some T-shirts don’t fit their wearer, the T-shirt sizes don’t fit the cone of uncertainty. In fact, they don’t even produce a real cone. As can be seen, T-shirts are all (more or less) the same size.
The Fibonacci Seqeuence
Anyone who has ever participated in Planning Poker knows the playing cards used in these events. These cards show the numbers of the Fibonacci sequence. This sequence was postulated by Leonardo da Pisa, called Fibonacci. It results when each number is the sum of its two predecessors (starting with 0 and 1).
This estimation technique works very well for Scrum teams and is the most widely used estimation method. The key question, however, is why this is a good method.
Thee Fibonacci-Sequence and the Cone of Uncertainty
Now let’s take a look at how the Fibonacci sequence can be plotted against the cone of uncertainty. Is it able to cover the risk and inaccurate assumptions for distant future events?
As can be seen, the Fibonacci sequence actually covers the cone of uncertainty very well. The adjusted numbers used during planning poker are slightly different from the cone. Nevertheless, they are very well suited to depict the risk and the uncertainty.
There is another interesting aspect that emerges from these representations. A user story or requirement that is estimated at 13, 20 or even 40 points is not yet ready for implementation. This is the time when decisions about product design and architecture are to be made. On the way to realization and implementation, however, these requirements have to be further refined. Only then will enough be known about them so that they can be implemented with little risk.
The Fibonacci series is known to agilists as the main tool for agile estimation in planning poker. It works so well because its numbers perfectly map the cone of uncertainty. This makes it possible to grasp the risk and the lack of knowledge in the early stages of development. The closer we get to implementation and the requirements are refined, the clearer things become. Ultimately, more is learned, risk and uncertainty are reduced, and more reliable assumptions can be made.