Ask HN: How do you effectively predict how long a task will take?
Often when dealt a task by a client/project manager it's followed with a request for how long it will take. Also often, I find answering this request a considerably more difficult problem than the engineering task itself, especially when the response is taken as gospel on pain of death. Over time I've realised that my inability to accurately predict how long a certain task will take is a weakness that I'd like some strategies for dealing with.
Personally, it stems from tasks in the past that have turned out to have details or foibles that make it considerably more involved than initially predicted, or finding a lack of required information once I've got stuck in.
8 comments
[ 890 ms ] story [ 2086 ms ] threadAnd the expectation that the future always involves change...this is information I am always missing. I think about my estimate on two time scales, wall clock time and calendar time. Clock time is the resources I will need to commit. Calendar time is the external dependencies.
But, all that said, the only way to get the experience for having intuition is by estimating.
And basically, your choice (and mine) is to come up with something that might be wrong after a long arduous process or come up with something that might be wrong quickly.
Quickly provides empirical feedback faster.
Good luck.
If you're working with humans you can overshoot, which will make you look great if you take less time than estimated, or just say you'll give an estimate once you've started the task, they should understand (Consider using: "How long? Let me look into it first", "How long? About $(your_bad_estimate)*1.5 minutes" or similar). And if they don't understand, consider asking why that estimate is so important in the first place.
Maybe the customer must approve jobs before they are executed, and the customers get an estimate billing based on your estimated time? A big estimate might scare them. Who knows?
I usually take my prediction, multiply the time by 2 and add another 1/4 of the time to it.
If it turns out to be faster, win-win for everyone. But usually, my guess is quite accurate that way.
For example, let’s say I’m working on an app and estimate task A as having a complexity of 5. Because I was the primary author of the app, I use a conversion factor of 2 hours/complexity unit, yielding a time estimate of 10 hours.
The idea here is to leverage the fact that engineers have a better grasp of complexity, while business stakeholders can only appreciate time.
Keep track of your estimates over time and you can adjust the conversion factor accordingly (higher, lower, or even using days instead of hours) for more accurate predictions going forward.