Sõrve lighthouse in Saaremaa, Estonia — non-software legacy from 1960s. Private collection

Insights into legacy software

Ürgo Ringo
Feb 22 · 2 min read

The term legacy is used quite broadly in software engineering. Typically it’s used to refer to a system or technology any reasonable person should avoid as much as possible. However, if we go deeper into trying to understand what legacy in software means we can uncover some more interesting insights.

Legacy as value

something transmitted by or received from an ancestor or predecessor or from the past

As legacy is something transmitted by an ancestor it means that it has some value (or at least had for the ancestors). Similarly having a legacy system means it’s been in use for a while therefor has been valuable for the organisation for some time. Treating legacy as something purely negative is discarding the fact it can contain many hidden gems.

In real world each generation builds on top of the previous one. The same way in software systems we may have layers built on top of each other. When we add new logic we often treat the existing business rules as a black box or use “the least possible change” strategy. Unfortunately this introduces a lot of accidental complexity. This does not mean the value is not there — it can just be that the organisation has lost knowledge of it.

Legacy as lost knowledge

There’s a natural tendency of losing knowledge about any system as the original authors move on to “greener pastures”. The longer some part of the system stays unchanged the more likely it is that it’ll become legacy (something we lack complete knowledge) over time.

It’s this lack of knowledge that leads to the use of outdated technologies in such codebases. The less the team knows about the system the less likely it’ll keep all the used libraries and dependencies up-to-date.

Legacy as the result of handover

A “great” way how to instantly transform codebase to legacy is handing it over from one team to another.

No matter how well written and documented the system is or how thorough handoff training is done. Nothing can compete the tacit knowledge gained by building it.

In the worse case this can be result of organisation’s software engineering process where there are separate teams for development and maintenance. However, it can also happen in more hidden forms where a team builds an initial solution and then hands it over to another team for further development.

P.S. Interested to join us? We’re hiring. Check out our open Engineering roles.

Wise Engineering

Posts from the @Wise Engineering Team

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store