There is an interesting article called “Software Estimates and the Parable of the Cave“. It starts out well. The cave parable is effective and clearly conveys the problem with estimating software work. However, there is a big section of the article called “Applying this Wisdom” which I think does a dis-service to everyone. Let’s look at this closely…
“Draw on your experience.” Okay, didn’t we just get through a parable that said that experience was inapplicable, or at best questionable? Okay, let’s take that as a given. So what can we do? Don’t estimate. Seriously.
“Expect the unexpected!” I love this one. This is like saying tell me what you don’t know that you don’t know! Or please tell me the price (on Dec. 20th, 2009) of the shares of the 20th (after today) startup to go public on the NASDAQ. The future is unpredictable. The farther out, the worse it is. So what can we do? Don’t estimate.
“Provide estimates that are ranges…” I’m not sure why anyone would want an estimate that is a range. Are you going to give me a money-back guarantee that you will deliver at the end of the range? Are you saying that if I through all the money and resources and intelligence at you you will be able to deliver at the low end of your range? Are you saying that you don’t know? So what can we do…(wait for it!)? … Don’t estimate.
“Make your estimates as fine-grained as possible”. Let’s take this one to the limit shall we? The finest grained estimate we can make is based on complete knowledge of every single tiny task needed in order to create the software… which is logically equivalent to writing the software and then telling me how long it actually took. Yes, this is getting a bit repetitive… so what can we do… (let’s hear it from the audience!!!). Don’t estimate.
“Use incremental and iterative processes”. Okay, I admit, I _like_ this one. But how does it relate to estimates exactly? Not exactly clear, but I suppose I have to admit, I have a way to do this in mind… if you must. (But it has absolutely nothing to do with what is recommended in “applying the wisdom” above. Oh… and Don’t estimate.
“Work on the riskiest part of the system first”. Jeez Louise! Let’s pretend I’m running a business. I tell you: “here’s all the stuff I need and want”. You tell me: “this part ‘A’ is the riskiest, I’m going to work on that first.” I say, “screw you! I want the most important thing first!” And you say…. what exactly? (Well, if the most important is also the riskiest, then actually I say “okay”.) And what does this have to do with estimating?
“Environment of trust.” I like this one too. But I don’t think it has anything to do with estimation except as a surface symptom (failure to meet estimates should _not_ lead to more work trying to get better at estimating). I think it has to do with truthfulness, quality and a few other things beyond the scope of this article…