|
|
|
|
|
by colinmorelli
1181 days ago
|
|
Estimates are about relative comparison, not specific accuracy. If you tell me one item will take a day and another will take 3 months, you can be wrong by several multiples and the information is still useful. It’s less that I now have a specific endpoint, but rather I have a target (or multiple targets) at which I can decide if we’re on track and, if not, how I may want to change previously made prioritization choices. If you tell me a day, then 5 days later if it’s still not done I may not rip you for being wrong but I may decide it’s time to pull the plug on that initiative since it no longer meets the criteria under which we agreed to do it. I’m all ears for another proposal, but “just keep building stuff with no regard for how long any of it takes” is not much of a strategy and doesn’t reflect the way that decisions have to get made in the real world with limited resources. |
|
Also and I cannot stress this enough, if you can make any estimates at all you're playing on easy mode. If the stuff you're programming isn't entirely rote boilerplate then you cannot estimate anything, ever, because your error rate will be measured in orders of magnitude not multiples.
Classic scenario: "how long will task X take?" ... "hmm well there's an open source library that claims to do X here, looks pretty easy to use, so maybe two days?". Some time later: "why is X taking 2 months and not 2 days?" ... "it turned out the library has some non obvious architectural limits we can't fix and which kill performance for our use case, so we have to write our own from scratch".
That sort of thing - you thought you could rely on another component and then you can't - can happen at any time, to anyone, and renders all estimates based on the assumed viability of that component meaningless. But you're always building on third party work. If you have absolute confidence in all your dependencies it, again, means you are doing repetitive work that isn't much different from your last task. Such works exists, I guess a lot of frontend dev falls into that category, but it's also highly susceptible to being automated away by better frameworks or AI.
>> it doesn’t reflect the way that decisions have to get made in the real world with limited resources.
My experience was the opposite actually, the big successful companies do exactly that. They may cancel projects if they seem to be no hopers, but they don't try and estimate up front how much a project will take because they don't think in terms of projects at all. If something is important, it gets staffed until it either stops being important or the team is beaten, at which point it gets unstaffed. If progress isn't fast enough they add more headcount. Everything is thought of in terms of relative resource flows, not timed Gantt charts.