It’s been a long time since I’ve written up reviews on anything from my book pile. Here’s an overdue catch up post with short reviews of several books I’ve read over the last six months or so.
Growing Object-Oriented Software, Guided By Tests by Steve Freeman and Nat Price. Pub Addison-Wesley, ISBN 0321503627.
The first part of this book seemed scattered, jumping all over the place and making a lot of reference to things which weren’t defined until later in the book. However, once you get used to the style, this book jumps off a cliff and hits a lot of great topics, and hits them in depth.
Tooling, design, culture, methodologies – it’s all covered, and it’s covered fairly well. I particularly enjoyed the authors carrying the same detailed, practical example through the book. Too many software books use trivial examples specific to one topic. Freeman and Price evolve an “Auction Sniper” as they go through the book; the consistency is a great asset.
I also enjoyed the authors speaking emphatically about using acceptance tests as the starting point for features, not just unit tests. There’s an important differentiation between acceptance and unit tests, and the authors specifically call out acceptance tests “using only terminology from the application’s domain” – speaking to the feature’s business driver, not the underlying technology.
Also as critical to me is the authors’ emphasis on keeping the test side of the codebase clean. Your tests ARE production code. Treat them with the same approach about solid design and refactoring as you treat the code you’re deploying to your customers.
This isn’t a simple 100-level book. The authors dive deep in to design, practices, and lifecycle. They do it well enough that they’ll hook newcomers to testing as well as teach accomplished folks new things too.
Great read.
Cooking for Geeks by Jeff Potter. Pub by O’Reilly, ISBN 0596805888.
OK, this book is just plain fun. The recipes are straight-forward and tasty, and it’s terrific to dive deep in to how and why food transforms itself during the cooking process.
Potter covers everything from Calibrating Your Instruments to creating your own sous vide immersion cooker. Along the way you’ll learn about how leaveners work, discover a new taste factor you may not have known of (Umami), figure out some key time/temperature figures critical to food safety, and get exposed to some interesting molecular gastronomy.
The writing style is exceedingly well-done. Potter does a great job walking readers through the recipes and the science behind them – and it’s extremely apparent that he’s writing about something he loves.
I’m a very serious, very accomplished home cook and I got a tremendous amount out of this book. More importantly, I had scads of fun reading it.
Apprenticeship Patterns by Dave H. Hoover and Adewale Oshineye. Pub by O’Reilly, ISBN 0596518382.
Short, concise, well-written, highly useful. Other books such as Chad Fowler’s The Passionate Programmer cover similar things, but this book sits absolutely well in that company.
This book is a series of very short articles (“patterns”) around specific things you can do to guide and improve your career as a software craftsman. The articles all follow the same template: discuss the context of an environment/situation you’re in, lay out a problem you need to solve, then offer up a solution for you to apply to that problem. Many of the articles are interwoven, linking common ideas or useful concepts.
This book echoes a number of things in Passionate Programmer like the concepts of being the worst in your group (work with folks that are a LOT better than you so you’ll learn more), but it’s a very worthwhile read on its own.
Apprenticeship Patterns is particularly nicely done in that the authors don’t push a specific path they expect you to follow. They lay out a number of options and encourage you to find the path that works best for you.
I also GREATLY appreciated the authors being pragmatic over dogmatic in their approach to software craftsmanship. Certain zealots in the craftsmanship movement have completely lost site of the primary purpose of our trade: delivering value to customers. In their section “Craft over Art” he authors specifically and emphatically point out that we need to deliver “value to customers over advancing your own self-interests.” They don’t promote getting sloppy with one’s work, but emphasize doing your work well while keeping the folks in mind who are writing the checks.
All in all, this is a solid read.