Project estimating: You want it when?
My boss used to give me projects. Lots of them. That was his specialty. It was pretty much the entire basis of our relationship. Him telling me what he wanted all day long. Delicious.
As a web site programmer, I pretty much had to “invent” a solution for every single thing he asked. No two tasks were ever exactly the same. The process was simple. Imagineer a solution, plan it, then do it making any necessary adjustments along the way.
Of course, the boss wanted to know up front exactly how long it would take. And that is where estimating came in.
Bosses love estimates. They may not understand the magic of what you do or how to do it themselves, but estimates are something they can understand. Then they can make “management decisions” based on what their “gut” tells them. Again, this is done without the luxury of actually knowing how you do what you do.
Let’s take a look at a typical example:
Boss: I want the web site to email customers a different email depending on if they order product A, B, or C.
Programmer: That’s easy enough. We’ll replace the standard order confirmation email with one based on what they order.
B: Great. How long will that take?
P: Unknown. It depends on several things. You need to give me a detailed project specification sheet (AKA “spec”). What will the emails say? What happens if a customer orders two or more of those products?
That’s usually where the process breaks down because, of course, the boss isn’t going to give you any of those damn things. He just wants to know how long it will take. Asking follow-up questions regarding your understanding of the task just makes you a pain in the ass.
Then, once you do give him an estimate, comes the inevitable follow-up question: What day will it be done?
P: It’ll take about an hour.
B: So you’ll have it done by Friday then?
P: That I cannot say.
B: You just said it will take one hour! That’s plenty of time to have it done by Friday!
Sure, but that means absolutely nothing about what day it will be done. For some reason, bosses seem to have a real problem grasping such a simple concept.
It works like this. You, the boss, control my entire day. You pull me off task to produce reports, work on other tasks, answer phone calls, drive downtown to pick up your mail, work the retail counter, ship packages, and attend bullshit staff meetings where you expound on motivational topics like we can all be fired, you make no money, and how you browbeat a poor elderly couple who run a hotel into accepting half their normal rate because times are hard. (True story.)
The math is simple and works like this: A one hour project (assuming that’s a valid estimate) will take three months if I’m given five minutes a week to work on it. Actually, probably longer, since there is overhead associated with switching on and off tasks so much.
A good analogy for illustrating “task switching overhead” is painting a wall. You have to get the color of paint needed, open it, set up your equipment and grab a step ladder.
Which method of painting do you think is more efficient?
- Paint an entire wall one color then move on to the next.
- Paint 5% of a wall one color, then switch to another wall in a different color, paint 5%, then return to the original wall. Repeat ad infinitum. (Add about 10 minutes of “switching” time each time you relocate.) Bingo! A one hour project now takes 10 hours.
For some reason, bosses always seem to think option #2 is the best one. Then, at the end of the project, they always demand to know, “What the hell took so long? What the hell is the problem?”
Indeed. The only problem was you, goddamn Bossholio.