A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.md 3.1KB

title: Incremental and iterative url: https://blog.agendashift.com/2018/02/22/incremental-and-iterative/ hash_url: 37cd715a09

There seem to be two schools of thought on how best to explain iterative and incremental delivery. In the interests of clarity, the “incremental versus iterative” school, represented excellently by Alistair Cockburn, seeks to keep technical definitions separate as far as possible. The “incremental and iterative” school deliberately emphasises the intertwingliness of it all (in fairness both schools I’m not including people who blur the line unthinkingly).

Just for the purposes of this post I’m in the second school. Here’s a cute, mutually recursive definition that describes a healthy delivery process:

Incremental: new goals agreed and achieved with each short iteration, building on previous work

Iterative: seeking to be objectively better with each small increment, learning from previous work

If that’s healthy, what would unhealthy look like?

  • Incremental only: big backlog up front (BBUF?), backlog-driven development (the BDD acronym is already taken), no time for learning
  • Iterative only: constant tinkering, chasing metrics, busywork, no meaningful alignment on goals

Ugh – you really do need both! If you’re big on planning, break the big rocks down into smaller rocks, and make sure you leave enough gaps between them in every iteration for learning. If you’re big on flexibility (at the extreme, on-demand scheduling), don’t settle for ad-hoc; step back regularly from your individual work items and agree on which goals you’re (self-)organising around.

Related concepts: refinement and fidelity (see this by Karl Scotland). It’s smart to start with crude solutions that kinda work, then refine them incrementally and iteratively (both at the same time):

  • Incremental refinement: make refinements you had the good sense to defer
  • Iterative refinement: make refinements based on feedback

Credits: Thanks to everyone who commented on my crude, kinda-working prototype micro posts on Slack, Twitter, LinkedIn (and LinkedIn group), also privately on Facebook. In particular: Steven Mackenzie, Roy Marriott, Karl Scotland, Sean Blezard, Ray Edgar, Graham Berrisford, Rob Ferguson, David Daly, Becky Hartman, and Lowell Lindstrom.