Legacy means successful π
In software development, “legacy” is seen as a curse. Effectively a synonym for “old and bad”, it is associated with old technology, spaghetti code, and technical debt.
Outside of software development, the word “legacy” often has more positive connotations. It can represent prior achievements, valuable traditions, and enduring contributions.
It is worth remembering that legacy means successful. IfΒ you are looking at a piece of legacy software, it is by definition successful. Otherwise it would not be legacy; itΒ would have been abandoned. Only successful software becomes legacy.
Legacy software is battle tested. It is what users rely on to do what they need to get done. It is most likely what pays your salary.
It is also easy to be naive about how bad the old system is, and how how easy it would be to make it better. As Darren Kopp said it:
The greatest lie we have ever told ourselves is that we want greenfield projects because we wonβt have to deal with legacy code, but legacy code is just greenfield code that is written under the duress of trying to solve the problem at the same time.
While working on legacy software can require a different mindset than greenfield development, it can be very rewarding to work on actually successful software. To know that the changes you make will affect actual customers today.