This content is part of the Essential Guide: Gathering and managing software project requirements

Use story mapping for more customer-focused apps

Story mapping can replace requirements gathering and shows developers what is needed to solve business problems in end users' workflows.

Requirements gathering is a complex, error-prone and often hazardous process. Requirements are a poor definition of business needs because new features are rarely required. Features may be desired, but they're not needed for the application to function. In software development, the focus should be on improving a product for the end user rather than proving that requirements have been met. Story mapping replaces the need for requirements gathering. Using story mapping to gather and manage requirements results in a strong customer focus and software changes that deliver true end-user value.

User story mapping is an agile development technique that reveals what is needed to solve the business problems in the end users' workflow. This approach meets the goal of software development, which should be to create products that give end users the ability to solve or avoid problems.

Developers can use story mapping techniques to organize, manage, prioritize and define stories that deliver maximum value to the end user. User story mapping adds value by making stories specific, understandable and testable for the development team, which results in a more effective Agile development team and a stronger, customer-focused application.

Build story maps with horizontal slices

Horizontal slicing, a key concept in both Agile and in story mapping, is a way of dividing and organizing stories around deliverable features. The idea is to get all of the stories associated with a particular feature lined up side by side. Each horizontal slice should include everything that needs to happen to deliver a single feature. From there, subsequent features can be stacked vertically. The highest-priority features move to the top.

The process of mapping out, prioritizing and building slices during story mapping creates understanding and communication.

Arranging a story map according to horizontal slices helps the team work on one new feature at a time, all the way through to the final result. In other words, teams take a new feature and plan a slice (or series of user stories) from start to finish in the code. In the next iteration or sprint, the team plans the second slice. At the end of a release cycle, the feature works from beginning to end.

For example, imagine building an online bookstore. The whole feature set includes a way to display inventory, a search engine and purchase or checkout options. The first horizontal slice might be searching for a book by title, selecting the book and purchasing it via PayPal. The process of buying the book is complete but has only one option. The next slice may include searching for a book by author, selecting the book and purchasing it with a credit card. In both, the code is different, but it slices across the whole order process. Also, the option to search by title or pay through PayPal should still exist. Regression testing would be needed to ensure that earlier features still work properly.

Manage end-user value

Managing end-user value is the purpose of gathering customer software requirements. With story mapping, a team that includes customer representatives maps out features and stories slice by horizontal slice. In other words, as the map is created, new features and the way they fit together are fleshed out by the team. Because the team includes either a customer representative in the form of a product owner or a customer end user, the focus remains on the value to the end user.

Team members build the map story by story, based on the needs of the project. Large features are broken down into manageable, iteration-sized buckets of work. Additionally, the team discusses the purpose of the project, as well as design options, possible integration issues and messaging or communication needs. In all, the full scope of the project is discussed in an open brainstorming session where ideas flow freely. Stories are built to define what needs to be done, and include acceptance criteria to fulfill end-user needs.

These discussions should be kept practical and focused on the value to the end user. Well-run story mapping discussions give the team a full workflow in iteration increments that can be re-discussed and re-planned quickly if end user needs change along the way. Story maps are an effective method of gathering and managing requirements while retaining customer focus.

Creating a story map builds in prioritization almost immediately. Although maintaining a horizontal slice is difficult for any team, it's essential to assist in balancing priorities. Many times the easier stories float to the top because the team can do them sooner and with less impact to an existing code base. However, it's imperative that the team stay the course and prioritize both the easy and more difficult stories in order to maintain the horizontal slice. After all, the purpose of the horizontal slice is to prove the concept across the application. Any issues discovered while working more complex stories could alter the direction of the entire project. The team should plan to tackle complex stories earlier rather than later so it can address problems and revisit the design if needed.

Ask the team to group the simple and the more complex stories, decide how they fit into the map, and prioritize them accordingly. Remember, the higher the priority, the more likely it is that a story may be part of the initial horizontal slice. But the full map helps the team prioritize stories equally.

Priorities change, so keep the team's map available for frequent discussions and changes as they work through the project. Because most priorities will change over time, the team may consider prioritizing only by iteration, not the full project. Prioritizing one horizontal slice at a time may save time in the long run by reducing rework or meeting time.

Create understanding and communication

The process of mapping out, prioritizing and building slices during story mapping creates understanding and communication. If the story mapping discussions include both customers and the development team, both come away with an understanding of end-user value, and what needs to be done is communicated specifically.

Story mapping solves communication issues around what the project is accomplishing to improve end-user value. After all, a customer or product owner is there to change the details or priority of the story if necessary. At the same time, developers communicate directly with other team members and come away with the specific details, acceptance criteria and customer feedback that typically is nonexistent.

Story mapping, although time-consuming in the beginning, makes everyone's job easier by making details and end-user needs clear. All participating team members take responsibility for asking questions, listening and executing all details of the design with active, responsive participation. Everyone gets the communication and the understanding they need at the same time, together.

Granted, the story mapping process isn't easy. Initially, it's difficult to get active and attentive listening and participation in discussions. Understanding how horizontal slicing creates value is hard to grasp at first because the first slice has to be finished to see the value. However, as a team's comfort level increases, active participation increases. Horizontal slicing reduces chaos, confusion and rework, to the benefit of the application and the end user.

Next Steps

How do you manage software testing processes on an Agile team?

Get to know software requirements gathering techniques

Crucial criteria and considerations for user story maps

Dig Deeper on Software requirements