—Applying the cone of uncertainty to software estimates.I have been re-reading Mike Cohn's book "Agile Estimating and Planning" in an effort to deepen my understanding of Agile practices for estimating software. The first chapter, "The Purpose of Planning" introduces the cone of uncertainty to discuss software estimates and provide data on the accuracy of estimates over the various phases of a project.
An important--and difficult--concept is that The Cone of Uncertainty represents the best-case accuracy that is possible to have in software estimates at different points in a project. It is easily possible to do worse. It isn't possible to be more accurate; it's only possible to be more lucky.Best case estimates are created by expert estimators. Worse case estimates are not considered. Furthermore, you must be diligent in improving and reassessing your estimates otherwise your cone of uncertainty becomes a cloud. The cloud of uncertainty is characterized as that notion of being 99% of the way through a project and having been there for a long time.
If you’re working on a project that does a full development cycle each iteration—that is, requirements definition through release—then you’ll go through a miniature Cone on each iteration. Before you do the requirements work for the iteration, you’ll be at the “Approved Product Definition” part of the Cone, subject to 4x variability from high to low estimates. With short iterations (less than a month), you can move from “Approved Product Definition” to “Requirements Complete” and “User Interface Design Complete” in a few days, reducing your variability from 4x to 1.6x. If your schedule is fixed, the 1.6x variability will apply to the specific features you can deliver in the time available rather than to the effort or schedule.You have to go through a full development cycle for each iteration. Doing so can reduce estimate variability from 4x to 1.6x. For a fixed schedule that 1.6x variability applies to features that can be delivered in the time available rather than effort or schedule.