Ron Jeffries 09/01/1999

We can't know how long it will take to do something we have never done. Does this mean that task estimation is fruitless? Repeated estimation and tracking results in improving our ability to estimate. Try these simple steps yourself and see what happens.

When you estimate a task, think to yourself, “How long would it take me to implement this, with my partner, if we just sat down at the machine and did it?” What you’re trying to get in touch with is your “gut feel” on the amount of actual work time it’ll take to design, code and test the task.

Task Tracking:

As you work on the task, keep track of the time you spend actually doing the task. If you’re way over your estimate, you probably need to get help or drop something else you’re signed up for.

Load Factor:

When each task is finished, record the total amount of time you spent actually doing the task.

When the iteration is finished, add up all the time that you spent doing all your tasks.

Divide the number of days you were present during the iteration by the time spent doing your tasks. This is your [personal] Load Factor.

Improving Your Estimates:

If your estimates were perfect, your task estimate would exactly equal the time you actually tracked. This probably won’t happen consistently: if it does, please get in touch with me right away and explain how you do it.

For each of your tasks, take a couple of minutes to reflect on your original estimate and your actual performance. See whether you can explain the difference: you’re looking for discoveries about how long it takes you to implement things:

  • Oh! I forgot how hard it is to set up and test those DB2 calls!
  • Oh! I didn’t realize I’d have so much trouble converting those values to EBCDIC!

There’s no need to do anything formal, just reflect and see if you want to make a resolution like “Remember that data conversions are harder than I think”. The reflection will automatically improve your estimates for next time.

What to Include, What to Exclude:

The most important thing is to be consistent: if you consider the time for a CRC session in your estimate, then include it in your tracking. It’s best, however, to include in the estimate things that really are development, and exclude things that are more like administration or group activities.

And if the entire group is going to use a single load factor, it’s best if everyone includes and excludes the same things in their estimates and tracking. Just talk around the group from time to time. Share what you do and what you learn.

Estimate and track tasks that you own. Do not estimate or track time on tasks that belong to someone else. Your work with others is part of the load factor, not part of your estimates.