20 April 2012

Estimating Effort

A few years ago, a former manager of mine taught me a valuable lesson about estimating the time it will take to complete a task in order to best meet expectations. Having done a significant amount of estimation recently, it brought the thought to the forefront of my mind.

The tl;dr version is: **Guess how long it will take and add a bit**.

*Here comes the science bit … .*

Let’s say that we’re asked to work out how long it will take to implement a feature on the project we’re working on. As an expert in the problem domain, we come up with the estimate that it will take 12 hours to complete. That’s just an estimate, so it follows that it will likely take a bit less, or a bit more time. What we have is something akin to a normal distribution of the time it will take to complete the task. Maybe something like this:

The problem is, if you tell your customer that it will take 12 hours to complete, that actually means that there’s a **50% chance you’ll fail to deliver**. Yes, you heard me, there’s a 50% chance that you will not be finished when the clock ticks over to 12 hours. That’s because half the area under the graph is to the right of 12 hours. In the following graph, the probability that you’ll succeed to meet an estimate of 12 hours is shown highlighted in pink:

**Don’t set yourself up for failure like this**. In this particular graph, the standard deviation of the curve is 1.5, but you will likely have a better feel of how accurate your estimates tend to be and can adjust your working accordingly. Now, in a normal distribution, around 95% of the area under the graph lies to the left of a point two standard deviations to the right of the mean. So, that’s 12 hours + 2 * 1.5 hours = 15 hours. So, in other words, if you think it will take 12 hours, giving your customer an estimate of 15 hours means you’re about 95% likely to meet, or exceed, that expectation. The graph becomes:

No-one wants a failure rate of 50%, but 5% … not so bad.