Ask Me Anything

AMA: Iterative vs Incremental

Anonymous asks…

What is the difference between iterative and incremental models?

My response:

Fortunately I have written an entire post on this exact topic here.

My conclusion was:

We can’t build anything without iterating to some degree: no code is written perfectly the second that it is typed or committed. Even if it looks like a company is incrementally building their software: they’re iteratively building it inside.

We can’t release anything without incrementing to some degree: no matter how small a release is, it’s still an incremental change over the last release. Some increments are bigger because they’ve already been internally iterated upon more, some are smaller as they’re less developed and will evolve over time.

So, we develop software iteratively and release incrementally in various sizes over time.

2 replies on “AMA: Iterative vs Incremental”

“An artist knows when their piece of art is done: not a single stroke more, not a single stroke less.” Really? I don’t agree. I know Kandinsky for example painted the same picture repeatedly as his style evolved. He probably didn’t consider himself ‘done’ until he was happy.

For me the distinction between iterative vs incremental has always been one of process vs functionality.

If you follow the same process, the same cycle, repeatedly then you are using ‘iterative’ development and – as you say – every programmer actually works this way. It’s only the illusion of gantt charts and waterfall that implies that this doesn’t happen – that different things happen in a linear sequence.

But what you deliver (in terms of functionality) is incremental. If you are iterating over the same code then you are either bug-fixing or refactoring, if you are delivering something new then it is ‘incremental’.

In painter’s terms: repeated sittings with a model follow an iterative process (observation, painting and reflection) but each one may deliver an increment of the image, or a layer, or impression.

Leave a Reply

Your email address will not be published. Required fields are marked *