Schedule a Call

Choose a time that works for you.

Loading calendar…

If it does not load, Open Calendly directly.

Quote card for An Iterative Waterfall Isn’t Agile.

An Iterative Waterfall Isn’t Agile

I’ve noticed something disturbing over the past two years. And it’s occurred uniformly with teams I’ve worked with all across the world. It’s the tendency to create an iterative waterfall process and then to call it agile.

An iterative waterfall looks something like this: In one sprint, someone (perhaps a business analyst working with a product owner) figures out what is to be built.

Because they’re trying to be agile, they do this with user stories. But rather than treating the user stories as short placeholders for future conversations, each user story becomes a mini-specification document, perhaps three to five pages long. And I’ve seen them longer than that.

These mini-specs/user stories document nearly everything conceivable about a given user story.

Because this takes a full sprint to figure out and document, a second sprint is devoted to designing the user interface for the user story. Sometimes, the team tries to be a little more agile (in their minds) by starting the design work just a little before the mini-spec for a user story is fully written.

Many on the team will consider this dangerous because the spec isn’t fully figured out yet. But, what the heck, they’ll reason, this is where the agility comes in.

Programmers are then handed a pair of documents. One shows exactly what the user story should look like when implemented, and the other provides all details about the story’s behavior.

No programming can start until these two artifacts are ready. In some companies, it’s the programmers who force this way of working. They take an attitude of saying they will build whatever is asked for, but you better tell them exactly what is needed at the start of the sprint.

Some organizations then stretch things out even further by having the testers work an iteration behind the programmers. This seems to happen because a team’s user stories get larger when each user story needs to include a mini-spec and a full UI design before it can be coded.

Fortunately, most teams realize that programmers and testers need to work together in the same iteration, but not extend that to being a whole team working together. This leads to the process shown in this figure.

Illustration of Analysis, Design, Coding and Testing

This figure shows a first iteration devoted to analysis. A second iteration (possibly slightly overlapping with the first) is devoted to user experience design. And then a third iteration is devoted to coding and testing.

This is not agile. It might be your organization’s first step toward becoming agile. But it’s not agile.

What we see in this figure is an iterative waterfall.

In traditional, full waterfall development, a team does all of the analysis for the entire project first. Then they do all the design for the entire project. Then they do all the coding for the entire project. Then they do all the testing for the entire project.

In the iterative waterfall of the figure above, the team is doing the same thing but they are treating each story as a miniature project. They do all the analysis for one story, then all the design for one story, then all the coding and testing for one story. This is an iterative waterfall process, not an agile process.

Ideally, in an agile process, all types of work would finish at exactly the same time. The team would finish analyzing the problem at exactly the same time they finished designing the solution to the problem, which would also be the same time they finished coding and testing that solution. All four of those disciplines (and any others I’m not using in this example) would all finish at exactly the same time.

It’s a little naïve to assume a team can always perfectly achieve that. (It can be achieved some times.) But it can remain the goal a team can work towards.

A team should always work to overlap work as much as possible. And upfront thinking (analysis, design and other types of work) should be done as late as possible and in as little detail as possible while still allowing the work to be completed within the iteration.

If you are treating your user stories as miniature specification documents, stop. Start instead thinking about each as a promise to have a conversation.

Feel free to add notes to some stories about things you want to make sure you bring up during that conversation. But adding these notes should be an optional step, not a mandatory step in a sequential process.

Leaving them optional avoids turning the process into an iterative waterfall process and keeps your process agile.

Explore Further

An iterative sculptor refines the entire piece over time, but doesn't deliver the completed work of art until all parts are done.
Article

Iterative vs. Incremental Development: Why Agile Teams Need Both

Featured

Useful for a shorter article-style explanation of the difference between iterative and incremental development.

Article artwork for Six Agile Product Development Myths - Busted.
Article

Six Agile Product Development Myths - Busted

Featured

A shorter article-style version of several myths covered here, including agile outside software, managers, change, specialists, planning, and architecture.

Two agile leaders present a planning board with a burndown chart and Scrum workflow.
Download

A Leader’s Guide to Agile

Featured

Get Mike Cohn’s free 91-page guide to the ten things agile teams most need their leaders to know.

Article artwork for Deciding What Kind of Projects are Most Suited for Agile.
Article

Deciding What Kind of Projects are Most Suited for Agile

Featured

Useful for thinking through the urgency, complexity, and novelty that make agile a good fit.

Agile transformations thrive when the five pillars (mindset, roles, practices, teamwork, and support) are all in place. Transformations can stall or breakdown if even one pillar is missing.
Article

The Five Pillars of a Successful Agile Transformation

Featured

Discover the secret to a successful agile transformation and learn what to try if your organization is struggling.

Article artwork for How to Get Teams Aligned on What It Means to Be Agile.
Article

How to Get Teams Aligned on What It Means to Be Agile

Featured

Discover how to align teams on what it means to be agile, from principles to practices.