Agile Programming

Clean Code, Episode 49

By Robert C. Martin

51 minJul 2017

The innermost grouping of practices within Ron Jeffries' Agile Circle of Life are the programming practices:

  • Test Driven Development
  • Refactoring
  • Simple Design
  • Pair Programming

We've already spent a lot of time in previous episodes talking about the first two of these practices, so in this episode we'll simply review them, and spend more of our time talking about how they fit into the overall Agile discipline. This is important because being an effective agile team depends critically on these practices.

Being Agile depends upon being simple. But, being simple depends upon being clean. But, being clean depends upon being free and able to do the cleaning. If you are afraid to clean, you won't clean, you can't be simple, and you will fail being agile. It's really as simple as that.

So we'll talk about simplicity. We'll expand on Kent Beck's four qualities of simple design:

  1. Pass all tests
  2. Reveal Intent
  3. No Duplication
  4. Fewest Elements

We'll also spend a bit of time talking about YAGNI: You Aren't Going to Need It.

In the end, we'll make the point that being simple is very hard and requires a lot of work.

Finally, we'll spend a bit of time talking about pair programming. We'll dispel the myths about this controversial practice, and show why any agile team must, out of sheer necessity, practice it properly.