How Should We Update Our Estimates?

Or “When Should We Update Our Estimates?”

One of the interesting things that happens when we estimate using Team based Story Point estimates is that old habits die hard. If, for whatever reason, we do the estimate and then follow it up with the work, if it turns out (typically) that there was a lot more work than originally estimated, then we have this tendency to want to go back and improve the estimate by revisiting the data. Many people feel like they should update the estimate to improve the data know that they have improved knowledge.

This is a mistake.

The reality is that no amount of additional planning would have resulted in a better estimate. In fact the evidence indicates otherwise; estimates get worse the more time you spend on it (mainly because you are building guesses on top of guesses). It is simply wrong to “blame” the estimate for the fact that there is now more work than expected. The only way you could have found this out was by doing the working, getting the feedback from the customers. (See Our Estimates are Terrible! for an example of this kind of thinking)

What this tells you is that you should not update a record of the estimate once you have started real work on it. That way an estimate stays an estimate, and has the same basis (and is good as) as any other estimate that we have in the system. Using this basis compare all the estimates, safe in the knowledge that they have the same status - “we haven't start working on this yet”.

There is nothing wrong with collecting information about how much effort something actually takes; just don't call that an “estimate” as it represents what “actual”ly happened.

What does this mean in a practical sense? Lets take a Story as a starting point. Associated with this Story should be a field which stores the “estimate”. The estimate is filled by the Team as a result of using their favorite estimation method. The “actual” field for the Story is currently “null”. The estimate can be refined while the Team is not doing the work associated with the Story. Perhaps a related piece of work provided additional data that can inform this work. Perhaps there was increased clarity associated with the acceptance criteria. Perhaps we invested in some enablement work that will make this work easier. Perhaps …. all these things might necessitate an update to the Story estimate.

Now the Team starts working the Story. Perhaps they committed to it during (Iteration) Planning. The Team is decomposing the work, determining who does what etc. At this point you should not update the “estimate” for this item any more. As you complete the work, you might update the “actual” field.

This kind of thinking applies the higher level structures (Epics / Features) as well. The basic rule is that you shouldn't update the estimate once you have “started work” on it so you can look at all the data in your (Portfolio / Program) backlog with a single understanding of the status of the work effort - its a guess!