His book is ok as a developer guide. It presents a fair number of good practices. It also presents a fair number of practices that aren’t good or are outdated. I personally don’t like that he often fails to, or even refuses to explain the reasons for following the practices he preaches. I prefer to understand why we do something in a particular way, instead of just being told to do it that way. Overall, I don’t find his book a great resource.
There’s something that else I liked about his book. It’s a great example of how to market ideas and occupy domains.
Early in the book he calls himself Uncle Bob. In one go, he’s established a personal connection with the reader, established himself as a father figure to listen to, gotten over the hurdle of a non memorable formal name, and given the readers a common term to identify him with. A non trivial number of people I interview mention Uncle Bob. They may be violating most of the practices he preaches, but they identify with the name.
Another bit of magic is in the book name, Clean Code. In one go, he’s taken ownership of a commonly used term. No developer can now call their code clean without Robert’s principles being brought up. No matter how readable, understandable, refactorable your code is, if it falls foul of Robert’s rules, it will be challenged by one of his many disciples. And no matter how hard to read and understand your code may be, if it aligns with his principles, it’ll be defended as Clean Code.
The marketing skill is present beyond the names too. That bit that I hate about the book – that there’s little to no justification provided for the principles it preaches. That’s a marketing skill too. A combination of “Clean” in the title, a fatherly “Uncle Bob” and good sounding practices means the lack of rationale helps readers accept them faster. Providing reasoning behind them might have made readers think and, maybe, disagree. As any parent knows, once kids disagree and get away with one thing, more disagreements are coming. The teenager years have begun. It’s not clean if followers disagree and disregard part of the scripture.
Overall, the combination of various marketing practices in the book remind me of many things, none of them about good coding. Uncle Bob reminds me of Ronald McDonald, the character that marketed McDonald’s as a healthy, family place. It reminds me of the many “Green” initiatives corporates take. It reminded me most of the modern religions and cults – the leader is a father figure, the cult name is a vague but valued noun or phrase, there’s no questioning of the leader’s dictats, and disagreements are decided based on how closely aligned are with the dictats.
If you want to look beyond clean code, I quite like “The philosophy of software design” by John Ousterhout.
Its title is the opposite of catchy. The author doesn’t place himself into the father figure role. Everything is explained with a rationale, and open to challenge. It will give guides to help you think better about software design practices, but it will not give you tools or phrases to end all discussions. For that, we have uncle Bob, the marketer.