8 Steps for Effective User Stories
As a developer, you want to know how to write good user stories so you can spend less time in sprint planning meetings. Go beyond the "template" to focus on clarity instead.
Join the DZone community and get the full member experience.Join For Free
as a developer/tester, i want to understand the user story so i can build/test it correctly.
mind you, this is a terrible user story. what does “understand” mean? and what is the acceptance criteria for “build it correctly”?
life is messy, and the “as a…” template doesn’t always help. you can over-cram it to make it detailed, or over-abstract it, so the actual implementers won’t know what to do.
have no fear. i’ll tell you the how to concoct an effective user story.
it starts with:
- drop the template. like everything, once we have a hammer we start looking for nails. sometimes the template doesn’t fit. that’s ok. in that case…
- tell the story in a sentence. maybe two. when people are presented with a new idea, don’t make them read heaps of documents. sum it up, so they can grasp it quickly. details can come later. and make sure it’s a story , with a beginning, middle and an end. people remember and consume stories better. you can even sing it if you want, that would make it more memorable. next you want to…
- anchor it . you know the “it’s like uber, but for…?” pitch form every start up is using? everybody knows uber, so they have something to reference the new information. in story-land it’s how the story fits into the application. “it’s like the log-in story from last week, but with extra validation”. or, “once we’ve done with the simple path, we can add more informed algorithms”. you’re showing where we were, where we’re going, and where this story fits. then it gets interesting.
- unveil the motive . why are we developing this anyway? who is going to benefit and how? the user may be able to go through registration quicker, and that means more happy users. or we, the company, gets more money from the dog accessories suppliers, if we’re able to connect our users based on their level of pet appreciation. there’s a reason we’re developing the feature, and it really helps to know the final goal. in some cases, we can debunk it, and choose something better to do with our time. once people understand the motive…
- make a show. how does it look like? you have prepared some mock-up screens, or sketches, or drawing of a flow, or anything that has more meat, right? ah, you need to prepare for this, young padawan. it will help, not just with explaining it, but it’s a also the setting for…
- give it context .now that things begin to materialize, it’s time for an example. you can present the flow on those mocked screens. or how a different application might be using our new api. how future features will be using our back-end calculation results. context is awesome! we can use it to direct the team towards…
- generalize. do we start with the example and just implement it? should we write a more extensive data validation layer, and then test it? somewhere in between? an example is not enough for development, because we need to know where to stop. and we need to know how to test. this really helps with defining the acceptance criteria. the final step is…
- draw a line in the sand. some things do not fall into our general rule. vips do not need to enter their credentials again. anonymous users can use the applications, but will go through a separate flow we’ll define later. anything that does not fall within our boundaries, should be presented. otherwise, we would implement it, and test it, and we will be surprised. and we don’t like surprises.
now, if you look at those steps, you’ll see shades of the template. it is simple (1), has motivation (2), sometimes has an example (6) . but in most scenarios, it is only the beginning. most applications require more rich information to be developed.
you might be thinking right now – how do i write these things? well, first, now you have a check list. second, if you think that by writing this, people will suddenly understand your product genius, think again.
in the olden days of humanity, people didn’t write stories. they told them. they presented them. from all kinds of points of views and in different level of details. and they retold the stories in different ways. until the cavemen understood how to catch the mighty mammoth. then they told that story to their children.
stories’ goal is to create a shared understanding in the team, to be the foundation upon which new features are built. they are a tool that can be used and abused. we just need to learn to use them effectively.
which reminds me of another story, but that’s for another time.
Published at DZone with permission of Gil Zilberfeld, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Build a Simple Chat Server With gRPC in .Net Core
RAML vs. OAS: Which Is the Best API Specification for Your Project?
Is Podman a Drop-in Replacement for Docker?
Does the OCP Exam Still Make Sense?