I like to think that a legacy system is code that’s being used in production and still works fine, but is using older designs or older techniques that are no longer in common use. Legacy isn’t a label that means something is broken or retired, it means the software still works but might not be modifiable for some reason – possibly the software only runs on an older version of Linux or Microsoft Server because the language or libraries it depends on has been deprecated.
When I mean the code isn’t modifiable or updateable this can be for a variety of different reasons such as the language it was built in is no longer generally available or can’t be built on a more modern machine. Possibly, your company is already in the middle of updating/re-writing the legacy system or has lost the source code over the years. Over the years, I’ve spent time trying to decompile code and sometimes this works really well and other times it’s completed but the code is impossible to read.