
Working Effectively with Legacy Code
Start-to-finish strategies for working with large, untested legacy code bases
Michael Feathers on adding tests to untested code, breaking dependencies, and refactoring legacy systems safely.
Book summaries and notes from my reading journey across software craftsmanship, psychology, philosophy, and personal development. Each entry includes key takeaways and my own reflections. If you're looking for your next book or want the essential ideas without the full read, start here.

Start-to-finish strategies for working with large, untested legacy code bases
Michael Feathers on adding tests to untested code, breaking dependencies, and refactoring legacy systems safely.

How should we behave in a battle?
Sun Tzu's ancient treatise on strategy, and how its lessons on conflict and positioning still read today.

A Craftsman's Guide to Software Structure and Design
Uncle Bob on SOLID, component design and the architectural boundaries that keep a system flexible and testable.

Why We Do What We Do, and How to Change
Charles Duhigg on the science of habit: how habits form, why they exist, and how to rewire them for good.

The journey to mastery
Key takeaways from Hunt and Thomas: DRY, the pragmatic mindset, and how to choose and master the tools of the trade.

How to Solve Big Problems and Test New Ideas in Just Five Days
A five-day formula for going from idea to prototype to decision, saving your team weeks of building the wrong thing.

A Code of Conduct for Professional Programmers
Uncle Bob on professional behaviour in software: time management, handling pressure, TDD, and what a craftsman actually owes.

Collective whisdom from the experts
97 short, practical tips from experts on what every programmer should know, whatever language you use.

A Handbook of Agile Software Craftsmanship
Bad code works, but it drags a whole organization down. Uncle Bob on what clean code is and how to keep it that way.