Specification by Example: Simple Questions to Understand a User Story

By Alex Yakyma

Specification by Example is an extremely powerful technique of requirements gathering and much more. But it is sometimes difficult for teams to start reliably using it during their specification workshops, at sprint planning, product backlog refinement etc. In this post we propose 7 simple and yet very useful questions that help you build your conversations around.

Once you got your next user story, ask the group (which should apparently include Product Owner as a minimum; as maximum - user expert, subject matter experts, other stakeholders) the following:

Give me an example of...

...what is the simplest successful flow? (1)

...what objective can I achieve as a user? (2)

...what conditions change the flow? (3)

...what is the alternative flow? (4)

...what is the unsuccessful flow? (5)

...what does the input look like? (6)

...what output looks like? (7)


Let's see how it works on example of the following user story:

As a user I can search for contacts of my contacts
that work for the company of my interest
so I could establish useful connections.

...in context of a professional social network.

Before we start let's just stress again on the importance of the keyword "example" here. Each of the 7 questions should be answered in the form of examples. Otherwise we will not be able to effectively understand what is supposed to be implemented as well as immediately spot inconsistencies. So...

* * *

1) Facilitator: "Give me an example of the simplest successful flow"

Product Owner: "I, Alex Yakyma, enter Yahoo! Inc and click 'search' and get Richard Melnik, connected to Sergei Ivanov, who is my connection."

Tester: "We need to update our 'Golden Test Data Collection' to ensure we have these transitive test cases..."

Developer 1: "What kind of validation should we use for 'Company name'?"

Developer 2: "Same as we have for companies when you add them to your profile..."

2) Facilitator: "ok, now give me an example of what do I achieve with this function?"

Expert User: "If I'm a sales person, I can find leads. If I'm a head hunter, I can approach good job candidates. If I'm..."

Developer: "So if I'm a sales person, and if I even got these results, how do I then efficiently use them? Sounds like we need some basic CRM functionality to make it useful at least with respect to lead management. For instance, saving those search results, allowing to add data fields to contacts??"

Product Owner: "...good point. Very good point. Let me put some notes and elaborate this part as a candidate for the next sprint, maybe. We'll talk about it this PBR, I believe. But apparently the objective is to turn them into reliable contacts."

3) Facilitator: "what could change the flow?"

Tester: "I guess I know. Wrong or ambiguous input of the company name. Am I right?"

Developer: "What if I enter company name 'Data'? Would that also count for 'Data Inc' and 'Data Software Inc' and 'M-Data.com'?"

Expert User: "I think, yes! I may not remember full name of the firm or just use part of it because I'm lazy, and I still have to get the results".

Product Owner: "But obviously, if I search for 'Data', then exact match should be first on the list"

Tester: "Good point, we haven't talked about the result set at all so far"

Facilitator: "We can talk about it right now, or in few minutes when we discuss more flows, it's up to you guys..."

Product Owner: "I think now's better, as we see the end picture, we may find out more flows."

(and so on...)

* * *

It is very good to use whiteboard or flip-charts easily accessible and put those examples down, model them as flows, screen layouts etc. And it's good to have this "list of useful questions" attached to this board somewhere or just written down with market on the board itself... in the top right corner, as an example :)

No comments:

Post a Comment