On Estimating

Over the years, I've developed an estimating method that kind of works for me. It's quick and it's fast and it's accurate enough that I can use it for estimating jobs of a medium level of complexity. By this - I mean - jobs that take up to about 30 hours.

After 30 hours, all bets are off.


  1. Break your job into its constituent tasks. This needs to be to quite a fine level. If you think something's going to take more than two hours, break it up into subtasks. Repeat until everything you can see in front of you is broken up into tasks that take less than that amount of time.
  2. For each task, try and remember the last time you did something like it. Remember how long it took. Place that amount against the task. e.g. Hashing a password? It should take 15 minutes, but last time you did it, there was an error with the Crypto library and it took three hours to do. So mark that task as taking 3 hours.
  3. If you've never done this specific task before, triple it.
  4. If the task invokes an external dependency, double it.
  5. All tasks should be rounded up to the nearest 15 minute block.
  6. Add all the times together.
  7. Finally, double your estimate.