Estimation is one of the simplest yes most frightening activities that software professionals face. So much of our angst and failure are caused by it.

What is an estimate?

People view estimates in different ways - Some like guesses some like commitments/deadlines.

  • Commitment
    • if you commit to a certain date you must deliver it by that date period. You have to honor it. Professionals don’t make commitments unless they know the y can achieve them. Commitment is about certainty.
  • An Estimate
    • An estimate is a guess. No promise or commitments. Unfortunately most software devs are terrible estimators. We often don’t understand the true nature of an estimate. An estimate is not a number but a distribution. When saying ‘My estimate for this task is three days’ we’re missing a key component - How likely are you to finish this task in three days, is it 30%?50%?
  • Implied commitments
    • To minimize uncertainty some people may ask for a commitment - which often is not possible to give. As professionals it is unprofessional to make that implied commitment without certainty and you should be as clear as possible on this so that managers can make appropriate plans.

PERT

One of the element of PERT is the way estimates are calculated, you have to provide three numbers:

  • O Optimistic Estimate - This number is widely optimistic
  • N Nominal estimate - The greatest chance of happening
  • P Pessimistic estimate - This number is widely pessimistic.

Given these three numbers we can describe the probability distribution

Estimating tasks

One of the most important estimation resource that you have are the people around you, they see things you don’t.

  • Wideband Delphi:
    • Simple strategy - People assemble, discuss a task, estimate the task and iterate the discussion until they reach an agreement.
  • Flying fingers:
    • One-task at a time they have a discussion, after this each participants gives an estimate by raising 0 to 5 fingers - If everyone agrees then they go to the next task, otherwise they discuss and repeat.
  • Planning Poker:
    • For each member of the estimation team deal a hand of cards with different numbers on them- Just like flying fingers members discuss, vote using the cards if everybody agrees they move on otherwise they keep discussing and repeat.
    • Affinity estimation:
      • All tasks are written on cards, the team members gather around it - Members at any time can move the card, they ought to go from the smallest task to the bigger task. The next steps is to draw a lines between the cards to represent buckets (days, weeks or points).
    • Trivariate estimates:
      • Those techniques are good for picking a single nominal estimate for a task.
    • The law of large numbers
      • If you break up a large task into many smaller tasks and estimate them independently the sum of the estimates will be more accurate than a single estimate of a larger task.

When professionals make commitments, they provide hard numbers, and then they make those numbers.

They do not make promises that they can’t keep, and they don’t make commitments that they aren’t sure they can meet.