Verdict: Highly Recommended
I think every software developer should read this book. Even if you don’t agree with Uncle Bob’s opinions, this book is still worth reading. Fundamentally, it is a call for us developers to collectively ‘up our game’, and decide what it means to be ‘Professional’.
The book is divided into three parts. The first part, ‘Disciplines’, is about technical practices such as Test Driven Development and Refactoring that Uncle Bob believes are fundamental to doing high quality work. Even if you don’t follow these practices, you need to understand what they are, and how to do them, so that you are making a deliberate decision to do something else that you have found to work better for you. This part is the largest of the three, and comes with a set of additional videos available from the publisher’s website upon registering the book. I think the book does a good job of explaining the basics of how to do Test Driven Development, and basic Refactoring, though there is plenty more that can be said on these topics, and the text includes references to other books that do just that.
The second part, ‘Standards’, is about standards we set ourselves as professionals. You might be tempted to think ‘that’s obvious’ in response to things like ‘We will never ship S**t’ (the chapter title includes the asterisks), but too many people are tempted to drop Quality of code in pursuit of getting some feature done sooner. The book provides stories, examples, and reasoning for why we should not cut corners, and why we should be continuously improving the code, and why it is important to be honest with our estimates (including saying “I don’t know”, and providing confidence ranges rather than single dates).
The final part, ‘Ethics’, focuses on a ‘Programmer’s oath’ that Uncle Bob proposes we adopt. You might take issue with the wording, or some aspect or other, but the basic idea is sound: as professionals we should act with integrity, and do what is right. Starting from ‘First, do no harm’, and moving on through a demand that we always do our best work, to source control, testing, continuous integration and deployment, and teamwork, this section covers every aspect of software development. If every software developer stuck to an oath like this one (in intent, not wording), the quality of the world’s software would improve dramatically.
Every software developer would do well to read this book, and think about the issues it raises. Then, we can each decide what it means to us to be ‘Professional’, and what our own personal ‘programmer’s oath’ is going to look like.