NoEstimates (is) An Unconventional Approach That Finally Solves The "Deliver On Time!" Problem
Let's deconstruct this conjecture.
- All project work operates in the presence of uncertainty.
- Epistemic uncertainty, in which there is a probability that something will happen in the future that will negatively or positively impact the project. This uncertainty can be reduced with expenditure of time and money, or with changes to the design, or changes to anything else impacting the project, which usually means spending money and taking time
- Aleatory uncertainty, where the naturally occurring underlying variance of the project's activities impacts the project. This uncertainty cannot be reduced. Margin is needed to protect the project from the negative impacts of this uncertainty.
- There are three basic entities on all projects
- Time - how long the project will take to produce the needed capabilities the customer is paying for. This can be an internal customer or an external customer.
- Cost - over that period of time, what will be the cost to those paying?
- Technical outcomes and their performance - what did we get for our money? This can be products, services, problems solved, items repaired, or any other tangible or intangible outcome from the passage of time and consumption of money.
- These three entities are connected
- Passage of time usually means spending more money.
- Adding Features usually means taking more time, which means spending more money.
- Removing Features usually means taking less time, which means spending more money.
The naive notion that there is an Iron Triangle between these three is just that - naive. The actual connections between these three elements is shown below. As well each of the connections and the behaviors of each entity operations in the presence of uncertainty, to the Iron turns into Springs.
The Fallacy
- Have sufficient schedule margin to cover the variances in time it takes to do the work, repair, or replace the outcomes, and any other work requiring the passage of time.
- Have sufficient Contingent Budget and Management Reserve to cover the cost variances from the naturally occurring cost behaviors, event-based impacts on cost, or cover things that go wrong with the Risk Cost coverage.
- Have sufficient Technical Performance Measures margin to cover the required performance measure of the Capabilities. For example throughput, we need enough margin in the delivered product to meet or exceed the customer's need without spending too much time or money to provide that margin.
Each of these entities is impacted by uncertainty - reducible or irreducible. They are random variables.
When we want we to make a decision in the presence of this uncertainty, using these random variables, we need to know about their behaviors, and we need to estimate what the outcome of that decision might be, how that outcome will impact the success of our work, and what residual uncertainty is left behind. These uncertainties create a risk to all three entities of the project.
You can't make decision in the presence of uncertainty without making estimates about those decisions.
It is a fallacy to say that you can deliver on time, every time - in the presence of uncertainty - without estimating.
Anyone telling you, you can, is willfully ignoring the principles of the Microeconomics of Decision making, Managerial Finance, the probability and statistics of the stochastic processes of software development projects, and the simple understanding the uncertainty creates risk, and unaddressed risk is going to come back and bite you on the ass, and you're going to be late, over budget, and your gadget isn't likely to work as needed
Risk Management is How Adults Manage Projects - Tim Lister
Manage risk, estimate, manage other people's money like an adult.