Is Your Legacy Code Rotting?

April 27, 2009 · 4 comments

Some businesses think that software is a write-once activity. It is true that once written software does not change but the world around us does and static software quickly becomes out of date.

Code rot is real. Even if a system was well written at one time we often cannot anticipate how a system will need to be changed in the future. And that is the good news! If software does not need to be changed then it probably isn’t being used. We like the software we build to be used and for software to continue to provide value it must be easy to change.

You can build a house out of cardboard and on a nice summer day it will hold up well but at the first rainstorm it will probably collapse. Builders have a whole set of standards and practices they follow religiously to make their buildings robust. We as software developers must do the same thing.

I have a client on the East Coast who is one of the leading financial companies on the planet. They are particularly challenged by their huge amount of legacy code. Most of it was built by contractors or their top developers who were pulled onto the next project as soon as the first version was completed. Junior developers now maintain those systems, some who do not understand the original design so they hack away at it to make changes. Eventually they ended up with, well, a mess.

At a meeting with several of their senior managers and developers I said, “So let me get this straight. You became a leader in financial management by going out and finding top fund managers to manage your funds, have them research and acquire the best investments and then you freeze the portfolio and pull the managers off onto other projects.”

They said I got the first part right but the fund managers stay with the funds and continually adjust their portfolio because the market is constantly changing.

“Oh” I said, “So you go out and hire top software developers, have them design and build a system and then you pull them off when they are finished to work on a different project.”

“So are you saying that our software is a critical asset and like any asset it needs to be maintained?” one of the mangers asked.

Bingo.

{ 3 comments… read them below or add one }

Rob Myers April 28, 2009 at 9:02 pm

Today I have discovered at least two amazingly useful analogies on the blogs I track. This one really takes the grand prize, though, for the whole month of April. It was an analogy in the client’s business domain, and it makes perfect sense to most folks outside of the domain, too.

I’m going to have to borrow this story for my intro to the legacy code section of the TDD course. I’ll attribute the words to you, my friend. I’m rarely ever that clever with on-the-spot analogies. Mine have to grow…like a mold… (see what I mean?)

Reply

AndrewBoldman June 4, 2009 at 5:51 pm

Hi, cool post. I have been wondering about this topic,so thanks for writing.

Reply

davidbernstein June 5, 2009 at 10:44 am

You are very welcome, Andrew!

Reply

Leave a Comment

{ 1 trackback }

Previous post:

Next post: