# The Clean Coder — Deep Reference

Based on Robert C. Martin, *The Clean Coder* (2011). Use this when discussing professionalism, estimation, and sustainable pace.

## Professionalism

- **Do no harm** — Do not leave the codebase in a worse state. If you must leave a mess, leave a clear TODO and track it. Prefer leaving code better than you found it (boy scout rule).
- **Know your craft** — Practice (e.g., katas), read, stay current. Estimate only what you understand enough to estimate.
- **Saying no** — When a request would compromise quality or is unreasonable, say no. Offer alternatives (e.g., "We can do X by date Y if we drop Z" or "We need two more weeks for tests").
- **Saying yes** — When you commit, mean it. Do not say yes to please and then miss; communicate early if you cannot meet a commitment.

## Estimation

- **Three-point estimate** — Best / nominal / worst case. Use for planning and risk, not as a single "promise" number.
- **Velocity** — Use historical velocity for iteration planning. Do not inflate; if the team goes fast once, use that as data for the next time, not as the new permanent commitment.
- **Uncertainty** — Make uncertainty visible. Prefer ranges and confidence levels over false precision.
- **Refusal to estimate** — It is professional to refuse to give a date when the request is vague or the work is unknown; offer to break it down first or to give a range after discovery.

## Sustainable pace

- Sustained overtime reduces quality and long-term output. Occasional crunch may happen; make it rare and recover afterward.
- Tests, refactoring, and learning are part of the job. Skipping them to "hit the date" creates technical debt and is unprofessional in the long run.

## Tests as a requirement

- Code without tests is legacy. Writing and maintaining tests is part of professional delivery, not optional.
- When under pressure, the first thing to protect is the test suite and the ability to refactor safely.

## Mentoring and collaboration

- **Helping others** — Part of professionalism is mentoring, pairing, and leaving the codebase (and the team) better than you found it.
- **Collaboration** — Communicate clearly with stakeholders and peers; say no when needed, and offer alternatives when saying yes is not possible.

Use this reference when the discussion involves commitment, estimates, saying no, sustainable development practices, or teamwork.
