⛑ My First Aid Kit can help you rescue any codebase quickly and safely!
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.
📖 Helpful Guides
- Getting into a large codebase
Diving into a large, undocumented codebase is overwhelming. Let's see some techniques to approach it.
- Is it a best practice or a code smell?
Not sure if a pattern will make the code more maintainable? Here are a few resources that will help.
- Changing untested code without breaking it
Without tests, every code change is risky. But how to put tests on a code that wasn't design for it?
- Code feels impossible to maintain
Sometimes, you seem to hit a point of no return and that the best strategy would be to burn it all and start over. Are there alternatives?
- Making others care about it
What you can do when it seems that no-one cares about the technical debt that's piling up.
🥋 Specific techniques
- Approval Testing
A technique to quickly put tests on Legacy Code, so you can refactor safely.
- Behavioral Analysis
A technique to get insights from large codebases, using VCS information.
- Draw Dependency Graphs
A technique to understand the structure of a codebase.
💡 Latest articles
- 4 tips to refactor a complex legacy app without automation tools
How do you refactor a complex legacy application when you can't rely on automation tools?
- Design Patterns, Empathy, and Reading Complex Code
4 great talks on Legacy Code that I had the pleasure to host. A focus on empathy and getting into complex codebases.
- Should we stick to old patterns or sacrifice consistency?
Consistency is great! But over time, it's hard to keep a codebase consistent. Here's my approach to adopt changes without creating a mess.
- What's the difference between Regression Tests, Characterization Tests, and Approval Tests?
You may have heard one or the others. Now you're confused: is there a difference? Nope! Let me explain…
- Keeping dependencies up-to-date
My recipe for recovering from outdated dependencies and keeping healthy habits
- If you want more, check all my published articles
🎧 If you prefer podcasts
- Tips for Working with Legacy Code
I talk with Jason Swett about working with legacy code, adding tests to legacy code, how to safely make changes to legacy applications, and more.
- Changing Messy Software Without Breaking It
I talk with Robby Russell about practices like feature toggling or sustainability weeks to work on improving things. I also give advice for listeners who struggle to get stakeholder buy-in on dealing with technical debt challenges.
📚 Useful books on Legacy Code
- The key points of Re-Engineering Legacy Software
Here's an interesting book on approaching Legacy Software. Here's my summary of its salient points.
- The key points of Beyond Legacy Code
This book is filled with practical strategies to apply on Legacy systems. Here's my summary of its salient points.
- The key points of The Legacy Code Programmer's Toolbox
This book is full of tips to get into an unfamiliar codebase. Here's my summary of its salient points.
- The key points of Software Design X-Rays
This book is a gold mine. Yet, it's not a famous one. Here's my summary of its salient points that can help you deal with large codebases.
- The key points of Working Effectively with Legacy Code
This book is a reference. Here's my summary of its salient points so you understand why it's so recommended.