Software typically becomes more expensive to change over time. That’s a problem for Agile, because if change becomes significantly more expensive over time, the Agile model doesn’t make sense. So instead, Agile teams can use evolutionary design: a way of starting simple and improving your design as you go. With evolutionary design, changes become cheaper over time, not more expensive. It’s essential to long-term Agile success.
For this session, I’m thrilled to be joined by Kent Beck. Kent is the creator of Extreme Programming, the groundbreaking Agile method that introduced evolutionary design, test-driven development, continuous integration, and many other Agile practices to the world. It’s the basis of most of the material in The Art of Agile Development. Kent finds joy in programming and teaching programming, and describes his mission as helping geeks feel safe in the world. You can find his writings about design at tidyfirst.substack.com.
Evolutionary design involves keeping the code as simple as possible, growing the code only in response to new features. But what does “as simple as possible” mean in practice? Would you add code that you know you’ll need in an hour, or a day, or a month? “Code smells” are one way to identify how to evolve a design. What code smells are particularly pungent? How can people learn to develop their sense of smell? How do you decide what to change when evolving a design? Is it in response to new features, or code smells, or both? What does it look like in practice? How does architecture fit into evolutionary design? About the Book Club