Books for Further Reading
The Pragmatic Programmer
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.
Working Effectively With Legacy Code
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.
Growing Object-Orienteds Software, Guided by Tests
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.
Test-Driven iOS Development
TODO: Add description of the book