Modeling Uncertainty


a starting point for making increasingly more informed projections of actual requirements and established targets for subsystem performance. When actual performance information became available for the subsystems, we compared it to our assumptions and budget to identify problems and opportunities. As we substituted better and better data for the assumptions in our model, we were able to refine the target hardware configuration and reduce the uncertainty.

My evolution from prima donna (refusing to speculate about the future without all the facts) to senior system architect (able to support technical business decisions based upon incomplete and imperfect information) required that I learn to deal with uncertainty. Perfect prediction was impossible in this instance, but it was reasonable to ask for an educated guess. For this review, it was necessary to understand what level of confidence was "good enough" for the time being. If our exercise at making a preliminary prediction had suggested that we would require vastly more hardware than the project justified, it would have been critical to identify that problem early so we could either cancel the project, change the approach, or more closely examine the most challenging components.

Working with uncertainty means accepting that there are no facts about the future. Everything we think we know about the future is an assumption, a placeholder for information to come. For assumptions to be useful, they must be reasonable and credible--informed by the review and refinement of other subject matter experts. For those criteria to be met, the rationale and basis for assumptions must be documented. When more information becomes available--when "facts" start coming in--we can test and revise our assumptions and improve and update our models.

If you must make educated guesses about the future, don't let the uncertainty paralyze you. Instead do the following:

  • Develop a model to represent significant parts of the problem.
  • Make and document a set of assumptions about relevant factors in the model.
  • Review your model and assumptions with others to get their perspective on the problem, your model, and your assumptions. Be open to suggestions about revisions and refinements.
  • Make it clear to the "powers that be" that your model and projections are based upon assumptions. Set expectations about when you anticipate additional information to be available for revising and refining your
  • Use your model--do the math and show your work.
  • Revisit the model periodically to look for improvements and refinements in the model and your assumptions.

When you present your findings, you might want to discuss the answers to some of the following questions:

  • "This is how we imagine the future will be, based upon these assumptions. If the assumptions are wrong, our answer will be wrong. Do the assumptions seem reasonable to you?"
  • "We will have better information and be able to refine our assumptions and model on (a predicted date). Is that soon enough for you?"
  • "If you are uncomfortable with our model or assumptions, is there someone you trust who you would like to review it?"

The process of documenting your assumptions about the future and how they factor into your predictions, then reviewing them with the people who want the predictions, will not enable you to perfectly predict the future but does help make your projections credible. Reviewing the thought process behind your prediction communicates the current level of confidence and sets expectations about when better predictions will be available. Getting buy-in on the process helps everyone better manage the uncertainty of the future so that they can make more informed decisions. Isn't that what project management is all about?

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.