A reading list for anyone who wants to write readable, change-tolerant code. Each pick has its own review on this blog, and every entry links to it. The order follows a learning path: the basics of readability, improvement through refactoring, and facing complexity.
Why learn to write good code
People read code far more than they write it. Care about readability and ease of change, and the whole team gains speed and quality. Learn the principles in a systematic way, and you design with reasons instead of gut feel.
1. Read these staples first
The Art of Readable Code
A staple that sums up the basics of readability, such as naming and comments. You gain concrete guidance you can apply right away. I cover it in the review.
Good Code, Bad Code
It sorts out what makes code good by comparing concrete examples. You put into words what separates good from bad. My notes are in the review.
2. Improve through refactoring
Working Effectively with Legacy Code
A classic on changing existing, untested code safely. It adds weapons for facing stubborn code. I wrote it up in the review.
Tidy First?
It shows an empirical way to improve design by stacking small tidyings. You see the first step to take before a big rewrite. See the review.
Clean Code Cookbook
It collects concrete fixes for code quality as a set of recipes. You apply them straight to the code in front of you. I cover it in the review.
3. Face complexity
Code That Fits in Your Head
It treats rules of thumb for holding down complexity, given the limits of human cognition. You gain a standard for sustainable code. My notes are in the review.
The Programmer's Brain
It draws on cognitive science to explain how the brain reads and writes code. You rethink how you learn and understand code itself. I wrote it up in the review.
4. Widen your view
Street Coder
It speaks frankly about a pragmatic coding stance that holds up in the field. You learn realistic calls that go beyond principle alone. See the review.
Grokking Functional Programming
A gentle introduction that explains functional thinking with plenty of diagrams. You gain options for designs that hold down side effects. I cover it in the review.
Wrap-up
Start with the two staples to set a standard for readability, then improve existing code with the refactoring books. Go deep on complexity and functional programming once you need them. Every book has a full review here, so start with whichever one interests you most.