Iterative vs incremental developmentHow frequently are you incorporating feedback into your code?
I love it when that happens.
I ask a question, and someone responds in a way that completely changes the way I think about the question.
That’s what happened when I asked LinkedIn to share their challenges with incremental software delivery.
One response called out the difference between incremental and iterative.
I’m sure if anyone had ever asked me to describe the difference between the two terms, I could have come up with a reasonable answer. But I realized when I read that response that I had never conciously made the distinction, and had in fact probably used both terms interchangably far more often than they deserve.
So in words, what’s the difference?
With an incremental approach, we break up our work into small pieces (iterations), then work on each piece, and deliver when we’re done (either with the entire product, or perhaps with some subset of functionality).
With an iterative approach, we make no effort to build a full-fledged feature before releasing. In fact, we may intentionally not build a complete feature. Instead, we build the minimum necessary to provide some value, and we relese that… then we get feedback so that we can iterate.
At the possible risk of over-simplifying, I’d summarize the difference as the frequency at which we get and incorporate feedback.
The biggest challenges of incremental software delivery
Incremental/iterative software development challenges many of our deeply-ingrained assumptions about efficiency and control.