The main difficulty with forecasting the future is that it hasn't yet happened. – James Burke
When I first heard about #NoEstimates, I thought it was not only provocative, it can also be damaging. The idea of working without estimates seems preposterous to many people. It did to me.
I mean, how can you plan anything without estimates?
How we use estimates
When I started my career as a software developer, there was a running joke in the company. For each level of management, we should multiply an estimation by 1.3. If a developer said a task will take 3 months, the team leader will “refine” the estimation for 5 months, and at the program level it was now even more. A joke, but not remote from what I did later as a manager.
Let’s first get this out of the way: modifying an estimate is down-right disrespectful. As a manager I think I know better than the people who are actually doing the work. Another thing that happens a lot is estimates turn to commitments, in the eyes of management, which the team now need to meet. This post is not about these abusive things, although they do exist.
Why did the estimation process work like that?
A couple of assumptions:
- Work is comprised of learning and development, and these are not linear, or sequential. Estimating the work is complex.
- Developers are an optimistic bunch. They don’t think about things going wrong.
- They under promise, so they can over deliver.
- They cannot foresee all surprises, and we have more experience, so we’ll introduce some buffers.
- When were they right on the estimates last time?
The results were task lengths in the project plan. So now we “know” the estimate is 6 months, instead of the original 3 months estimation.
Of course, we don’t know, and we’re aware of that. After all, we know that plans change over time. The difference is now we have more confidence about the estimate, so we can plan ahead with dependent work.
Why we need estimates
The idea of estimates is to provide enough confidence in the organization in order to make decisions about the future. To answer questions like:
- Do we have enough capacity to take on more work after the project?
- Should we do this project at all?
- When should marketing and sales be ready for the launch? What should the people do until then?
These are very good business questions. The problem is our track record: we’re horrible estimators (I point you to the last bullet). We don’t know much about the future. The whole process of massaging estimates so we can feel better about them, seems like we’re relying on a set of crystal balls. And we use these balls to make business decisions. There should be a better way.
So what are the alternatives?
That is the interesting question. Once we understand that estimates are just one way of making business decisions, and a crappy one at that, we can have an open discussion.
The alternative can be cost-of-delay. It could be empirical evidence to forecast against. It can be limited safe-to-fail experiments. It can be any combination or modification of these things, and It can be things we haven't discovered yet.
#NoEstimates is not really about estimates. It’s about making confident, rational, trust-worthy decisions.
I know what results estimates give. Let’s seek out better ones.