What is Legacy?

A gift or a curse from the past...

I'm speaking at QCon london this year on the topic Modern Legacy Systems

This was tweeted by @QCon as follows (note this talk isn't specifically about Java but about systems in general).

Tweet1

and within minutes UncleBobMartin replied:

Tweet2

This illustrates a good point about attitudes towards legacy code and systems. Although the term is often used negatively, legacy code is NOT, necessarily, bad code (and a system is more than just code).

In most areas of life a 'Legacy' is a good thing! It might refer to a valuable art collection left to a museum or perhaps the body of work of a famous author. Only in I.T. is something old (but valuable) viewed as bad.

When we refer to a System being Legacy we're really saying that the system is built in a way that differs to how we'd choose to do so now. The system may have been written well, using the best technologies and tools available at the time. A system written in 2001 using Java 1.2 and Oracle 8i etc may have made perfect sense at the time but if you wrote it now you'd at least use the latest versions available or even something different entirely (Scala, mongoDB etc didn't exist then).

A system maintained by professional programmers would be upgraded throughout time and migrated to new technology when required (as Bob suggests). However, this is rarely a decision for the programmers - it's a management decision. To be fair to management, does it really make sense to spend large amounts of money continually upgrading a system if it works? If the programmers and systems team did a good job then no-one might need to make changes for many years. This indicates a high return-on-investment and a good quality system. A Legacy!

Of course when you do have to make changes or additions you have a very different set of challenges compared to modifying a system that is being continually developed. My talk at QCon explores some of these issues, makes suggestions about approaching them and how to leave a good legacy rather than a bad one. If you haven't booked your place at QCon yet then you can use code ANNE100 to get £100 off.



Re: What is Legacy?

Agree with you on that being legacy doesn't necessarily have being bad in it. When a system becomes legacy, all the changes have to have business values, rather than simply modify it to make the code look good (whatever it means, but UncleBobMartin wanted to make the connection between legacy system and bad code). When I wrote this blog post, I thought it's the limited characters in tweets makes it hard for him to explain ideas. Now I understand it's just the style when he wants others do what he is good at, even in a field he is not good at. Selling something one has without even trying to know what you need. Typical consultant. :-)

Re: What is Legacy?

To be fair to UncleBobMartin he thought I was using the term 'legacy' in the negative way that most programmers do. He did 'get it' once I clarified. You are certainly correct that it's impossible to explain a complex concept in 140 characters in twitter!

Re: What is Legacy?

I once heard somebody using the word 'heritage' in contrast to 'legacy', which in my opinion nicely expresses the value (both the monetary aspect and the business value) a 'mature' system may have. What is potentially painful is not the age of the system itself or the selection of vintage technologies used, but the technical debt accumulated over time.

Re: What is Legacy?

Ooooh, perhaps I should add a slide to my talk called "Alternative Terminology"?!

Re: What is Legacy?

The definition of "legacy system" that I use in my talks is that it is a system so crucial to the business that no one dares to try to replace it. The point a lot of people miss about legacy systems is that they've paid their dues. Their return on investment is really good and unless dramatic change is needed, it often makes no financial sense to replace them.

Re: What is Legacy?

I actually watched your QCon video before writing my talk to make sure there wasn't too much overlap! Your definition is good and takes into account the needs of the business as a whole. We should also remember that the users probably don't like constant change and another cost of releasing a modified IT system is the training required for end users and support teams. We also shouldn't forget the operational risks that increase when end users don't know how to use a new system...

Add a comment Send a TrackBack