When we hear all the difficulties, misuse, abuse, and inabilities for making software development estimates, the real question is what does the business think of this?
Good question. When our children were young - 6 or 7 - they asked the big question once they started receiving an allowance for household chores.
What's the reason we have money? The best answer I could think of was money provides the vehcile for the exchange of value. I pay you for doing something around the house which is of value to me or your mother. That money you receive can then be used to buy something of value for you. You can exchange your money for that valued thing.
Money is the carrier of value between two parties in the transaction.
The basis of a successful business is the exchange of cost (money) for value. Either internally for building a product or externally for providing a service to an outside firm. Knowledge of both the cost and the value produced in exchange for that cost are needed by the decision makers. As well both cost and the value are random variables, drawn from a population of values depending on the uncertainties that produce their values. There are two kinds of uncertanty - reducible (epistemic) - a probabilistic value and irreducible (aleatory) - a statistical process.
In practice this value and the cost to achieve this value operate in the presence of uncertainty in non-trivial situations. If I see a bicycle helmet I want, (notice I didn't say need, since I have a perfectly good and nice helmet) I can look at the price tag and determine if my old helmet needs to be replaced. That is is the value of the new helmet of sufficient value to me that I'm willing to pay the cost and absorb the cost of the old helmet?
The price tag for the Helmet is clear. I might be able to get a discount. The value of the helmet is up to me. As a minimum the value is equal to the cost. This is the basis of Earned Value Management. But the value of the helmet may be immeasurable if it saves me from a brain trauma if I were to crash. I've never crashed or been hit on my road bike. A few small spills on the mountain bike.
The Business Notion of Value in Exchange for Cost
In the business of software development the exchange process takes place in the presence of uncertainty, there are no price tags attached to the development process in the way the helmet does. Uncertainty about the value - beyond the cost. Uncertainty about the cost. Uncertainty about the risks, and all the other random variables associated with the project work.
When making decisions in the presence of these uncertainties, we can consider the opportunity cost. This is the loss of potential gain from other alternatives when one alternative is chosen. If I choose one path for one cost over another path of another cost, what's the lost opportunity? This decision making process is the basis of Microeconomics as it is applied to Software Development.
Opportunity costs are fundamental costs in economics, and are used in computing cost benefit analysis of a project. Such costs, however, are not recorded in the account books but are recognized in decision making by computing the cash outlays and their resulting profit or loss.
So let's ask a simple question...
How can we make those opportunity cost decisions in the presence of the uncertainty of their specific value? Meaning of the "value" of the Value - an actual number of Dead Presidents (dollars) is a random variable, dependent on a variety of things - can we make a decision in the presence of this uncertainty? This uncertainty is around the precision and accuracy of our knowledge of this "value."
The answer is we need to estimate the value of the number of Dead Presidents for both the cost of the value and the value of the value. Both sides of the equation are needed. This means we need to know something about the value returned in exchange for our cost to acquire that value. A common - and simple - way to measure that is through the Return on Investment (ROI). This investment in this case is the cost we've assigned to the expected value to be returned. The formula is
ROI = (Value - Cost) / Cost
The two variables in most instances are random variables. If we're Investing in a new helmet like a really nice Specialized S-works, we can make the trade offs - the opportunity costs, between the $250.00 for the helmet and the potential immeasurable value of saving my head on the mountain bike, while riding with our collegiate racer son. The current helmet will likely do that job as well, but that carbon fiber S-works helmet will look very cool while riding next to our sons S-works Epic 29ér. See you can buy cool.
But now we need to determine the opportunity cost for a software system, a feature in a software system, or something else related to a software system. That is we need to decide in the presence of the uncertainty created by the randomness of the many variables of the software process.
How can we do that? Well, and here's the punch line...
WE NEED TO ESTIMATE.
Can we make that decision in the absence of making an estimate? Sure we can guess, we can make a blind decision, we can just decide and suffer the consequences of that decision. But here's the rub as Willy Shakespeare once had Hamlet say, is that if it's not our money we're exchanging for the produced or acquired value, those providing the money have a vested interest in knowing how much money. And when the Value produced or acquired for the money will be returned.
This is the basis of Microeconomics which is defined as the behavior of individuals and small impacting organizations in making decisions on the allocation of limited resources.
So when someone says we can make decisions without estimates, their wrong. Unless hey haveno concern for the loss resulting from the write off of the opportunity cost. It is doubtful that those paying for the value have much interest in that.
Can we make decisions without an estimate of the outcomes? Not in any credible way I know of. If there is a credible way, it has yet to be stated. Slicing is estimating. Using past performance for forecasting (estimating outcomes in the future) is estimating.
So the simple answer to the conjecture of making decisions in presence of uncertainty in the absence of an estimate is also simple
And anyone saying they can needs to come to grips with the principles of microeconomics of software development.