Software Profitability, January 2004
by Jim Shore
Dear clients and colleagues:
In my last newsletter, I talked about the importance of choosing valuable projects. Low-value projects, I said, often lead to insufficient schedules and thus poor quality and cost overruns. The resulting low-value, high-cost combination isn't pretty. I ended with advice to choose high value projects.
But how do you choose high value projects? One way is to make your existing projects more valuable. I'll be discussing a number of ways to do so in upcoming newsletters.
One easy way to increase the value of your project is to deliver in phases rather than in a single monolithic release. In Software By Numbers, published by Sun Microsystems, the authors show how frequent delivery can improve value. In one comprehensive example, ROI jumped from 47% to 188% (!) just by delivering multiple releases. It improved the internal rate of return for the project from a borderline 13% to a very healthy 36%. Costs went up slightly, but cash investment went down and the project became self-funding sooner.
Phased delivery is very effective, but only if it's done properly. It's not enough to simply chop your product into thirds. The benefits come from placing functionality into the market and realizing return on investment. Maximizing your return requires developing according to business priority and releasing valuable features early.
The key to phased delivery is identifying minimum marketable features. A minimum marketable feature is the smallest possible set of functionality that, by itself, has value in the marketplace. You could release your software with just one of these features and you would see some benefit.
Start by identifying your product's minimum marketable features. Prioritize their value, either through a formal technique or by subjectively ranking each one against the others. Once you've done so, plan your releases around the features. Release the highest-value features first to maximize their return. To accelerate delivery, have your entire team collaborate on one feature at a time and perform releases as often as possible.
To simplify release planning, eliminate technical dependencies. Many development teams are used to building extra technical infrastructure up front, slowing your ability to release features quickly and requiring that less-valuable features be developed first. Talk with your team about using continuous design instead. Continuous design incrementally builds technical infrastructure "just in time," allowing you to release sooner and increase ROI.
Moving from monolithic releases to phased releases can dramatically increase the value of your project. It can be enough to change a borderline project into a valuable project. But remember: multiple releases alone don't guarantee improved ROI. You need to identify the most valuable features and release them first.
How to use phased delivery to increase project value:
- Group functionality into minimum marketable features that can be released individually.
- Create a release plan that deploys high-value features first.
- Have the entire team focus on one releasable feature at a time.
- Use continuous design to spread out investment in technical infrastructure.
- Deploy releases as soon as possible.