Why do so many enterprise software projects run over-budget? The obvious answer: folks under-estimate expenses across the software life cycle. Requirements gathering, development, testing, training, and rollout are all likely candidates for project team self-denial in regard to cost.
Coding Slave author and developer Bob Reselman, whom I've known for years, got me thinking about this issue in a blog post about the wacky economics of software development. Here's Bob's comment on the challenge of building software inexpensively:
Very few places can pull off making software on the cheap. Usually these places are staffed by about 4 developers that are very, very, very good. They’ve been there, done that and know that even the easy stuff is hard. These types of developers know what to build and what to buy. They don’t have to ask a lot of questions because they have most of the answers. And usually, they’ve learned by burning through a bunch of money on other projects that never saw the light of day.
Ouch - a painful reality that happens to ring true. Unfortunately, most large enterprise development projects can't rely on a few top-level developers to handle the inevitable problems and issues in stride. Enterprise projects depend on a larger, geographically dispersed group that can scale using consistent, repeatable development processes over a lengthy period.
The failure to estimate anticipate requirements realistically hits many enterprise development projects. Bob speaks plainly about this:
[T]he streets are strewn with the carcasses of development projects and web sites that started with an attractive lowest bid or a sales pitch that sounded soooooo good. And then, once the really expensive talent is brought in resuscitate the mess of dead code that the dream left behind, the truth sets in. Making software is expensive, always has been, always will be.
The statistics back up this assertion. The 2006 Standish Group Chaos Report states that 46% of application development projects are “challenged,” meaning they fail to deliver results on-time, within budget, or in scope.
If you're responsible for developing or implementing enterprise software, be aware that your project, like all others, risks running over-budget. Fortunately, many techniques can help you improve the accuracy of requirements analysis, budgeting and so on. However, the crucial first step is recognizing that your project is at risk and that initial estimates are usually wrong. As they say, "measure twice, cut once."