Iterations and Increments

general-agile-picture-copyright-1024x645Agile is iterative and incremental development and frequent delivery with cultural change for transparency.

What do the words iterative and incremental mean?

Iterative means we take a one-piece-at-a-time for creating an entire feature. Iterative approaches manage the technical risk. We learn about the risk as we iterate through the entire feature set.

Incremental means we deliver those pieces of value. Incremental approaches manage the schedule risk, because we deliver finished work.

Agile works because we manage both technical and schedule risk. We iterate over a feature set, delivering chunks of value. (One reason to deliver value often is so we can change what the team does next.)

Here's a way to think about this if I use a feature set called “secure login.” Now, no one wants to log in. But, people want to have security for payment. So secure login might be a way to get to secure payment. The theme, or what I have been calling a feature set, is “Secure login.” A feature set is several related features that deliver a theme.

If you want to iterate on the feature set, you might deliver these valuable increments (I first wrote about this in How to Use Continuous Planning):

  1. Already existing user can log in.
  2. Users can change their password.
  3. Add new user as a user.
  4. Add new user as admin.
  5. Prevent unwanted users from logging in: bots, certain IP addresses, or a physical location. (This is three separate stories.)

If you implement the first story, you can use a flat file. You can still use a flat file for the second story. Once you start to add more than 10 users, you might want to move to some sort of database. That would be a story. It's not “Create a database.” The story is “Explore options for how to add 10, 100, 1000, 10000 users to our site so we can see what the performance and reliability implications are.”

Notice the explore as part of the story. That would lead to a spike to generate options that the team can discuss with the PO. Some options have performance implications.

Every time the team iterates over the feature set, they deliver an increment. Since many teams use timeboxes, they use “iterations” as the timebox. (If you use Scrum, you use sprints.) Notice the term “iterate over the feature set.”

In incremental life cycles, such as staged delivery, the team would finish all the features in the one feature set. Incremental life cycles did not necessarily use timeboxes to timebox the incremental development. In iterative life cycles, such as spiral or RUP, the team would develop prototypes of features, or even partially finish features, but the final integration and test occurs after all the iterative development was done.

In agile, we iterate over a feature set, delivering incremental value. If you don't finish your stories, you're in an iterative life cycle. If you don't limit the features you finish and finish “all” of them, you are in an incremental life cycle.

There is No One Right Way to select a life cycle for your project. If you want to use agile, you iterate over a feature set in a short time, delivering chunks of value.

If you are having trouble slicing your stories so you can create feature sets, see my Product Owner Workshop (starting in January). Super early bird expires this coming Friday.

6 Replies to “Iterations and Increments”

  1. I’m always interested in how thought leaders express the agile meaning behind the confusing phrase “iterative AND incremental” – it’s so difficult. First one must distinguish between the two word/concepts, which unfortunately appear to be synonymous with each other. Then one needs to elaborate upon the synergy that the combination of both concepts brings to the underlying way of working. Not an easy task.

    I would be happy to have more of you thinking upon this topic.

    1. HI David, thanks. Part of the problem is that the word “iterate” is overloaded. We use iterate as iterations meaning timeboxes. We also use iterate to mean “progressively walk through the small features in an entire feature set.” As we finish those small features, we build increments. No wonder people find this confusing!

      I might email you to ask what more specific confusions you see so I can write about them. Thanks.

  2. Iterative vs. incremental… I like the visual: – and if you marry those two concepts with notion of when there’s value delivered to the customer, I think you’d agree, that iterative enables you to get value far more quickly; while I’d pay big $$ for a pencil sketch of the mona lisa (iterative), I wouldn’t pay much of anything for Mona’s partial headshot…


    1. HI Peter, would you pay for a sketch on a whiteboard or for something you can release?

      Iterative approaches do refine the feature as you proceed. Incremental approaches allow you to release something (which you may have refined or not). I like both.

      I don’t actually agree that iterative gets you to value more quickly—not alone. If you look at the spiral model, that’s all about iterative and you can’t release anything until something is done. To your point in your comment, there is not much (any?) value in providing a partial headshot, but that’s not what incremental approaches do. More incremental approaches take a feature set and say, “Let’s finish this feature set (or a partial feature set) and get it ready for release.

      Iterative approaches manage technical risk. Incremental approaches manage schedule risk. Agile, which uses both iterative and incremental approaches manage both technical and schedule risk.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.