Making Better Estimates

A friend asked me on the spur-of-the-moment to give a short talk on estimating for his team-lead meeting. They were facing the somewhat daunting task of estimating and planning phase three of a large enterprise software adoption project.

Trying to provide help to another team made me reflect on this question: Why is estimation so hard, and so disliked by technical staff?

I’ll be making a series of posts on what we’ve learned at Atomic about how to improve estimates and the estimation process.

Why is estimation hard and universally unloved? For one thing, it’s a discouraging problem: ambiguous, fuzzy, imprecise, full of unknown factors, risky, consequential. You never have all the information you want. You worry about your second order ignorance (what you don’t know, you don’t know).

On the other hand, it’s not like we have a choice about tackling this thorny problem. The business needs to synchronize other decisions with the work we do: they have to plan sales and marketing, to budget, do return analyses, schedule resources, etc. And we certainly have selfish reasons to participate and do this well: missing a schedule commitment or overrunning a budget should injure our professional pride. It can also result in pressure to work beyond our sustainable pace and make personal sacrifices to our jobs.

When it comes to effective estimation, we should remember Voltaire’s caution about perfection being the enemy of the good.

Happily, there are some simple techniques we’ve learned to significantly increase our effectiveness and accuracy on this important work. I decided to organize my impromptu talk around the shortcomings of a typical, un-enlightened estimation effort.

Here’s what I’ve seen is pretty typical when a team makes a genuine effort to estimate, but isn’t familiar with some of the techniques I’m going to describe. Naive estimates are usually:

  1. made on very big things,
  2. constructed by the manager or team-lead only,
  3. not data-driven,
  4. based on little or no concrete investigation,
  5. expressed in absolute values of time,
  6. expressed to a false level of significance,
  7. created from single point estimates,
  8. independent of the calendar,
  9. independent of risks or assumptions.

I’ll be making future posts that address how to improve each of these aspects of the estimation process. I’ll fill in the hyperlinks above as I post each section.