Legacy Code — It’s Everywhere

“Legacy Systems” mean different things to different people, with the variation usually being based on backgrounds
  1. 1. Something the previous person wrote: Common in “startup culture”, and typically used for libraries and/or apps that were written by somebody else. A variant of this is when you are the “previous person” — remember, code is either growing or staling.
  2. 2. Something that the company used to rely on: Common in “larger” companies or enterprises, and refers to systems/components that were part of a business-line that is just not the focus anymore — and have, consequently, most of their development focused on maintenance. A variation of this theme is when the business-line is so “mature” that the underlying code is a few tech-generations old (“CORBA? Good god!”)
  3. 3. Something running on mainframes: This isn’t just a variation of -2-. For a lot of people (especially folks that came from the dawn of the internet age), “legacy” specifically refers to mainframe stuff.
Legacy isn’t just a pejorative. The longer you’re around as a viable business, the more legacy stuff you accumulate. Think of all the code you’ve written, all the frameworks from the past, all the processes that exist to deal with edge cases, all the skills that you no longer use, and then multiply that by all the people that work in (or ever have worked in!) your company. That is all legacy. As Damon Edwards puts it , Legacy is the historical record of an organization’s success!

/via http://www.commitstrip.com/en/2016/02/15/our-companys-greatest-project/
The common thread across everything “legacy” is that they tend to be used as black-boxes, until the time comes to actually patch, update, or replace it — which is when the swearing starts. And there are a lot of these black-boxes scattered in your company. After all, it’s not just “no man is an island” — virtually everything in your company is interconnected with everything else.
Keep the above in mind the next time you’re upset at that piece of legacy code that you have to deal with. Sometime soon — maybe even right now! — somebody else is probably going to be doing the same thing with your code.
Update: There is a corollary to the above — when you’re working on a legacy system, and find something you admire, make note of it. Add it to your tool-chest — after asking yourself why it wasn’t already there in the first place. And most importantly, let the author(s) know, they’ll appreciate it!

Comments

Popular posts from this blog

Erlang, Binaries, and Garbage Collection (Sigh)

Visualizing Prime Numbers

Its time to call Bullshit on "Technical Debt"