Understand Legacy Code

Change Messy Software Without Breaking It.

When I say "Legacy Code" I mean valuable code you're afraid to change.

We all have to deal with Legacy Code. But it's damn hard to!

Here you'll find answers to your questions. I'm sharing useful tips and concrete advice that will help you tame the legacy codebase you've inherited. 😉

— Nicolas

💡 Latest articles

🥋 Specific techniques

📚 Useful books on Legacy Code

Few books dig into the challenges of working with legacy systems. These ones do.

Here is my personal bookshelf. For each book, I've written a high-level overview of what you can expect from it. Their salient points, according to me.

Click the ones that intrigue you to get more details. I put the ones that were the most insightful to me first.

Cover of Working Effectively with Legacy Code
Working Effectively with Legacy Code

by Michael Feathers (2004)

This book is a reference. Feathers provides a wide range of strategies to help understand, refactor, and improve existing code. He emphasizes the importance of testing and shows various dependency-breaking techniques to facilitate the gradual transformation of legacy systems.

Cover of Refactoring: Improving the Design of Existing Code
Refactoring: Improving the Design of Existing Code

by Martin Fowler (2018)

The first edition came out in 1999! This book is a classic reference for any professional developer. In particular, it will teach you how to change the structure of existing code without breaking it. It's a catalog of moves you can lean on in your day-to-day work.

Cover of Software Design X-Rays
Software Design X-Rays

by Adam Tornhill (2018)

This book presents the concept of Behavioral Analysis. Adam Tornhill shows how to use git logs to infer insights about the codebase. For instance, he explains how to identify hotspots or find coupling between apparently unrelated files.

Cover of Legacy Code: First Aid Kit
Legacy Code: First Aid Kit

by Nicolas Carlo (hey, itsa me! ⭐) (2021)

I wrote this one. I detailed the techniques I use the most to tame legacy codebases. This is a book with concrete code examples, written from the trenches.

Cover of The Programmer's Brain
The Programmer's Brain

by Dr. Felienne Hermans (2021)

You will find here a mix of cognitive science and programming. Dr. Felienne Hermans explains how to best approach unfamiliar codebases, based on how your brain works.

Cover of Refactoring at Scale
Refactoring at Scale

by Maude Lemaire (2020)

Maude Lemaire wrote a great book rooted from her experience in the trenches, at Slack. Let's see how it may help you lead large-scale refactoring projects.

Cover of Kill It with Fire
Kill It with Fire

by Marianne Belotti (2021)

This is a great book for anyone involved modernization projects, and for tech leaders in particular. Marianne Belotti shares lessons she learned from personal experience.

Cover of Beyond Legacy Code
Beyond Legacy Code

by David Bernstein (2015)

David Bernstein shares nine concepts and strategies to help you manage legacy code, from automating your tests suite to setting up a Buddy program.

Cover of The Legacy Code Programmer's Toolbox
The Legacy Code Programmer's Toolbox

by Jonathan Boccara (2019)

In this book, Jonathan Boccara shares a collection of techniques he recommends using on legacy codebases. From chosing a stronghold to setting up Dailies at work, it might inspire you.

Cover of Re-Engineering Legacy Software
Re-Engineering Legacy Software

by Chris Birchall (2016)

I particularly like the fact that Chris Birchall not only shares techniques to improve Legacy Code, but also how to address the Legacy Culture.

📖 Helpful Guides

🎧 If you prefer podcasts

🎤 If you prefer talks


Nicolas Carlo

Written by Nicolas Carlo who lives and works in Montreal, Canada 🍁
He founded the Software Crafters Montreal community which cares about building maintainable softwares.