Can You Afford the Software You are Developing?
A reader of The Agile Executive brought up some questions about product retirement in the context of project teams that use Agile methods. For example: Should a product backed by a hyper-productive Agile project team be retired at the same point that an aging Waterfall product typically would?
The question is important. Customers can get very upset over the retirement of a product, particularly a mission-critical product. Even if the vendor offers a new product that replaces the one to be retired, the operational disruption associated with migrating to the new product is often troublesome. On the other hand, the cost of maintaining software, let alone keeping it current, could be and is often high for the enterprise software vendor.
The answer to the product retirement question ties Agile methods and practices to the fabric and economics of software engineering. A good way to address the subject is to ask the following two questions:
- Can you afford the software you are developing now?
- Would you be able to continue to adequately invest in the software as it evolves down the road?
Rules of Thumb for Affordability
Affordability is, of course, in the eyes of the beholder. Your CFO might see it in quite differently than your CMO. To bring a discussion between the two, or any other forum of CXOs, to a common denominator, you need to get a handle on two numbers:
- Development cost (including product management and test costs) per story card
- Development cost as a percentage of product life-cycle cost
Development costs and life-cycle costs vary greatly from one company to another as well as within your company. For example:
- Off-shore costs can be quite different from on-shore costs
- The costs of maintaining high quality code are drastically different from those for average quality code. (See Estimating Software Costs by Capers Jones for a detailed analysis of the subject).
- Productivity of an Agile team can easily eclipse that of a Waterfall team.
Laborious and time consuming that collecting good cost data across development methods, projects, sites and continents might be, you are essentially flying blindly with respect to affordability unless you have very specific cost data.
Until you gather this data, here are two rules of thumb that can be used to get a rough sense of affordability:
- A typical figure for development and test cost per story card for enterprise software project teams is thousands and thousands of dollars. It can exceed $10,000. This (order of magnitude) figure is for a contemporary software development and test organization in the US that is “reasonably” balanced between on-shore and off-shore development
- Development cost is typically less than 50% of the total software life-cycle costs. Again, the assumption of reasonable balance between on-shore and off-shore applies
These rules of thumb should be used prudently. For example, Mens and Demeyer report cases in which software development costs constituted a mere 10% of the total life-cycle cost.
What is your Software Evolution Strategy?
In Program Evolution: Processes of Software Change, authors Lehman and Belady summarized years of research on the subject they and various collaborators carried out. Their bottom line is deceptively simple: software is live and always evolving. Furthermore, software decays.
Jim Highsmith uses the following great graph to demonstrate the effect of accrued technical debt on cost of change and responsiveness to customers:
Jim points out that no good option exists once the software has decayed to the point of excessive technical debt. Furthermore, once you are in the far right of curve estimation is next to impossible and afforability calculations become pretty useless. You might think about technical debt like debt on a credit card – you become a slave to servicing the debt instead of paying off the principal.
Between the initial development cost and the cost of evolving and maintaining decaying software, many software development projects find themselves in dire need of higher productivity. Hence, a more precise statement of affordability is as follows:
- Can you afford the software you are developing given your productivity during and after development of the first release?
The productivity results reported for companies successfully using Agile methods such as BMC Software, SirsiDynix and Xebia indicate productivity gains of at least 2X, and often higher, compared to industry average. Everything else being equal you would be able to retire a product backed by a good Agile team later than a product backed by a Waterfall team.
Many Agile teams tend to be inclined to refactor the code on an on-going basis. For example, Salesforce devotes about 20% of development resources to refactoring. As a result, software decay is slower for such teams. They reach the point of no good options in Jim Highsmith’s graph later than teams who do not refactor the code day in and day out.
Refactoring is like flossing your teeth regularly. The dental tape disconnects your bank account from the dentist’s…