The Cone of Uncertainty
I first encountered the phrase “cone of uncertainty” in the mid 1980’s while reading Barry Boehm’s book, Software Engineering Economics (1981). Using a traditional software project context, the “cone of uncertainty” model showed that the amount of uncertainty in a software project is greatest at the beginning, ultimately converging to zero (0) at project end. In his book, Boehm reveals the magnitude of the uncertainty through research showing that estimates provided at project start are generally off by a factor of four (4). That’s right, a factor of four… and you thought your estimates were bad!
This “cone of uncertainty” made sense in a traditional project context. That is, if you’re assuming that the scope of what is needed can be determined and fixed upfront. But, we have learned that software isn’t actually like that. Let me explain.
How many times have you built exactly what the customer asked for only to hear on delivery that despite the product being what was asked for, it doesn’t meet the customer’s need? The cone of uncertainty described above is premised on the customer being right in their initial ask. Once you deliver what they asked for, you’re done. But what if they’re not right? Pause for a moment and think… in the case of a new product, has the customer ever known exactly what was needed before it was built? Is it even reasonable to expect them to know?
What I’m suggesting is that it is not estimation and our inability to accurately estimate that is the issue. In fact, our focus on estimates and estimation have distracted us from what is more important — that is, building the right thing.
The Cone of Possibilities
If we’ve never built this exact product before, we have no hard data proving that it is the right fit for the customer need. Before something is built, the idea of the thing to be built is simply a value hypothesis. We won’t know if it’s right until the product is built and in use by the customer. The sooner we build something and start generating feedback, the sooner we will have data on whether or not what we are building is right, and, if it’s not, how to change it so that it is more likely to be right.
Building software is analogous to building a new product. Building a new product is a journey from the known to the unknown. Instead of a cone starting wide and narrowing towards a point, building a new product is more like a cone starting at a point and widening out to a myriad of possibilities. A more appropriate model to describe the product evolution is a hurricane forecast cone. In the picture below, “X” marks the spot where the hurricane is now. That spot, plus where the hurricane has been in the past is what is known. Where it is going is uncertain. We can model a likely path based on current information, but our ability to accurately predict beyond the immediate future is limited. And the farther we try to predict the more uncertainty we encounter. Beyond a certain point, it’s not even worth predicting.
For a new product, we always have a current state of the product — what it is currently — even if that state is that it doesn’t yet exist! That current state is what is known. We won’t know what the next iteration of the product will be until it is actually built. Any number of unexpected things might happen in the interim. For example, the customer changes their mind, the infrastructure on which a new feature depends turns out not to support the feature, a key team member departs, a new law or regulation limits or blocks the deployment of the feature, and so on.
Hurricane forecast models are updated frequently based on new data to improve our ability to react and prepare for the effects of the hurricane. The potential value in saving lives and property and minimizing damage to infrastructure warrants the investment in keeping the model current and useful.
Optimizing for Maximizing Customer Value
A product backlog represents a product’s potential future state. Like a hurricane forecast model, the product backlog represents possibilities. The actual track of the product is known only after the fact. The product owner’s decisions in product backlog content and order influence future product direction. With maximizing customer value as the primary optimization goal, the things that might influence the product owner’s decisions in reordering the product backlog and changing its content can be as complex as the factors influencing a hurricane’s direction.
Just like the hurricane forecast model, the product forecast model, the product backlog, must be updated frequently. Interestingly, the myriad possibilities of the future backlog also means that there is no upper bound to customer value creation. The main part of the product owner’s job is to manage the backlog for this purpose. Unlike in a project, the goal is not to be done, but rather to maximize value to the customer. If we are to focus on building the right thing, the more appropriate model then is an open-ended cone, rather than a closed one.
Have you considered your future product potential, what influences its direction, how to effectively forecast, model, and communicate its possibilities?
Did you know?
In 1973, Barry Boehm shocked the computer industry by predicting that software would outrun hardware costs.