The sinking ship

An interesting quote from a colleague today (paraphrased):

Moving developers to projects on the legacy system is like rearranging chairs on the Titanic.

We can tidy it up, but it’s still going to the bottom of the Atlantic.  Probably better just to catch the plane.

It came up in the context of investing strategically versus buying tactically.  It’s not an either-or question, but it’s important to be thinking about long-term goals and assigning resources appropriately to match your strategic view.  The Technical Debt metaphor can offer guidance here too, as buying tactically tends to max out your credit cards (so to speak), while investing strategically actually nets returns.

About Jimmy Bogard

I'm a technical architect with Headspring in Austin, TX. I focus on DDD, distributed systems, and any other acronym-centric design/architecture/methodology. I created AutoMapper and am a co-author of the ASP.NET MVC in Action books.
This entry was posted in Misc. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Joe

    I guess it depends on your definition of legacy – which we’ve all seen defined as “as soon as you add it to version control” all the way through to “something written X years ago with no documentation”.

    Personally, I’d much rather work on and clean up a legacy system that matters than a comparitively irrelevant greenfield project. There are more challenges and therefore more satisfication in getting something ugly and unmaintainable into a test harness and refactored into a solid design than there is implementing yet another variation on an product catalog and shopping cart.

    Of course, if the system in question is a total turd, then good point.

  • Here’s my definition:

    Legacy code = code without tests
    Legacy system = an older version of the system still in production

    It’s a legacy system where a newer (and far easier to change) version is also in production. Both systems are 100% legacy code.

    One system has had dozens upon dozens of developers touch it for the past 5 years, with dozens of different coding styles, not much design and little technical guidance. On the technical debt scale, this system is bankrupt.

    The other has had 6 people touch it only for the past year, all of whom are still here.

    It’s the Titanic not because it’s 100% legacy code, but it’s the system we’re strategically phasing out.

    I do agree, legacy code can be nice as all of the business logic is already in the system, it just needs to be organized and refactored.

  • jdn

    What’s funny is when you have the exact situation you describe, but the legacy system still generates 100x times more revenue than the newer system.