In an odd conversation the other day, a friend proposed that since we aren’t good at estimating, that we shouldn’t bother to estimate at all. Instead, we should time box the activity and whatever gets done is what gets done. I agree that we’re often terrible at estimating, but I don’t think the alternative he was proposing was a good alternative.
When I say “I have $1000, can you build me a car?” one might naturally react by saying that’s impossible. In Agile, my friend proposed, we wouldn’t bother to figure out all the requirements (after all, there are hundreds if not thousands of features that might go into a car) and instead, we’d say “let’s get started and see where we get.”
Now, you might put together some stories and assign them story points, but you wouldn’t know much more than the relative size of those stories. And then you’d get to work and start developing features from those stories and you’d do that until the money ran out. In the end, you might have a car… or not. Hard to say, since we didn’t bother to even guess at the cost of a car.
Sure, that’s a silly example, but here’s a more realistic one. I’ve got $1,000,000 and I want you to port all our software from language X to language Y. We’ve never done it before, so we’re not really sure what it’ll take, so let’s get started. Problem is, if you run out of money having ported 50% of the code, you really haven’t finished the project. Nobody wants to spend a million to find out the work didn’t get done.
We place a lot of value on predictability. In the same way we hate it when we take our car to the mechanic and they give us an estimate and then blow it, we don’t like when we set aside a large chunk of money only to have it not cover our costs. For car repairs, at some point, you might decide (especially with an older car) that it isn’t worth continuing to put money into it. Sure, maybe $250 is OK, but $1000 is too much. Eventually there stops being a return on investment.
So, what’s a business to do if you say “hey, give me the money you have, and we’ll see what we can get done.” At least for me, I wouldn’t invest my money there. I’m willing to accept uncertainty, in fact I even like when my vet gives me a low/high estimate range for caring for my pet, but only within reason.
Certainly not “how much have you got to spend? Let’s see what we can do to your pet for that much.” What if the money runs out mid-surgery? Maybe I shouldn’t have embarked on the surgery in the first place.