The Cone of Uncertainty represents uncertainty that is inherent even in well-run projects. Additional variability can arise from poorly run projects—that is, from avoidable project chaos.
Common examples of project chaos include the following:
Requirements that weren't investigated very well in the first place
Lack of end-user involvement in requirements validation
Poor designs that lead to numerous errors in the code
Poor coding practices that give rise to extensive bug fixing
Inexperienced personnel
Incomplete or unskilled project planning
Prima donna team members
Abandoning planning under pressure
Developer gold-plating
Lack of automated source code control
This is just a partial list of possible sources of chaos. For a more complete discussion, see Chapter 3, "Classic Mistakes," of my book Rapid Development (McConnell 1996) and on the Web at www.stevemcconnell.com/rdenum.htm.
These sources of chaos share two commonalities. The first is that each introduces variability that makes accurate estimation difficult. The second is that the best way to address each of these issues is not through estimation, but through better project control.
Tip #15 | Don't expect better estimation practices alone to provide more accurate estimates for chaotic projects. You can't accurately estimate an out-of-control process. As a first step, fixing the chaos is more important than improving the estimates. |