Iterative or Incremental?

TDD is both, but it can be a useful thinking tool to identify when you are working in each style. It’s also useful to realize that iterative and incremental works on many timescales, and TDD is iterative and incremental on a minutes-to-hours timescale.

Session Outline

Connect: give me 5

Give me 5 advantages to delivering a new piece of software in regular updates once per week rather than the whole thing once in 6-12 months time.

You are looking for answers like:

Concept: Iterative and Incremental

Look at these two images: A B

These images are by Jeff Patton and from this article - but don’t have people read it just now, ask them to read it after the session.

Show the article and the pictures, or just the pictures on a slide of your own. Ask these questions:

Hopefully they will identify which picture is which and notice that with incremental development you need a much better idea of what you want. When you’ve worked on a kata in the previous session, like Mars Rover, you have probably been working iteratively, adding a new method then gradually adding all the needed functionality to it. Once a method is done, you hopefully don’t need to revisit it. You could say that it is an increment - a piece of the software that is completed and ready to deliver but not very useful on its own.

Do: Mars Rover or similar

If you are half way through a kata from a previous session you could continue with it. Otherwise perhaps start a new one that you have a test list for so that you get going coding quickly.

Reflect: iterative and incremental experiences

Discuss in pairs or as a group and each person note down what they learnt.