All Geek to Me

April 19, 2008

Why Programmers Cannot Estimate

Filed under: Geek Stuff — britinla @ 2:44 pm

Ilegirl made a comment on my recent “Advice to Programmers” post that programmers should double their estimates. This is not, as Ammonyte, suggests an example of the Scotty principle where you deliberately under promise so you can be sure that you over deliver. The underlying problem is that programmers tend to make unrealistically optimistic estimates, leading them to over promise and under deliver. Doubling their estimates will not lead them into Scotty miracle delivery territory, but give them a fighting chance of delivering on time.

Why do programmers underestimate? Here are some thoughts on that subject

Software development is complex even a simple sounding problem may be far more involved than it appears at first glance; the iceberg principle. Programmers are making their estimates based on their first glance and thus estimate based on an incomplete understanding of what they are being asked to build.

Programmers are focused on the coding and do seem to assume that their code will be prefect and once it is compiled it will work, so they do not include enough time for testing and fixing.

There are very few programming environments in which the programmer can work for a full eight hours on an assigned project. They will get interrupted by co-workers with questions, or a production issue will drag them away. There is research to suggest that if a programmer is focused on a task it takes them fifteen minutes to regain that concentration. Four fifteen minute interruptions in day will therefore take two hours away from the main task.

I have never met a programmer who likes to do routine book-keeping; getting a coder to record their hours is a thankless task. This is understandable, a programmer wants to write software and not fill in forms. However, this aversion means that when a project is over they do not really know how long it took them to complete it. Having this knowledge would aid them in estimating more accurately in future.

This article is full of generalizations; obviously there are programmers who can estimate accurately. I have one who works for me now. He is the first and only one I have met.



  1. The Scotty Principle in action is when I get the estimate from my programmer, then triple it while secretly assigning a team of four programmers to complete the work.

    Comment by ilegirl — April 20, 2008 @ 12:24 am

  2. Clearly you need a piece of software that can track how long a programmer spends actually coding. It will need to be able to account for time spent thinking (and distinguish between time spent thinking about code and not about beer and pizza), so simply summing time spent typing code won’t be adequate.

    How long do you think this project will take?

    Comment by @mmonyte — April 20, 2008 @ 8:32 pm

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at

%d bloggers like this: