Reader-supported: when you buy through links on our site, we may earn an affiliate commission. Learn more

Cover of Working Effectively with Legacy Code

11 books to read next

Books Like Working Effectively with Legacy Code

If you loved Working Effectively with Legacy Code by Michael Feathers

Readers who love Working Effectively with Legacy Code usually value its practical, hands-on approach: concrete techniques for getting untested code under test, breaking dependencies safely, and making changes without fear. It is calm, specific and grounded in real codebases rather than theory, with a clear focus on fast feedback and small, safe steps. Its catalogue of dependency-breaking techniques is a reference many developers return to. The picks below keep that mix of practical craft and careful thinking.

Improve messy code safely

Cover of Refactoring
Refactoring

Martin Fowler

Like Feathers, Fowler treats changing existing code as a disciplined, step-by-step craft. It gives a catalogue of small, behaviour-preserving moves to improve a design without breaking what already works.

Cover of Code Complete
Code Complete

Steve McConnell

A thorough, practical guide to writing and revising code that is easier to understand and change. Its detailed advice on routines, classes and defensive habits suits readers who want to improve the code they maintain.

Testing in depth

Cover of xUnit Test Patterns
xUnit Test Patterns

Gerard Meszaros

A detailed catalogue of test patterns and smells. Readers who liked Feathers's dependency-breaking catalogue will appreciate its similar reference style for building maintainable test suites.

Design and dependencies

Cover of Design Patterns
Design Patterns

Erich Gamma, John Vlissides

The foundational catalogue of object-oriented design patterns. Many of the dependency-breaking techniques in Feathers's book rely on these ideas, so this gives the underlying design vocabulary.

Cover of Domain-Driven Design
Domain-Driven Design

Eric Evans

Addresses how to structure software around the core problem it solves, a helpful lens when untangling a large, confusing codebase. Readers who wanted to understand legacy systems will find a method for seeing their structure.

Cover of Clean Code
Clean Code

Robert C. Martin

Focuses on writing readable, well-named, well-structured code, the everyday skill that makes legacy code easier to understand. Readers who liked Feathers's practical tone will find similar concrete examples and advice.

Working in large codebases

Cover of Software Engineering at Google
Software Engineering at Google

Titus Winters, Tom Manshreck, Hyrum Wright

Describes how a very large, long-lived codebase is kept healthy through testing, code change practices and maintenance. It deals with the same long-term problems of sustaining big systems that Feathers addresses.

Cover of The Pragmatic Programmer
The Pragmatic Programmer

Andrew Hunt, David Thomas

A collection of practical habits for keeping code flexible and avoiding decay. Its short, direct tips suit readers who want Feathers's pragmatic mindset applied to day-to-day development.

Cover of Continuous Delivery
Continuous Delivery

Jez Humble, David Farley

Explains how automated testing and small, frequent changes make software safer to release. It extends Feathers's focus on fast feedback to the whole path from code change to production.

We earn a commission if you buy through these links. Learn more

Keep going

Find books like another book