There's a popular notion going around the agile community that says ... we focus on Value and don't need to worry about Cost. This, of course, is a violation of the principles of Managerial Finance and Microeconomics of software development in the presence of uncertainty and scarce resources. Here are the moving parts of any project that intends to make money from the cost invested to produce a product or service.
Since each of these elements operates in the presences of reducible (Epistemic) and irreducible (Aleatory) uncertainties, estimates are needed to make any credible decisions.
Software Project Cost Estimation
There are numerous horror stories about software development cost and schedule overruns. Some from reputable sources some from bad statistics sources. But no matter the source there are two primary root causes of project cost problems:
- Erroneous cost estimates
- Overlooking key project risks
Estimating project cost is a critical success factor for addressing these sources of proejct overrums. Estimating project costs has several reasons:
- They provide a standard against which actual expenditures incurred during the course of a project can be compared, and serve as the basis for cost control.
- They are the chief means of assessing project feasibility. A comparison of the cost estimates with the estimates of revenues enables the business to determine if the project is worthwhile to undertake.
- Along with project returns, they facilitate decisions relating to project financing and funding.
- They provide the mechanism for managing cash flow during the course of the project.
- They give the project manager a framework for allocating scarce resources as the project progresses.
- They provide the mechanism for revising project activity duration.
Data shows there are a number of sources for these overruns:
- Low initial cost estimates - result from underestimating the magnitude and complexity of the work
- Unanticipated technical difficulties - coming from a poor understanding of the technical processes needed to implement that technology and skills and experience of the staff implementing the technology
- Lack of, or, poor understanding of what Done looks like - in traditional projects, this is poor scope definition. In agile development, this is a poor understanding of what Capabilities are needed. Agile itself doesn't address these issues, it only makes the issue visible more rapidly, so corrective or preventive actions can be taken.
- Scope creep - occurs on all projects, no matter the development method. Agile provides short-term feedback, but agile itself does not control this scope creep.
When yuo hear estimates are the smell of dysfunction ask what is this dysfunction? It bad management? Is it, poor skills and training? It's simply that those working on the project have no business working on the project? Then ask how will NOT estimating fix any of these - Doing Stupid Things on Purpose problems?
Value and Cost are Inseparable
When a customer expends resources (time and money) to acquire a product or service, that expenditure is recorded on the balance sheet as a cost. On that same balance sheet, the benefits of that expenditure are recorded in some manner. Either as an asset, as a revenue producing function or a cost-saving function. In all cases, these cost-benefit relationships is recorded.
The result is the basis of an immutable business decision making process...
We cannot know the Value of the expenditure without knowing the Cost that expenditure absorbs.
This is fundamental managerial finance as well as basic microeconomics of software development decision making in the presence of scarce resources and uncertainty. Of course in the presence of uncertainty, we need to make estimates. As well this uncertainty creates a risk to the success of the project. And finally,
Risk Management is how Adults Manage Projects - Tim Lister
So in the end, successful software development projects require making estimates, to create handling strategies for the risk created by those uncertainties, to have any chance of managing the costs expended to produce the value delivered to those paying for our work.