In "It's Strategic -- but it's not -- but it was -- now it's a burden ", I rambled about the situation I encounter on a regular basis. Here's a Haiku that captures the situation.
Please Replace It
It's heavily customized,
We can't install an upgrade,
We don't dare touch it.
The maintenance costs are killing my customer, but the rewrite costs are unacceptable. Even identifying a replacement product is impossible to discuss because there just isn't money available to invest so that we can stop bleeding money. No matter how many times I do the math, I can't understand a single word of what they're saying.
Our maintenance cost is $100,000 per year, forever. I'll emphasize that last point: forever. The service life of software is often measured in decades. Let's assume just one decade, so we're spending $1,000,000 on maintenance for the life of the product.
Let's say that it would cost $1,000,000 to rewrite the thing so we can redirect the maintainer to do something else. We spend a million now, and we get back $100,000 a year forever. I'll emphasize that: we're buying an annuity that returns $100,000 per year forever.
Investment Strategy
Here's where the friction occurs. The CIO says "we can't spend that million on ourselves, we have to spend it on our internal customers." Okay. We'll spend $1M on something for sales or HR or production or someone outside IT. What do we have to show for that $1M? $100,000 per year, forever? If so, that's good; invest away.
However, what I often see are whimsical project justifications that include some potential value from integration or decision support without an actual dollar value. Or, if there is a dollar value, it's almost farcical. For example, an integration project will save two clerks from reconciling vendor billing, vendor time cards and vendor work tickets. What will those two clerks then be doing? No hint.
We can redeploy one IT person, or we can redeploy two clerks. What's the new, high-value task for the two clerks? Actually one's a temp, so we'll lay that one off. That doesn't create value, that simply reduces operating cost. I'd rather redeploy the IT person than the clerk.
Maybe I've spent too much time reading Software Craftsmanship , but I think IT undervalues itself when competing internally for investment dollars.
My Question
How do we get to a rational justification for a rewrite? Too often, managers seems willing to spend “next years dollars” on maintenance, and seem unwilling to spend some money this year to prevent the ongoing (perpetual, infinitely large) costs of maintenance.
While there are problems with doing a rewrite badly, in some cases, there are problems even starting an intelligent discussion of the need for a rewrite. How can we justify a rewrite instead of bleeding money on ongoing maintenance?