Software development is rife with uncertainty. It’s common for a software project to be 100% over budget or schedule, and often both. This can only be tolerated when the return on the investment in software is expected to be enormous. Otherwise there is too large a chance that overruns will change a project from profitable to unprofitable.
Waterfall methods tried, with limited success, to suppress uncertainty. Agile methods respond to uncertainty rather than trying to eliminate it.
Eliminating uncertainty is not possible. Even if you could eliminate all uncertainty within your software development effort, you cannot eliminate changes in the world surrounding your software: market conditions, government regulations, technological landscape, etc. (Waterfall methods had their initial success on large defense projects in the early days of computing and were less subject to outside forces.)
Since we cannot eliminate uncertainty, we must above all acknowledge it, and when possible estimate it. Uncertainty won’t go away if we ignore it. By paying attention to uncertainty, we can plan ahead and mitigate it. We can also get better answers by asking more appropriate questions. For example, when we simply ask when a software project will be finished, we get a single date, very likely a wrong date. We can make more useful forecasts by incorporating uncertainty and looking at the distribution of possible completion dates.
It’s not enough to incorporate uncertainty in our understanding of each component of a software project. Software projects are systems with complex dependencies. You can’t forecast the time to complete a project by simply forecasting the time required to complete each component, as someone might do in a naive application of Kanban or Scrum . The time required to complete the whole is likely much longer than the sum of the times to complete the parts. Just as dark matter is believed to make up most of the mass of the universe, time spent waiting is the dark matter of a software project.
|“We often forget that software is developed by interactions of many people. Nothing can go wrong with that! By analyzing hundreds of projects, the measured hands-on time for software development work is 5 to 15% of the total work lead-time (time from commitment to delivery). Even if we were perfect at estimating the work effort and time, we would ignore 85% of the system time where items are waiting for specialist staff or testing for deployment. Agile and Lean methods attacks this 85%.” — Troy Magennis, Focused Objective
In partnership with Focused Objective, we can show you how to use powerful tools to forecast software projects, taking into account the uncertainty in each component as well as the network of dependencies between components. We can share with you our experience in helping other companies successfully manage software projects with realistic time and budget estimates.
Get help understanding and reducing the uncertainty in your software project.