What Does Legacy Software Mean?
The term “Legacy Software” gets tossed around a lot. There are many definitions floating around. One I heard was “software without automated tests.”
Here's my definition:
Legacy Software - Software that was written by developers who don't currently work at the company.
By that definition, any software that was written by a consulting firm and handed over immediately becomes Legacy Software.
The term “Legacy” usually refers to what was left behind when someone left (usually this world).
Software is someone's legacy when they retire, move on to other projects or companies, leave this world or the industry, or when the software is turned over by a company that developed it (but does not maintain it).
To make the idea more concrete, here are some contrived examples:
Abe used to work on the billing team at Acme Corp. He made the software that prints invoices. He now works in the manufacturing department. The invoice printing software is Abe’s legacy. Did he leave a good legacy or do those who follow curse the day Abe decided to dabble in the art of software engineering?
“IGetT” is an app dev company that delivers works for hire. They build bespoke (custom) software and hand it off to the buyer. Acme Corp payed them a hefty sum for a two year project to create their sales platform. Once the project was complete, IGetT moved on to another project. Acme Corp hired an engineer - Janet Kim - to maintain this legacy software and now it's their burden. Not very convenient for Ms. Kim that the original developers are not around. But she does what she can to make it work for new use cases. If only she had a better grasp on what the heck they were thinking when they built it the way they did…
Well, there's my definition of “Legacy Software” in a nutshell with some contrived examples to make it concrete.
