Estimating: or how to explain your time before spending any at all
It always seems to happen. The budget creeps, time vanishes and finally there is justification while I try and explain where all the unexpected features came from.
I have heard it said that estimating is an art. What that really means is that it is a skill acquired with time and error. Picking yourself up after you fall and doing it again.
It only take a few times of underestimating your time before you start to realise the importance of time and how much you have. This is especially true when the time is paid, and the missing time comes from your pocket.
My last project went over time and blew the budget. It had been a project I had been working on in my mind for a long time. I over looked so much of what I needed and focused on what I wanted. The bells and whistles before the brass tacks.
Instead of being a joyful project it turned into managing my time on the time sheet. Constantly thinking about the time to complete tasks and how it effected what was required and the launch deadline. Managing my mind instead of the project.
While estimating is something I do not enjoy, I am learning that it brings a balance to project management. It helps me see where my time will be allocated, and informs the client the length of time required to complete a task.
Estimating can be a confine that can stops creativity on the fly and brings in a tough hard margin and limit of time to a project. Conversely, it forces you to think through the most important items before you begin, and allows the client to agree to the functionality.
Learning this, rather than having someone do it for you is important. It puts a value on the project, by confining all the great things to something achievable. It forces you to constrain all the stray bits. It teaches you to manage the most important factor in any project, your time.
This thing all things devours:
Birds, beasts, trees, flowers;
Gnaws iron, bites steel;
Grinds hard stones to meal;
Slays king, ruins town,
And beats high mountain down.
Like Bilbo Baggins we are all running low on the most important resource with a project. Time is scarce. Time is fleeting. It is disappearing. It is the most important thing to complete a project, for without it there is no project.
An estimate explains the use of time in accomplishing a project. It puts a value to the time you will spend, and while it costs some of this resource it is worth it in the comfort it bring the client showing you can handle the project before it is started.
Value to the Client
An estimate for a client is putting value to talk. A request for a job is nothing until there is a value against it. “That question has an answer that is worth $xx.xx, now how important is that to your business?”
It is not your job to make the client want the work, but to help them to understand what the request is going to cost them. It is their due diligence from that quote to decide if that idea will bring that much business advantage.
An estimate is a well thought out document that shows how many hours will go into a project. It makes the case that a block of work is required and is proved to be honest by the detail you go into. A good estimate covers two bases – good detail an enough detail.
Estimate on the time required to complete the project. Break each manageable block of work into a line item, and explain why each item gets its own line. To make it easy, and to break you away from the connection to the project, explain the functionality in way that is understandable for someone else to work on with only this document.
Looking at the project like this will show the scope of the project. Until you see it like this there could still be too many unexpected items appearing. These unexpected changes can potentially blow a project over budget. So going into good detail should catch these.
Of course digging deep is going to potentially take a massive amount of time. So the balance:
Unless you get project research money allocated most of this is un-billable hours – so why going into good detail gets better and more accurate with time, the catch is that infinite detail costs money.
So you need to be able to explain the steps, with good detail so you can put an hour value on the project in the least amount of time. You need to go until you feel comfortable in tackling the project with the time, or go into enough detail to feel comfortable.
Emotions can lead us to an outcomes before they actually happen. When you have a favourite client, or project, you can put more of a value on what it is worth to you instead of the time it can take. This makes the estimate jaded.
Take a step back. Think of someone else doing your work, and give them enough time to do an excellent job. In doing this you will explain things differently, and look at the code instead of remembering previous developments.
Some line items may be removed from the estimate provided to the client, this is okay, but they function within your organisation just as much as externally.
Expect that you will fail and misquote the first. Some will be closer than others. But estimating is a process as much as improving your code. Remember, it is always better to come in under budget than to go over it, so add a few hours if it makes you feel more comfortable.
Estimating may be a task that is despised, but in the end it serves you better and helps you clients make better decisions. Your service is better provided to your clients when you value your time.
There are many things to take into account when estimating, many of which I have not mentioned (I am still learning this). What you should remember is that “A good estimate takes enough time to give you enough time”.