Top 10 Estimation Best Practices
January 17, 2008
I have written a few posts now on estimation and so I thought it was time for a summary. Also, I am planning to create a series of one page best practice summaries / cheat-sheets for agile and this seemed like a good candidate.
(I am a real fan of one-pagers; there is special value in getting everything visible and presented on one page that brings unique scope comprehension and clarity. Toyota and other lean organizations make heavy use of A3 reports, a one page summary of an issue, its root causes, countermeasures, and verification steps to summarize problems and planned solutions - they are powerful tools.
Incidentally, when I first started work I had a wise and cantankerous project manager who was full of oxymoronic proverbs. One I remember was “If you cannot summarize it on only one page, you need to go off and learn more about it!” An astute paradox.)
Anyway, here’s the summary; if you want more explanation on any of the points, refer to my previous posts (Upfront Estimates, Estimation Techniques, Estimate Ranges) on agile estimation.
Top 10 Estimation Best Practices
1. Use more than one person – By engaging the team in the estimation process we gain the benefits of additional insights and consensus building. Additional people bring different perspectives to estimating and spot things individuals may miss. Also, the involvement in the process generates better consensus and commitment for the estimates being produced.
2. Use more than one approach – Just as one person is likely to miss perspectives of estimating so too are single approaches. Use multiple estimation approaches (comparison to similar projects, bottom up, user story points, etc) and look for convergence between multiple approaches to reinforce likely estimate ranges.
3. Agree on what “It” and “Done” means – make sure everyone is estimating in the same units (e.g. ideal days), have the same assumptions, and are based on standard developer ability/effort. When asking for estimates spell out what you are asking them to estimate. What does “Done” include? Coded, unit tested? How about integrated and system tested? What about refactoring contingencies? User meeting time?
4. Know when to stop – estimating an inherently unpredictable process (custom software development with evolving requirements) will never be an exact science. Balance enough effort against the diminishing returns and false accuracies of over analysis. Look for broad consensus between team members at a course grained level and then move on. It is better to save estimation time for periodic updates than over analyze.
5. Present estimates as a range – We call them “estimates” not “predictions” because they have a measure of uncertainty associated with them. Manage the expectation of project stakeholders and present them as a range of values. E.G. Between $90,000 and $120,000
6. Defend / explain estimate range probabilities – If stakeholders automatically latch onto the low end of an estimate range explain the low probability of achieving this and steer them to a more likely value. If you organization persistently fails to understand, present a range of likely values (e.g. around the 50% to 97% probability range)
7. Don’t reserve estimating for when you know least about the project – Estimation should not be reserved for the beginning of projects. Instead done throughout as we learn more about the emerging true requirements and ability of the team to build and evaluate software.
8. Be aware of common estimation omissions – Consult lists of common estimating omissions (such as Capers Jones’) and ensure these items are taken into account. Look back at retrospective notes for things that did not go so well, and tasks that were missed or ran late – make sure we include enough time for these.
9. Embrace reality early – As the project progresses, it is tempting to think development will get faster and faster now all the technical problems have been overcome. However don’t under estimate the load of maintaining and refactoring a growing code based. Especially if the system is now live; support, maintenance, test harness updates, and refactoring can quickly erode the velocity improvements anticipated, so use the real velocity numbers.
10. Review, Revisit, Remove head from sand, Repeat – Our first estimates will likely be our worst. Don’t leave it there; review the project velocities to see how fast we are really going. Revisit the estimates armed with the real velocities to determine likely end dates. Embrace the reality you see, “The map is not the territory”, reprioritize and repeat the estimation process often to adapt and iterate to the most accurate estimates.
This is also available as an easy to print one page summary .PDF document here.
Hardly a top 10 of Agile estimation techniques. This would make a good list for all/any frameworks.
Go ahead and re-label the post "Top 10 Estimation Best Practices."
Posted by: Craig Brown | January 18, 2008 at 04:10 AM
Thanks, that is a good point. I have re-titled the post.
Posted by: Mike Griffiths | January 18, 2008 at 07:07 AM
I think that these 10 estimation of practices make a good way to work together with other people and a way to improve the business. Working together and agreeing with each other, show's what the atmosphere is like in the business.
Posted by: 709129 | April 03, 2008 at 07:28 AM
I recently had a create conversation with Phil Armour on estimation for my podcast (Software Process and Measurement Cast - www.spamcast.net). One of the major points was that the concepts of estimation and planning are often confused (very true early in a project). The focus on planning early in a project can lead to a narcotic of false precision therefore leading people to expect the date or cost of an initial estimate.
Posted by: Tom Cagley | April 17, 2008 at 03:47 PM
Agreed. On SW projects estimates are at best today's collective speculation of most likely outcome. These views should be written in quick fading ink, treated with caution, and revisited often.
Thanks for reading and your comment.
Posted by: Mike Griffiths | April 18, 2008 at 07:22 AM
I find that your post covers in brief all that we need to know/to do – to arrive at a good estimate. I gave recommended this to my friends and colleagues in my organization.
Posted by: JR | August 29, 2008 at 01:35 PM