Architecture Decision Record
Request for Comments
Staff+ Toolkit
What Engineers Want
Engineers & Writing
Legacy Projects
Legacy Projects
Dec 17, 2024
Legacy projects are a ladder for those on a journey for technical excellence
In TV series “Game of Thrones” there is a character of Lord Petyr Baelish aka Littlefinger, serving as Master of Coin and member of Small Council for two kings. While his character is dubious and machiavellian, one of his sayings became part of popular culture: “Chaos isn’t a pit. Chaos is a ladder.”
After working for over a decade in software engineering, I noticed that many engineers treat legacy projects (solely) as a pit. Something that can severely impact their career prospects, growth, compensation, etc. Some freelancers and outsourcing companies go so far to work only on greenfield projects.
There might be some valid reasons to pursue this path such as: reducing (legal) exposure in case things go south, using bleeding edge tech, easier hiring etc. In general, greenfield project seem as a safer path with less unknowns.
However, here are few reasons to consider working with legacy projects from career growth perspective:
Benchmarking code on a scale
Greenfield projects start with 0 users. When working on a legacy project with existing user base, we should be able to benchmark every change. We should be able to understand how code performs on a scale from day 1.
Iterative refactoring
Instead of waiting long time to finish initial version of project and have it used by large enough user base, we should be able to learn and use patterns like Strangler Fig, Facades, etc. to refactor project in smaller segments and release frequently.
Data Evolution
When working with legacy project there is large chance of having to do some large data migration, managing different versions, resolving integrity issues etc. These are invaluable experiences, as technology landscape changes often and greenfield project might require said migration as well at one point of time.
Learning from other people’s work
Although legacy codebase might be rusty (ie. not using latest tech, etc.), we should be able learn about the business domain, application of software design patterns (this depends on the project, but often we can find some code gems), from mistakes (e.g. too coupled code, etc.).
Every project, whether greenfield or legacy, can be a pit. This depends on so many different factors (e.g. people, budget, timeline, etc.)
Legacy projects are not for everyone.
They are not low-hanging fruit.
They are not comfort zone.
However, they can be a ladder for those on a journey for technical excellence.