Super useful for having solid foundations as a programmer. This book's name came from this book. You know what though, I've not read in about a decade, I should probably re-read it.
The basic pitch is that any un-tested code is legacy, and to add tests you'll probably have to do maintenance on those sections of code in order to make it testable.
It comes with some useful terminology (Seams, Inflection Points) that make it easier to visualise how code composes together, and how you can find ways to address applying tests to existing code-bases.
The story of the creation of Test Driven Development. This will help put a lot of ideas into the larger context of software development. Someone had to come up with these ideas, but how and why are usually left out. I left them out, for example.
TODO: Add description of the book