Reading
Here follow micro-reviews of some of my favorite books. Most are pretty geeky. But so am I.
Refactoring: Improving the Design of Existing Code
by Martin Fowler
“Refactoring” by Martin Fowler is a must-read for any working programmer. Written some time ago but still entirely relevant today, it contains a tremendous number of practical tips on how to start writing cleaner code or to improve the readability and utility of existing code. The chapter on “Bad Smells in Code” will help you start to recognize code in need of refactoring, and is worth the price of the book by itself. But Fowler then goes on to spell out specific refactorings (they might have been called “refactoring patterns” if the book had been written at a different time) that illustrate how to made straightforward improvements in your code right away.
Clean Code: A Handbook of Agile Software Craftsmanship
by Robert C. Martin
“Clean Code” by Bob Martin is another must-read for any working programmer. The knowledge and practices contained in this book are foundational and should be taught in every Computer Science program in the country. His essential argument is that code that code will be read many, many more times than it will be written, and that readability and clarity of expression should be among our top priorities when writing or refactoring. As a technical manager, this book has opened my eyes and taught me several specific techniques and tactics with which to engage in code reviews with my team. The chapter near the end on “Smells and Heuristics” is a wonderful summary and a quick read if you’re looking to get a feel for the book.
The Passionate Programmer: Creating a Remarkable Career in Software Development
by Chad Fowler
“The Passionate Programmer” by Chad Fowler is yet another must-read for any working programmer. An entirely honest book, Fowler lays open the realities of the working world and argues that in a world driven by the laws of supply and demand you need to develop a plan to actively improve your skills and abilities each and every day or risk becoming obsolete (and possibly unemployed). The book is full of powerful questions that will make any programmer think honestly about where they are in their career (e.g. “How Much is Your Job Worth?”), where they want to be (e.g. “Better than Yesterday”), and then provides some very useful tactics to help you get there (e.g. “Be the Worst”).