How much will that cost? vs. How much should we invest?
Assessing the worth of software development projects.
Abstract: In this article, I present an approach to evaluate (software development) project budgets from an investor's point of view. It has been motivated by the fact that project budgets can only be reasonably justified by a) a preliminary sound evaluation and knowledge of project requirements and b) an established economic motivation to approach a project in the first place.
How much will that cost?
Software development contracts, including those for web development, often are preceded by the question of how much it would cost to do a particular project.
Assessing the cost of development for a project without documented requirements is not only absurd, for consultants and contractors too keen on getting orders, what might appear as a good business opportunity, will turn into a nightmare.
If initial requirements have not been documented, any project should start at least with one requirements analysis in order to establish an approximation of the intent, amount of work to be done and assigned estimated budget. The cost of such a preliminary analysis, which is a fundamental part in Software Engineering, must normally be held separate from the project itself.
It's reasonably easy to give an initial estimate of the required budget after initial requirements have been documented. But if you are to invest in a project, what is your main concern? How much it will cost? Not really. So let's rephrase this question from the investor's point of view:
How much should I invest in a software development project?
I am presenting a simplified conceptual model that will help to determine an approximate budget. The reason for this is that it will be a justified budget. It will be justified by the project's expected ROI. Of course, this is not limited to software projects.
In ACME Software Consulting's developer Heaven, the ideal budget for a project is US$ ∞ to happily spend on endless iterative development cycles adding more features, nicer GUIs, eliminating bugs, … but down on Earth, budgets are finite.
Assuming a simplified model, we can identify these variables from the investor's point of view. The following variables refer to people who work in the investor's company, i.e. they do not refer to any cost involved directly in developing the software, but the cost that arises from the involvement of those who determine the intent of the project and the time they will spend related to the use of the software product that will be created (including marketing, administration, etc.):
- p : number of individuals involved, including everyone from upper management down to the lowest in rank
- hi : hours spent on project by each individual
- ci : cost per hour for each individual
Now we can define the Cost of Work C0, which is equivalent to the total amount of money spent on work related to the project by all involved on the investor's side, without yet producing a single line of code and without involving a single person from a software development team. In other words, if all those involved in preparing the project would work on something else, this is what their work will cost:
The Opportunity Cost I0, related to the total amount of hours spent is:
- ii is the mean net income generated by each individual per hour of work
The Opportunity Cost simply represents the income that would be generated if those involved in the project at the investor's company did their usual job instead of working on the ideas and concept of the project.
We define the Return on Investment of Opportunity Cost R0 thus:
- I equals the Expected Income generated from the software project
- B the Cost of Development for the software project
then the total cost to produce the Expected Income from the project is the Cost of Work plus the Cost of Development:
And the Return on Investment for the project is defined as:
Of course, to make a project worth working on, it should at least produce the same income as normal work done anyway, so the income generated by the project should at least equal the income generated by normal work done:
The project budget is thus limited by the relation of Cost of Work to Opportunity Cost and can be increased as the Expected Income exceeds the Opportunity Cost.
- Besides putting an upper limit to an initial budget, this allows to increase the project's budget as the project's worth increases.
- This approach invites to apply short controlled development cycles dedicated to limited feature sets determined by defined and documented requirements, as the budget can be adjusted according to how development proceeds.
© 2011 Copyright Karim Rahimpur. All right reserved. Unauthorized distribution and reproduction is prohibited.