All Blog Posts

The Cone of Uncertainty in Software Development

Cone of Uncertainty Banner

Developing custom software can be risky—for our clients and for us.

For the client, risk isn’t just about the money invested to improve their business, it’s also about the cost of NOT investing in those improvements. While the latter may be less obvious and harder to quantify, it is just as real and potentially more expensive than the hard costs involved.

For us, risk comes in the form of things like unforeseen roadblocks, fuzzy expectations, and using new technologies to solve big problems.

This is why everything we do is focused on reducing risk as much as possible for everyone involved.

Uncertainty = Risk

Risk is typically associated with uncertainty—and there is plenty of that in custom software development. We solve problems for our clients by developing software unique to their needs. Chances are, what we’re building hasn’t been built before, at least not in the same way or to solve the same problem. So, there is no existing blueprint. We create one as we go. This is where the notion of the cone of uncertainty comes into play.

The Cone of Uncertainty

The cone of uncertainty is a concept applied in project management, especially as it relates to software projects. (It’s also used in hurricane forecasting, but that’s a whole different story.) As you can see below, it graphically depicts increasing knowledge, decreasing risk, and narrowing estimates as the project moves forward.

Cone of Uncertainty Graphic

At the beginning of a project, we know very little about what the end product will actually be. Clients come to us with a business problem or opportunity, and sometimes a vision of the solution. However, at the beginning of a project, we don’t know precisely what needs to be built—even if we think we do—so we can’t pinpoint a precise cost to build it. That’s why at the start of a project, estimates come in the form of ranges, depicted on the left side of the cone of uncertainty graphic above. If we gave clients an exact number at the beginning of the project, we’d be wrong and we’d be adding risk instead of taking it away. That’s not helpful for anyone.

When we give a range, it’s not likely that the project will end up right smack in the middle of it. It could be at the upper end, near the lower end (though that’s rare), or the cone (and, consequently, the range) could even expand if must-have functionality is added throughout the project. This is why we never say a project will cost an exact amount. Providing an exact dollar-number estimate is really risky for both us and our clients because we know things change. To get the best result, things should change as we gain more knowledge about the problem and the solution.

The Cone of Uncertainty in Practice

We spend the first part of the project defining what should be built—identifying and prioritizing the most important features and functionality. We call this the Analysis Phase and the whole purpose of it is to reduce risk—the risk of building a feature your users don’t need and won’t use, the risk of investing more than the value of the project to your business, or the risk of something not working as expected.

Every project is different, but some common ways we reduce risk in the analysis phase are learning your processes and your business, doing user interviews, drafting user personas, doing technical proofs of concept, creating prototypes, and evaluating new ideas for the value they add.

As the project progresses, we piece together what the optimal solution looks like—and it continually changes and adapts as we learn more and more. We learn more about the business goals tied to the project, what are “must have” vs. “nice to have” features, and what’s technologically feasible (and at what cost). Everything we learn reduces risk and helps us zero in on the estimated budget.

Even though the concept is simple in theory, the cone of uncertainty does lead to questions. The one we hear most is, “When will I know more?” Fortunately, the answer is that you’ll know more each and every time we meet.

The thing is, we don’t want to give the client information that sounds too good, or too bad. This is what can happen when we try to answer a question for which we don’t have a good answer…yet. The reality is, sometimes we just don’t know. As we learn more, however, we can look ahead with more certainty and give clients the meaningful information they need to make important decisions about their business.

We’re not psychics, but we do know things will change. We work to help everyone involved know what to expect as we progress through estimates and priorities toward the best solution for our clients.

We hope this helps you understand more about how we work to reduce risk over the course of our projects. If you want to know more, reach out!