This week will be all about slippage: five days and five posts to understand and eliminate slippage.
Providing accurate estimates is the single most important task in project planning. You win when you accurately predict when a task will be done - not when you come up with the lowest number.
When you are planning work, are two types of tasks: the ones that are known and understood, and the ones that are unknown. While estimating the latter is more difficult (but not impossible), accurately estimating the former should always be accurate. If that's not your experience, here is what you can do to improve:
1) Forget what you think the duration should be and what the client wants it to be
Our natural instinct is to give the answer that is expected - by the client and by ourselves. Unfortunately, how long we think this should take or how long the client wants it to take is irrelevant. Start the estimating process by flushing all your expectations. Be honest with your estimating: no one will reward you for estimating a low number, but everyone will remember you for being reliable. Create a reputation for being spot on.
2) Estimate all the work
The tendency is to only estimate the task itself, and to assume it will be right first time. What about all the other work: the research, the design, redoing the work a couple of times to get it right, the local testing, the integration, the global testing, the client review time, the rework time? What about time in meetings? Time to help others? Vacation and sick days?
Work isn't done in a vaccum: the context requires time too. All this is work that will need to be done and time that will be spent - if it isn't included in the estimates it's pure slippage.
3) Say when you can't
When you are estimating a task that you find difficult - say so. It's not a sign of weakness to say I don't know, I can't, I don't understand, I don't have time. You are not expected to know everything, but you are expected to communicate when you don't. Jorgen Vig Knudstorp, CEO of Lego, says it better than I do: "Blame is not for failure, blame is for failing to ask for help".
You can't hide your difficulties forever: they will be revealed when you don't deliver and then it will be too late to do anything about it. Don't let the team down: speak up when the work is assigned and work with them so your time is used in the best way possible.
4) Learn from your past work
This is an admin task that should be mandatory for every single person on a team. Measure the time from when the work is assigned to when it's approved; take note of how long you said it would take; and take note of how long it took you. Don't cheat: no one but you will see those numbers. Don't make excuses, they don't count: there will always be reasons for delivering late. You should know that, accept it, and include it in the estimates.
When you have the numbers, there are two ways to use them:
* Look for patterns and what they tell you. Are you always late for a specific type of task? Or with a specific client? Or just always late? Is the amount of slippage consistent? Use this data to improve your own estimates next time.
* Next time your client argues that a taks should take less time you'll have the data to back up your claim - it's very hard to argue against data that is well documented.
5) Trust your instincts
Estimating is predicting when a task will be done. Accurately predicting the time it will take means taking into account everything that could happen, what you can plan and what you can't, and your instincts are a valid source.
You should first base your estimates on actual data but if your instincts tell you something else listen to them: it's your experience speaking and that is as valuable as the data you collect.