Estimating is part art, part science and a small amount of voodoo thrown in for good measure.
- The art of estimating The art part is to be able to look at a specification and to get 'within the ballpark' of what a job is going to cost you in time and hence roughly what it should cost.
- The science of estimating The science part is in the feedback loop between your past estimates and reality as reported by your time registration system. That way you can see if you tend to overestimate jobs (which means you are losing jobs to competitors), or underestimate jobs (which means that your customers will not be happy, or, alternatively that you find that you are losing money on jobs).
- The voodoo of estimating There is some voodoo in estimating as well. If nobody else wants a job and the spec is vague or incomplete there just might be an opportunity here. You might decide that you actually *can* crack this nut, even though everybody else has already given up. Your gut tells you it's doable, even if it's going to be hard. Every now and then you'll get into a situation like that. Give it a shot, but warn the customer up front that you reserve the right to return the job no questions asked if it turns out your hunch is wrong. And charge a premium! The reverse also happens, a job seems clear-cut, the spec looks ok, and still you have a feeling there is something not good about this. Trust your instinct, walk away, unless you're completely down and out and have to take any job. But in that case be extra careful.
Things that will help you in estimating your jobs:
First of all you have to start keeping time on what you do. Round it to half hours or quarters, more precise is useless and less precise is too coarse.
Set yourself a bunch of simple tasks and state up front how long they’ll take you. Write that down, then go do the tasks. It’s not a race, simply work at your normal speed.
Then compare with your initial guess. Do this for several more complicated tasks as well, and one or two that are a lot larger (say several days of work).
If you’re anywhere like me you’ll see a pattern emerge:
- It always takes longer
- the longer the task the bigger the factor that you were off
- some tasks were way off
Let’s start with the last one: The tasks that were way off based on your estimate. Probably you found halfway in that you needed to learn something. An the clock kept on ticking. This is called ‘training on the job’, and it’s not a very good thing to do when you’re consulting, especially not at hourly rates.
This time should be removed from the log, it’s still there but it is your time, not your customers time.
The second item, longer jobs do not take proportionally longer, but more than that is fairly logical. As the complexity of a job increases the number of chances for unforeseen interactions increases as well, this will cause you to underestimate more than with small jobs.
And it always takes longer anyway simply because when you estimate you have some kind of overconfident, idealistic view of how much work something is.
Now, the trick here is not to get the estimate down to the last dollars and cents. The trick is to get close enough in the ballpark that you get the job and you don’t get burned.
Based on your measured performance above you can start to figure in a multiplication factor dependent on the size of the job you have to make a bid on.
Keep it conservative, in the beginning it is safer to overestimate than to underestimate, so keep some room. Then, when you have more data points and more experience you can start to make sharper bids. Nobody is going to complain when you invoice for 80% of you bid price. But if you think you’re going to invoice 120% then you really are mistaken, people will simply not accept it (and it is very bad for your reputation as well).
If stuff is not your experience and you need to learn how to do something, sometimes it is negotiable to say that you need to spend some time to learn the required technology and your customer will have to re-imburse you for that time. The usual way to deal with this is to invoice that time at a discounted rate. Maybe you’ll lose the job because of being honest, but more often than not you’ll find that a customer will appreciate this honesty much more than someone trying to get away with not knowing their stuff and billing it anyway.
Keeping accurate time logs is essential to getting better at estimating, but so is making sure that both you and the customer are on EXACTLY the same page with respect to what it is that you will do.
I’d suggest you start out with smaller jobs, maximum one weeks work. Just enough to see how well you are able to estimate the amount of work that goes in to a job. Once you gain some confidence you can slowly increase the scope of the stuff you bid on. And as you have completed smaller jobs successfully and on time customers will have less reservations about hiring you for larger projects.
Even then, the ‘deliverables’ are very much a must, you simply can not make an offer for a job that has not been specified well.
If a customer can’t do that then make the specification itself a small job, to be invoiced separately. It can be quite a bit of work to get a job specified to the point where it can be estimated.