Why Developers Underestimate: One Reason That Will Change the Way You See Projects Forever
I, like many developers and tech consultants, am a chronic underestimator. When I make an estimate, I do so believing that the estimate encompasses the effort necessary for me to accomplish each and every goal for that project.
And I’m wrong, nearly every time.
People have a completely skewed perception of time. Checkout this excerpt from a Huffington Post article from last year.
This vs That’s initial research is in line with previous research into time estimation, which has revealed that our ability to accurately estimate time is influenced by our emotional state, how hungry we are, how tired we are, whether our eyes are open or closed, what we are doing, among many other factors.
Aside from the fact that people in general are terrible time estimators, it’s also my opinion that estimating a multi-stage project all at once is about as useful as guessing who will win March Madness at the beginning of the bracket. It’s not a good idea to put your money on that bet.
Here’s one of the biggest reasons why we estimate improperly.
Our perception of effort and knowledge are different from our perception of implementation.
How long would it take you to make 100 sandwiches?
How easy is it to make a sandwich? Certainly not all that hard. You’ve done it a million times, so it’s not too difficult. Five minutes on a good day, 10 minutes tops.
So, how long does it take to make 100 sandwiches?
I asked my wife this question, and she estimated an hour and a half. Seems fair to me - probably about what I would have guessed as well.
Would you immediately think to guess that it would take 500 minutes (8.3 hours)? You probably think that you’d have a system - a way of solving common problems over and over by that point. 100 sandwiches shouldn’t take nearly 8 hours, considering how easy sandwich-making is. You’d have a killer sandwich assembly line.
But even if your amazing sandwich assembly line was world class and doubled your efficiency from 5 minutes to 2.5 minutes, you’re still going to finish sandwich 100 at the 250-minute mark.
This is the cognitive problem we face in estimating time for development. We see projects that we have the technical ability to solve without having to acquire any new knowledge, and therefore we have a tendency to underestimate. Things we already know how to do and systems we fully understand seem like they should take much less time to implement than they actually take.
Stop thinking about how easy a project is, and start thinking about how long it takes you to make one sandwich.
Written by Jonathan Cutrell, Engineering Manager at Guild Education and podcast host at Developer Tea. You can follow him on Twitter at @jcutrell.