You sit there, irritation bubbling deep within as minute forty-five of the meeting ticks past on the clock in the corner of the office. Fight or flight is in a contest with your attention span as you struggle to keep an interested look on your face while they drone on. Real work could be done in this time. Maybe if you go to the bathroom you could sort of… fast forward the meeting. Panicked thinking continues for a bit until your awareness snaps back to the babble of words in the room.
“How long will it take you to do this?” the manager asks.
“A couple of days maybe?” You reply in turn. The manager nods and you take your escape. Little do you know that you have failed.
The project swerves out of control. Two days on the dot the manager is there expecting results. How? How did this happen again? It felt right! Two days is all you’d need to do such a simple project. It ended up taking a week.
The next meeting you say two weeks just to be sure. Everyone nods gravely, upset that something would take so long, but the work must be done. Two days later you sheepishly wander into the manager’s office with a completed project. He looks pleased but confused. The next meeting, he insists that you can do it in half the time. You and your fragile pride bowl ahead only to deliver late. The mystery!
This was my life until I started bugging the more experienced around me. I learned a lot from them and I ended up distilling it down into a few rules.
- There Is No Other Unit Than Hours
- Be honest.
- Get Granular.
- Promise a Range. Give a Deadline.
Why does someone want a time estimate? What are they going to do with this information? When working on a contract job it often feels like sticking a foot in a trap when a time estimate is given. Are they going to hold me to this? What if it goes wrong? After all, we are not fortune tellers. Unless the manager is extremely bad or you show yourself to be extremely lax in your duties, it is unlikely that a time estimate will be used against you.
At the end of the day the manager needs a time estimate because he needs to know when to move people and he needs to manage costs. For example, let’s say he asks for something he imagines to be simple. Suddenly you offer a time that’s far far more than he expects. He may immediately scratch that feature off the list completely. As an inexperienced engineer I used to take this as slight on my abilities. Surely if I were better I could do it faster, but he’s just making a cost judgement. He knows that engineering time costs money.
Likewise, maybe he has Jim from down the hall working on a mating feature. If you’re time is far off he may assign another engineer to help you or change Jim’s specification.
Most importantly a time estimate is there to protect you. It’s likely that you have been asked to do a task because you are an expert. You’ve done this before. You know how long it’s going to take. There is no way that you can explain to your boss all the intricacies of your particular task. Nor is there any need to burden them with that information. If a proper time estimate is given and you are known to be a person who delivers within the range promised then it is rare that you will ever be questioned in a hostile way about your progress.
There Is No Other Unit Than Hours
No engineering estimate should ever be calculated and given in anything other than hours.
We get paid in hours. We are billed in hours. We spend hours to complete a task. A day, a month, next week, a couple, a few, a bit, are all meaningless and terrible ways to communicate and calculate work time.
Once upon a time when I was new to all this I opened up Microsoft Outlook and checked my calendar. I had just learned the concept of estimating in hours and I was eager to put it to the test. I had a rough estimate of twenty hours and I was eager to tell my boss I could get the work done in three days. 8 hours of work a day is 24 hours, right? I would even have some buffer time.
Taking a serious look at my calendar I was horrified to discover that I had at best a mere five hours of time to actually sit and design on my best days. On a regular day meetings, lunches, other duties, and more would leave me with a mere three real hours of working time to do anything in. Admittedly this company loved to waste time with nonsense work, but that’s beside the point.
In the end my experience has been that most people working at their absolute limit can only extract four to six real hours of, “pencil actually on the paper and moving deliberately,” work out of the nine hours a day they spend at work. It’s just the way it works out. I ended up giving an estimate of the next Friday as being the most likely time I could deliver on the project if my schedule remained clear, but that I would give him a clearer estimate Monday depending on how the next week shaped up. He didn’t even blink an eye.
This leads nicely into the next section.
As a craftsman there is a certain desire to impress. There is a desire to be the best. The worst thing one can do when doing a time estimate is involve any of that in the equation. If you need three more engineers to complete the project and a year’s worth of hours to do it, there is zero benefit in saying you could do it yourself in six months, in a cave, with a box of scraps. If you only have four hours a day of actual working time, well… That’s what you’ve got.
Unless you’re working in a salt mine, you were hired because you are an expert who can give expert advice. The manager wants information and nothing else. Also, and this is a lesson I learned the hard way: If you need time to do the estimate ask for it. I would often blurt out an estimate to look in control. People would write it down, then I would fail to deliver on time.
Be honest about your abilities and what you need.
When I started working professionally I tended to want to estimate my projects as if I were hacking in my lab. “I’ll just read a bit then maybe buy a board. I dunno. I guess there’s some code out there already? If not I guess I can just write it.” The time didn’t really matter in my projects so I’d give estimates on how long I ,”felt,” the project would take.
Your goal is to get a minimum time and maximum time for every task within your project.
If you really want to deliver an accurate estimate the tasks must be broken down. Is there a library already? Okay, there is but it costs $1500 dollars. It will take me ten to twenty hours to write it, so the company comes out ahead if I do it fast and behind if I do it slow. Also, what about support costs down the road. Will I have to spend extra hours debugging because I did it myself? Questions like these should end in a rough list of nearly everything that it will take to do the project.
Also important. If you start to get fuzzy and you get the point where you can’t estimate the time in a granular way, communicate that. Tell them: “Hey, I can give you a real time estimate for this section of the work, but until I do it I can’t possibly give an accurate estimate of the next section of the work”. Most people are willing to work in sections. This is also extremely useful information and typically appreciated by everyone involved. If they insist you’re probably in for a bad time, so you should estimate the absolute worst case time and add some to that. Be honest.
Promise a Range. Give a Deadline.
So, you’ve estimated your project. You know it’s going to take a minimum of 30 hours and a maximum of 80 hours or work to complete. You’re a contractor so you work from home. You know you’ve got about 7 hours a day of work in you when everything is going absolutely great. That’s actual time spent actually producing something, not the just the time you tell your partner you’re “working”.
The company who’s contracting you would like it in three weeks. Luckily this is your only project. You do the math. Even if it goes horribly you still only need 11 and a half days to complete it. Assuming that a few of your days aren’t as productive as you’d like. you still have an additional 24.5 hours of time you could grab before the deadline. You won’t even have to touch weekends if you stay on top of it. It’s starting to look likely. It’s rare that everything goes wrong.
The best thing to do is to tell the company that you can meet their deadline, mentioning the hours it will take. You have plenty of room to move. They’ll be able to estimate the maximum amount of money you’ll cost them in hours. You can work stress free knowing that it’s unlikely you’ll miss the deadline. If you get sick in the middle of week three and lose four days you can instantly email them and ask for an extra few days or work a weekend if it’s necessary.
There are, of course, many schools of thought on project estimation. There have been volumes written on the subject. There are entire fortunes built on software to take even the smallest bite out of the process. However, being able to give a good estimate of how long something will take is an incredibly useful skill that can pass to all sections of life.
How long will it take to learn the piano? If it’s a minimum of half an hour a day you know you need to find three and a half hours a week. If your partner wants you to rearrange the furniture, mow the lawn, and visit the inlaws next Saturday, an hourly estimate can prepare them for disappointment far in advance.
How do you guys estimate your time? What are your tricks and how do you keep your clients happy. Looking forward to the comments.