Why is Estimating so Hard?

Uncle Bob suggested a small software estimation exercise in a recent blog post, Why is Estimating So Hard?

My best-case, nominal, and worst-case estimates were x, 2x, and 4x, respectively. My actual time spent was 3.4x, and while the final code worked I wasn’t real happy with it.

I had never thought before about the distinction between how long it takes to do something and how long it takes to describe how to do something. Uncle Bob uses the example of tying shoes – takes a few seconds to do, but I’ve heard of college communication classes being centered around how to describe how to do it. Everyone failed that assignment.

The accounting world would have other similar examples. How long does it take to reconcile a checkbook, assuming no major discrepancies? Compare that with how long it would take to write a step-by-step procedure describing how to reconcile a checkbook — one that could be used by someone who didn’t have any familiarity with checkbooks.

In some ways, that’s what computer programming is: writing detailed, step-by-step procedures for a machine — and this machine has absolutely zero intelligence on its own — no problem solving skills, no deductive capabilities and no intuition.

This entry was posted in Estimating, Programming. Bookmark the permalink.
  • Jeremy Martinson

    I’ve been thinking about this exact same situation! How does one strike a balance (!) between a reasonable estimate that the client will agree to and one that is in-line with what will “really” happen once the project kicks off?

    • Jason Pettys

      I’m with you – definitely more questions than answers in this area. It’s a big riddle that’s especially poignant for consulting shops. (It seems that businesses with their own development staff are very tolerant to scope ambiguity for internal projects.) Without spending a ton of analysis money to define the problem, one really doesn’t know how big the project will be. Yet the business needs a fixed number, but they’re very sensitive to the analysis time (money) required to identify scope.nnLike you said, it’s a difficult balance of risk management. Build in too much buffer and your price is too high. Build in not enough and you risk of losing your shirt. If you don’t do enough analysis up front your uncertainly is too high; do too much and, again, the price is too high.nnIt’s like tight-rope walking on a unicycle while being chased by ninjas. And the ninjas are on fire. 🙂