-
Notifications
You must be signed in to change notification settings - Fork 2
Telling and slicing user stories
Example mapping is often used to come up with user stories that are void of technical specs.
At the same time, it provides
- An indication of the complexity involved
- Clear examples that can readily be translated in acceptance criteria ATDD
- A shared understanding of the required functionality
Example Mapping is a technique teams use to break a big unit of work into smaller ones - often called story slicing. Example Mapping can slot right into a typical scrum team to help define stories and define agreeable estimations. -- How we do Example Mapping at Harver
Example mapping seamlessly fits in with TDD, as is discussed in that very same article and shown in the figure below.
In an example mapping session, we can roughly identify the following steps:
- Define a user story and place it at the top of the board
- Define one or more business rules
- For each of the business rules, come up with one or more examples
- Write down any questions that cannot be answered by anybody in the room.
The image above is based on the Scrumblr board running in this replit repository. If you're entering from the main page, the board is called "Example mapping".
Note that if you end up with
- too many business rules, your story may be too complex. You may want to arrange the business rules from left to right in descending order of priority.
- too many examples, the business rule they pertain to may be too complex and hence may need to be split up further.
- too many questions, the user story may still be too unclear at this point in time.
As an example, another user story related to the reservation of train tickets is given below:
- How we do Example Mapping at Harver
- Introduction video to example mapping
- Short blog post
- Prepared online board that can be used
A user story is preferably INVEST, i.e.
- “I” ndependent (of all others)
- “N” egotiable (not a specific contract for features)
- “V” aluable (or vertical)
- “E” stimable (to a good approximation)
- “S” mall (so as to fit within an iteration)
- “T” estable (in principle, even if there isn’t a test for it yet)
Most of the time, the challenge is to make user stories as small as possible while at the same time keeping them valuable. This is also known as vertical slicing, as opposed to horizontal slicing, where user stories are sliced into pieces of technical work that either doesn't appeal to users or even worse, isn't understood at all by users.
In summary, story slicing boils down to the art of making the slices as thin as possible while at the same time retaining business value for each slice. This means that a typical user story involves all the "layers" that make up an application.
Once a user story is small enough, i.e. multiple user stories can be picked up in one sprint, a user story may be split further into tasks. Tasks usually contain technical hints for the developers and make sure everybody can monitor the progress of a user story or, notice an impediment once a task "gets stuck" in the progress lane of the scrum board.
Image credits: Elephant Carpaccio facilitation guide
Having small user stories is of utmost importance, as the value delivered is maximized as early as possible. This is reinforced by the fact that frequent and early delivery enables users to use to product much sooner thus providing the opportunity to give feedback as well as reprioritization requests to the product owner.
Image credits: Elephant Carpaccio facilitation guide
User stories may be split by
- business rules/capabilities offered
- user roles, e.g. customers, administrators, help desk employees, etc.
- target devices such as mobile phones and web browsers.
- CRUD boundaries
- Happy flow and other paths
- Zero/One/Many approach
- What happens if we are dealing with nothing?
- What happens if we are dealing with one thing?
- What happens if we are dealing with many things?
- Walking skeleton
- 10 techniques to Agile Split User Stories
- Story splitting cheat sheet
- The Humanizing Work Guide to Splitting User Stories and story splitting flow chart contained therein
This work is licensed under a CC-BY-SA-4.0 license. Attribution: github.com/zhendrikse/tdd.