The Agile Executive

Making Agile Work

Elbow Room for Handling Technical Debt

with 5 comments

It has become something of a pattern recently. Somebody contacts me about software that has become extremely difficult to maintain. Irrespective of the domain in which the software is applied, the situation is usually characterized by an overwhelming amount of technical debt accompanied by an unaccptably high error feedback ratio. Between those “twins”, both customer support and development are thrashing to the extent that development of new functionality has pretty much ceased. “Just” maintaining the software consumes 90-100% of the cycles of the development teams (and >100% of the cycles of the customer support team).

I do not really mind being considered kind of “Software 911” service. What I find fustraing, however, is that I (and other consultants) typically get called too late. The technical debt when we get called is so overwhelming that it is extremely difficult to generate the cycles required for refactoring the code and establishing solid software engineering  practices. The refactoring “medicine” can’t be taken because customer crises leave no time for learning how to refactor nor for carrying out refactoring in a thoughtful manner. Folks trying to refactor the code get interrupted so often to deal with crises that any attempt to establish flow gets in trouble. The elbow room required for systemic refactoring work simply does not exist anymore.

I am not quite certain where the fine line between “Software 911” and “Pathology 911” lies. My hunch is that once >50% of development resources are assigned to maintaining the software on an on-going basis, it is time to get into refactoring big time. If you don’t, sooner or later you are likely to find you can’t afford the software you developed.

Advertisements

Written by israelgat

October 7, 2009 at 6:56 pm

5 Responses

Subscribe to comments with RSS.

  1. With some places I’ve had to introduce the concept of software bankruptcy. At some point, it makes little financial sense to keep investing in a code base with excess debt. It can be radically cheaper to start fresh.

    Unfortunately, no matter how clear the numbers, many executives are unwilling to admit that they’ve gotten into so much technical debt that their project is worth less than nothing. Although they’re willing to accept that a collision-damaged car is totaled and should be scrapped, they just can’t (or won’t) understand the same thing about a software system.

    William Pietri

    October 7, 2009 at 9:37 pm

  2. 1. Indeed, software bankruptcy is a powerful concept. Everyone gets in (at least intuitively) and it leaves no room to hide.
    2. I am actually amidst compiling a post on the costs and implications of starting afresh. Attractive that it might look, starting afresh poses numerous problems IMHO. I will publish this post (on starting afresh) next week.

    Israel

    Israel Gat

    October 8, 2009 at 5:51 am

  3. […] simply continue a struggle that becomes more and more difficult over time. As indicated in the post Elbow Room for Handling Technical Debt, the second option is quite difficult to carry out if it is exercised at a late point in the […]

  4. […] Affordability: The question to ask is whether you can afford not to improve your software. Tools are readily available to quantify your company’s technical debt. Monetize the technical debt and include it as a liability line item in a pro forma balance sheet. Doing so is likely to shift the discussion from affordability to how to create elbow room for handling the technical debt. […]

  5. […] reduce your technical debt instead of trying total rewrite. Chances are you will struggle to find Elbow Room for Handling Technical Debt. My hunch is that once >50% of development resources are assigned to maintaining the software […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: