The Clean Coder by Robert (Uncle Bob) C. Martin
"The Clean Coder" is part of the esteemed Robert C. Martin series, offering his seasoned perspective on what it means to be a true software craftsman. While I find myself agreeing with much of the content, it's clear that his views are shaped significantly by his experiences as a consultant.
Career Advice
The book intersperses career guidance throughout, with a comprehensive summary in Chapter 1. I found the discussions on Saying No and Saying Yes particularly insightful, illustrating the pitfalls of not being assertive enough in professional commitments. Although Uncle Bob argues that professional development is solely the responsibility of the individual, I believe that supportive employers play a crucial role in this aspect.
Emphasis on Testing
A staunch advocate for Test-Driven Development (TDD), Uncle Bob champions this methodology throughout the book. With the decline of traditional quality assurance departments, he also stresses the importance of acceptance testing—a skill that developers need to acquire and hone.
Development and Coding
Contrary to popular belief among developers, Uncle Bob critiques the concept of "flow," suggesting it may lead to a higher incidence of bugs due to lack of interruption. This perspective is intriguing, especially since my work in an open office often precludes deep concentration or "flow."
General Assessment
"The Clean Coder" is a valuable read for software developers at any stage of their careers, deserving a solid 4 out of 5 stars. Its lessons are pertinent and worthy of revisitation as one progresses in their professional journey.
Insightful Chapter Highlights
1. Professionalism
- Taking Responsibility, Work Ethic
2. Saying No
- The cost of saying yes and weasel words.
3. Saying Yes
- Commitment
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 metrics: Unit Tests
100%
, Component Tests~50%
, Integration Tests~20%
, System Tests~10%
, Exploratory~5%
(manual). Emphasis on automation.
9. Time Management
- Time Boxing, Meetings, Blind Alleys
10. Estimation
- The law of large numbers.
11. Pressure
- Avoiding/Handling
12. Collaboration
- Working with the business
13. Teams and Projects
- Not us versus them.
14. Mentoring, Apprenticeship, and Craftsmanship
- Progressing from Apprentice to Journeyman to Master.