I had an in-house Scrum training class before I went on vacation a couple of weeks ago, and - although they had all been working in fairly mature agile environments - they wanted me to explain what “incremental and iterative” means to them. (Most of them were test specialists, a few PMs.)
My answer is below, but before I give mine up: what does it mean to you?
Iterative and incremental software development - does that simply mean: “our software increases (incremental) [in size/features/lines of code/test cases/what have you] and we build it in cycles”, or does iterative to you mean “we build software and we will probably re-build/re-do parts of it in order to improve the impact it is having. To do this, we’ve timeboxed our delivery cycles. Hopefully, we won’t have to rebuild everything every time in order to be good enough (improve the impact), so the software will grow (incremental)”.
Put another way: is re-do/re-build/refactor features to be accepted (by PO or market) part of your interpretation of the word iterative, or is it only about doing things in a similar way repeatedly (analyse, define tests, design, code, review for instance)?
I drew six painting frames on my flipcharts, in two rows.
I talked about the first row of frames as “incremental”, and started out “I want a painting of Mona Lisa, sitting in front of a tree, with that special smile etc etc” and then I “painted” the top third of the frame. In the next frame I “copied” the first top third over, and then drew the second third. In the final frame I completed the drawing (copying over the previous work) and presented this as incremental: the painting grew from nothing to completed, and along the way it increased in size/completeness.
For the second row (with three blank frames), I started out with “I want a woman and a tree”, and painted a full size woman and a full size tree in the frame. It was kind of sketchy, but included all features. I reviewed it with the class and they felt I should only inlclude the top of the woman’s body and the crown of the tree in the background. Now I painted this in the second frame. Then reviewed it and they felt the smile should be adapted and arms positioned in a specific way. So I painted this in the third frame. I explained that this is how I see iterative - you start out with an idea of what you want to achive, and then refine it but with complete, working software along the way.
In the above, incremental only approach, the painting didn’t reveal the full picture after one or even two thirds of the time into the project/painting/product development.
I concluded with: “I expect a combination of these - iterative and incremental.” I then got into horizontal and vertical slicing, that there’s a difference on how to do the incremental part.
What was your answer?
Here are some other takes on the same story, as originally presented by Jeff Patton: