33 lines
2.1 KiB
Markdown
33 lines
2.1 KiB
Markdown
# Clean Agile — Deep Reference
|
||
|
||
Based on Robert C. Martin, *Clean Agile* (2019). Use this when discussing agile values, practices, and the "Iron Cross."
|
||
|
||
## Agile values (manifesto)
|
||
|
||
- Individuals and interactions over processes and tools.
|
||
- Working software over comprehensive documentation.
|
||
- Customer collaboration over contract negotiation.
|
||
- Responding to change over following a plan.
|
||
|
||
Uncle Bob stresses that the right-hand side still has value; the left-hand side is preferred when there is a trade-off.
|
||
|
||
## Iron Cross (four supporting values)
|
||
|
||
| Value | What it means in practice |
|
||
|-------|---------------------------|
|
||
| **Communication** | Prefer face-to-face (or high-bandwidth) communication; reduce information loss; keep the team aligned. |
|
||
| **Courage** | Courage to refactor, to say no to unreasonable requests, to change the design when the code tells you to. |
|
||
| **Feedback** | Short feedback loops—unit tests, integration tests, demos, small iterations. Learn fast what works and what doesn’t. |
|
||
| **Simplicity** | Do the simplest thing that could possibly work. Avoid speculative design and unnecessary abstraction. |
|
||
|
||
## Practices
|
||
|
||
- **TDD (Test-Driven Development)** — Red, green, refactor. Write a failing test first, then minimal code to pass, then refactor. Tests act as specification and safety net.
|
||
- **Refactoring** — Continuous small improvements. Keep tests green; improve structure, names, and design in small steps.
|
||
- **Pair programming** — Two people at one machine. Improves design and quality; spreads knowledge. Not mandatory every hour, but a recognized practice for hard or critical work.
|
||
- **Simple design** — No duplication; express intent; minimal elements (classes, methods); small, focused abstractions. Add complexity only when the code asks for it (e.g., third duplication).
|
||
|
||
## Relationship to craft
|
||
|
||
Clean Agile ties agile values to craft: sustainable pace, tests as requirement, refactoring as part of the loop, and simplicity over speculation. Use this reference when discussing how TDD, refactoring, or pairing support agility and quality.
|