# Clean Craftsmanship

*Disciplines, Standards, and Ethics*

2022-07-11 | `clean-code` `tdd` `refactoring` `testing` `xp`

> Robert C. Martin covers the three pillars of software craftsmanship: TDD disciplines with practical examples, professional standards for teams, and the ethical responsibilities of programmers.

---



The book is divided into three parts: the disciplines, the standards, and the ethics.

The 1st part is the most technical one. It guides you with TDD examples, showing how testing can help you to design your code.

The 2nd part is about productivity, quality, and courage.

The 3rd part is about how did we get here in terms of people who develop software, and our responsibility within 
our ethics about do no harm, integrity, and teamwork.

---

One of my favourite parts from the book:

> Our software industry is wildly dynamic and changing; therefore, we must all be continuously aggressive learners.
> 
> How and when do you do this learning? If your employer provides you the time and space to do this kind of learning, then
take as much advantage of it as you can. If your employer is not helpful, then you'll have to learn on your own time.
>
> Be prepared to spend several hours per month on it. Make sure you have the personal time set aside for it.
>
> Yes, I know you have family obligations, bills to pay, planes to catch, and you've got a life. Okay, but you also have a
profession. And professions need care and maintenance. I expect us all to be continuous aggressive learners.
>
> `Chapter 11. Courage - Continuous Aggressive Learning`

---

## Index

### Part I: The Disciplines

#### Chapter 1. Craftsmanship
- Extreme Programming
- Test-Driven Development
- Refactoring
- Simple Design
- Collaborative Programming
- Acceptance Tests

#### Chapter 2. Test-Driven Development
- Overview
- The Basics

#### Chapter 3. Advanced TDD
- Getting Stuck
- Arrange, Act, Assert
- Test Doubles
- Architecture

#### Chapter 4. Test Design
- Testing Databases
- Testing GUIs
- Test Patterns
- Test-Specific Subclass
- Humble Object
- Test Design
- Breaking the Correspondence

#### Chapter 5. Refactoring
- What Is Refactoring?
- The Basic Toolkit
- Extract Method
- The Disciplines

#### Chapter 6. Simple Design
- YAGNI
- Covered by Tests
- Coverage
- Design?
- Maximize Expression
- The Underlying Abstraction
- Minimize Duplication
- Minimize Size

#### Chapter 7. Collaborative Programming

#### Chapter 8. Acceptance Tests
- The Discipline
- The Continuous Build

### Part II: The Standards

#### Chapter 9. Productivity
- We Will Never Ship S**T
- Inexpensive Adaptability
- We Will Always Be Ready
- Stable Productivity

#### Chapter 10. Quality
- Continuous Improvement
- Fearless Competence
- Extreme Quality
- We Will Not Dump on QA
- QA Will Find Nothing
- Test Automation
- Automated Testing and User Interfaces
- Testing the User Interface

#### Chapter 11. Courage
- We Cover for Each Other
- Honest Estimates
- You Must Say NO
- Continuous Aggressive Learning
- Mentoring

### Part III: The Ethics

- The First Programmer
- Seventy-Five Years
- Nerds and Saviors
- Role Models and Villains
- We Rule the World
- Catastrophes
- The Oath

#### Chapter 12. Harm
- First, Do No Harm
- Best Work
- Repeatable Proof

#### Chapter 13. Integrity
- Small Cycles
- Relentless Improvement
- Maintain High Productivity

#### Chapter 14. Teamwork
- Work as a Team
- Estimate Honestly and Fairly
- Respect
- Never Stop Learning

---

I found this chat in YouTube where Uncle Bob talks about most of the topics form his book **Clean Craftsmanship**. 

{{ youtube(id="sPXk11hrWTM") }}
```
Listen out for:
* Quote & Intro - [00:00:00]
* Career Journey - [00:07:29]
* Clean Craftsmanship - [00:10:53]
* Programmer as a Profession - [00:15:31]
* Craftsmanship - [00:18:45]
* Disciplines - [00:22:45]
* Disciplines: Test-Driven Development - [00:28:49]
* Disciplines: Refactoring - [00:34:31]
* Code Coverage - [00:39:02]
* Standard: Never Ship S**t - [00:42:35]
* Standard: Always Be Ready - [00:47:15]
* Ethics: Do No Harm - [00:50:00]
* Ethics: Estimate Honestly - [00:53:56]
* 2 Tech Lead Wisdom - [00:57:50]
```
