Traditional project forecasts assume we can know everything about a project before we get started. Agilists know better. With the Monte Carlo technique, Agile teams can understand the uncertainty in their delivery schedule, not sweep it under the rug.
I recently wrote about how to use the Monte Carlo technique to create a project forecast. In that post, I walked through the steps involved in creating a forecast, and how to make sense of the results. In short: where a conventional forecast claims “the project will be done on X date,” Monte Carlo forecasts tell you how likely a project is to be complete on any date. This time, I’d like to explain a bit about why this approach is particularly well-suited for Agile teams.
The fundamental shift in approach from traditional waterfall development to Agile is in how the two relate to uncertainty. Waterfall approaches work overtime trying to eliminate uncertainty. Through exhaustive up-front analysis, teams and project managers aim to resolve all of a project’s unknowns before the first line of code is ever written. They believe that a well-defined problem lends itself to a well-defined plan, which can then be executed like clockwork. From this perspective, a conventional project forecast makes sense: if we know precisely what we need to do, we should know precisely how long it will take.
Of course, life is never so predictable. Agile approaches acknowledge that uncertainty can never be eliminated, so we should instead learn to make it work for us. The line from the Agile Manifesto that “we have come to value … responding to change over following a plan” is an expression of this concept: we will inevitably learn more about our work as we go, and when we do, we should be ready and willing to change our approach to it.
Conventional forecasts, which give us only a single date, are ill-suited to this way of working. Often, they require an estimate for each of the items in the product backlog. Such estimation can take a long time, and is rarely accurate. Other times, forecasts are based on the actually observed delivery times for past work items. That’s an improvement, but these are usually averaged before being projected forward, steamrolling out the uncertainty. Without a sense of the likelihood that a forecast will be met, it’s hard for us to incorporate what we learn into our plans.
Monte Carlo forecasts preserve uncertainty and highlight it in the results, showing teams a range of possible options. Teams can tell at a glance what the odds are of delivering a given set of features by a given date. They can quickly assess the impact of changing requirements or added dependencies. And they do this with only the empirically observed delivery rate — no up-front estimation required.
Uncertainty in a project forecast can make some people uncomfortable, but it shouldn’t — it’s a common feature of the predictions we encounter in everyday life. Weather forecasts, for example, don’t pretend to tell us that it will or won’t rain today, only how likely it is to rain. This lets us tailor our response to our specific goals and risk tolerance: I might skip watering the lawn, but still take an umbrella to work, just in case.
Similarly, when teams see a Monte Carlo project forecast with a range of possible outcomes, it can trigger rich conversations about next steps: backup plans, go/no-go decisions, and ways the team can improve their confidence as they continue developing. A team might decide to delay launching a publicity campaign for their product, for instance, while still kicking off internal security evaluations and quality control processes. It’s these conversations, which come from tackling uncertainty head-on, that give a team more confidence in their future.
With an agile team, the flow of work is crucial. We want to move work...
A To-Do List is the backbone of each program/effort/project. It doesn’t matter if you use...