The Clean Coder

Published on Sunday, October 15, 2017

The Clean Coder by Robert (Uncle Bob) C. Martin

This book is part of the Robert C. Martin series, it contains his opinionated version of what a software developer (craftsman) should be. I agree with a lot of what he says in the book but I do think he has been been influenced a fair amount by the fact he is a consultant and gets to just leave at the end of the contract. There is a fair amount of advise in the book broken down into a few broad categories, career, development, testing.


This category is spread out in the book with chapter 1 summarizing a fair amount of the carerr advise. I liked the chapters on Saying No and Saying Yes, which showed how not quite saying what you mean (being a people pleaser) can turn around a bite you later. One part a had a partial disagreement with "Uncle Bob" was a learning and the employer's responsibility there. He says it is not the employer's responsibility at all. I would say that is true however if you have an employer like that, leave, they are not worth your time.


Uncle Bob is a big practitioner of TDD (test driven development), which in my opinion is a good thing to do. The one thing he talks about as far as development that I do not think that is practiced enough is acceptance testing (and since it seems a lot of companies are getting away from having quality assurance departments is something devs will need to learn to do.)

Development (Coding)

Interestingly enough Robert talks about "flow" but not in the way that most developers talk about. Most developers talk about it being the ideal state and where they get the most done, whereas Robert think that it is a bad thing, and where most bug get introduced. Not sure where I fall in this idea, I work in an open office environment where it is very hard or impossible to into the flow.


I do think this book is worth reading, possibly multiple time through out your career in software development. I will give this book a rating of 4 out of 5 stars.


Brief pointers on areas in each chapter I found interesting.

1. Professionalism

Taking Responsibility, Work Ethic

2. Saying No

The cost of saying yes and weasel words.

3. Saying Yes


4. Coding

5. Test Driven Development

It works. The adapter ports pattern.

6. Practicing

Code Katas, Coding Dojo

7. Acceptance Testing

Happy Path, Basic Error Testing

8. Testing Strategies

Code coverage, Unit Testing `100%, Component Tests ~50%, Integration Tests ~20%, System tests ~10%, Exploratory ~5% (manual). Automate, Automated, Automated.

9. Time Management

Time Boxing, Meetings, Blind Alleys

10. Estimation

The law of large numbers.

11. Pressure


12. Collaboration

Working with the business

13. Teams and Projects

Not us verse them.

14, Mentoring, Apprenticeship, and Craftsmanship

Moving up the career path from Apprentice to Journeyman to Master.

comments powered by Disqus