Iterative Vs Incremental

IterativeDevelopment is often confused with IncrementalDevelopment. IterativeDevelopment is about planned rework. You create something, review it and then change it (hopefully improving it) based on the feedback.

A good analogy is when authors write books. Typically they have 2 or 3 external reviews and rewrites before it goes to the copy editors. The iterations are planned rework. Having reviewed lots of initial drafts, believe me when I say you wouldn't want to pay to read the first draft of many books. It's bad enough reading initial drafts when you are being paid to read it (a sentiment I hope is not shared by my reviewers). -- PeteMcBreen


Let me see if I've got this, I'll use the book writing analogy:

IterativeDevelopment means:

IncrementalDevelopment means: Now incremental development may work OK for novelists (e.g. Charles Dickens, or J.K. Rowling), but when you try doing it with computer systems you find that in writing part two, you need to revise and rework some of part one (e.g. to allow reuse), and in writing part three you need to reworks parts one and two, etc..., especially if you subscribe to OnceAndOnlyOnce and MercilessRefactoring.

So in practice, at least in XP practice, your development is both incremental and iterative. - StephenHutchinson

True - The danger is when people confuse the two. I saw a 200 person project iterating on their requirements (allowing arbitrary amount of change) when they should have been incrementing through their requirements, and incrementing & iterating (as you describe) through their design. They were, of course, not making any progress. Also saw a 100 person project claiming they were iterating through their entire novel, when in fact they were doing neither - they were stuck in the mud. They needed to get at least some part working first so they could tell they were moving - once again, needed incrementing as a base. -- AlistairCockburn


EditText of this page (last edited May 12, 2012) or FindPage with title or text search