Example mapping is a team-based technique for capturing feature requirements invented by Matt Wynne. It's simple to use and we've found it fantastic for: - shared understanding of a feature - keeping everyone in the meeting awake and focused - promoting contribution from all team members - making better features!
In the past we used to let a lone developer go away and think about a feature, such as "User can add tickets to their cart". First, they would write Given-When-Then statements capturing the details of the feature. After this a whole-team meeting would happen and all the attendees would be faced with this wall of text. It was often impenetrable, hard to reason about and hard to edit. A lot of time was wasted making sure our rules fitted into the predefined structure. People would zone out and let it wash over them. Something had to change.
Example mapping unconstrained us from the strict grammar, made the feature easy to read, and helped everyone get on board from the get-go.
An EM session for us starts with a blank slate and one person leading the session. Of course people are free to think about the feature before hand, but it's important to have that blank slate. This means all team members are along for the whole journey. First we'll come up with an obvious rule, such as "user can add a ticket to their cart". After this we'll come up with examples that support this, and importantly some that don't. For instance, what happens if the number of tickets available has reduced since page load? This might drive out a second rule that a ticket inventory check is needed before the cart is updated. We continue until everyone is out of rules. Usually rules are blue stickies, with examples being green.
Often a question will crop up. We'll either be able to answer it on the spot, or we'll defer it until later. In either case we capture it using a red sticky. Questions help clarify things that may be otherwise unclear.
We also capture some metadata including a group estimate of effort, whether we'll need to produce documentation etc.
It's possible to tell from looking at the table what the balance of rules to examples to questions is. For instance lots of questions - are we ready to start this yet? Lots of rules - do we need to split this? Lots of examples - we need to look at those rules again.
In our team usually the whole team attends. That means multiple developers, testers, a scrum master and a product owner. It's important for everyone to contribute, understand and buy in to the feature. We run an example mapping session for all non-trivial features.
Okay that's great, but our team is also distributed, so how does that work?
Using stickies doesn't work well when half of you are in another country, and someone else is working at home. What we did for quite a while is use Google Sheets to capture the session in a video conference. For this we created a template with the elements laid out and appropriately coloured. This worked pretty well but there were two sticking points. Firstly, people would often lose track of the template, with accompanying requests for "has anyone got a copy?". Sometimes people would think they'd copied an existing Sheet and overwrite the old one. Secondly, it was a pain to export the data from the Sheet to where it needed to go. This was usually achieved by selecting all the cells, copying them, then spending ages re-formatting the pasted text.
We reasoned that a dedicated tool would answer these problems and provide other improvements.
TeamUp Labs has been working on a dedicated tool for example mapping and it is in early access. Phase one for us meant it should work better than Google Sheets, but there are many features still to come. Currently there is no save functionality, but there is a very quick export feature. With two clicks the whole session is formatted as Markdown and placed in your clipboard. This includes rules, examples, questions and metadata. All you have to do then is paste it where you need it.
Have a play with our example mapping tool and please let us know if you think it is useful, and how you might change it.
If you want to learn how to use our example mapping tool visit our quickstart page.
If this tool is helpful, please help by sharing!