Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create an accurate hour estimate? [closed]

Tags:

  • What are your experiences regarding project planning and creating hour estimates for new projects?

  • What is the approach you are using, and why has or has it not worked for you?

  • Are there any best practices to take into account?

like image 944
Aron Rotteveel Avatar asked Nov 20 '08 15:11

Aron Rotteveel


2 Answers

Estimation Tasks

The principles that I try to use (I don't always get the opportunity) are:

  • Step-wise refinement
  • 3 point estimates
  • Risk analysis

Step-wise refinement

When estimating it's important to estimate at the right granularity and to continually break down and add tasks until you're confident in the estimates. Quite often, estimating highlights a lengthy, critical path task that may need more refinement and risk analysis.

Risk analysis

Trying to work out where risks lie in each task (are there lead times for something? is there a lack of knowledge? could a competitor beat you to it? etc. etc.) helps to determine your confidence in the estimates, which allows you to determine how to treat those estimates. Risk analysis also helps to determine if further step-wise refinement is required.

3-point estimates

Specifying the best, probable, and worst case estimates for each task (including design, development, testing, and bug-fixing) helps with risk analysis and planning. The estimates can be used to calculate the most likely duration to hit particular percentage success of that task. Together with information on other related tasks, and risk analysis, a project manager can factor the risk, and other known elements like system testing into the estimates to get a more reliable estimate.

Of course, the granularity of estimates is also important. There's no point in estimating in hours for most tasks. In software, days is usually best, but sometimes it could be weeks or months (such as if you are out-sourcing blocks of work). Choose a time granularity that makes sense for all the tasks in a project (I usually use days for the requirements capture and functional specification phases, and half-days thereafter as I learn more about the tasks and their sub-tasks).

Conclusion

All three of these items feed into each other, so quite often you have to refine each step a number of times. For example, you might have a stab at the requirments stage, then again during functional specification, and again during design specification.

Estimation is a learned skill; the more you do, the better you get. Risk analysis improves as you learn more about what you don't know, 3-point estimates improve as you learn more about what you do know, and stepwise refinement improves as you go through each step of a design process.

If you have the time, revisit your original estimates after you've completed a task and see how the actual time stacks up against your 3-point estimates and your project plan. If it differs, see where the time was lost or gained and try to learn what you can take from that for future projects.

Estimation should not be a daunting task - I always feel like I know more about my work after estimation than before.

like image 77
Jeff Yates Avatar answered Sep 17 '22 22:09

Jeff Yates


I highly recommend the book "Software Estimation: Demystifying the Black Art" by Steve McConnell. It really covers this question well.

like image 43
Brian Genisio Avatar answered Sep 20 '22 22:09

Brian Genisio