Imagine we wanted to estimate how long it would take to drive to the airport. You might see that it’s 50km to the airport and that your car can drive at 100km/hour. Therefore it will take 30 minutes, right?

Ok, so we probably don’t have a single straight line so we’ll take into account that there may be a lower speed limit for part of that trip and that we may have to stop once or twice on the way. Taking those factors into account, we estimate that it will take 43 minutes. That sounds good enough so we can now leave home exactly 43 minutes before we need to be at the airport.

This overly simplistic thinking sounds crazy when we’re talking about driving and yet it’s exactly how we tend to do estimates for stories in a software project. We look at the general level of effort and some complexity and we assume nothing else matters.

We intuitively realize that to calculate our driving time, it’s not enough to know how long it would take under perfect conditions, we also have to consider what will be the likely conditions at that time. If we ask Google Maps how long it will take, it considers historical data like traffic patterns at other similar times in the past. It might consider weather patterns. It might take into account any accidents that have been reported. The key is that it takes many things into account that have nothing to do with the actual distance or speed limits.

The same applies to the work we do. If we want to know how long something will take to do, we have to consider all the factors, not just expected effort and complexity. We have to consider interruptions and how much work is in progress and what skills the team has available, and a slew of other factors, and this is notoriously hard to do.

The good news is that our future is likely very similar to our past so we can use past historical data to begin to predict what’s going to happen in the future, and that’s a big part of what Google Maps does. In the case of predicting our software development, we can use one of the flavours of probabilistic forecasting such as a monte carlo simulation or reference class forecasting.

The key point I’m trying to make is that estimates are notoriously inaccurate and are time consuming to produce. Probabilistic forecasts, however, are both accurate and in most cases, easy to put together.

If you’re trying to determine when we’ll be done and you’re still relying on estimates, it’s time to ask why. Probablistic forecasting is more accurate and less effort and it’s time to learn how to do that.