Skip to main content

don't let broken stories wreck your team's velocity

Capturing requirements in Agile stories is finicky business. Stories need to be just the right size and shape, have the right bits of detail, point to a clear outcome. They must capture the who, what, and why in a way that speaks unequivocally to the user and to the team. Badly written user stories will slow down your team in any number of ways.

A few recommendations...

Get the right people writing the story.
Even if you've done lots of requirements gathering, or the functionality seems like a no-brainer, don't assume that you have sufficient information to compose stories without stakeholder participation. In fact if at all possible, the stakeholders should do the writing. You are there to ask questions and help clarify.

Without this collaboration, you will end up going into iteration planning with hobgoblins, not real stories. The team then must devote time to figuring out what's actually needed, returning to the stakeholder with lots of questions, rewriting and rejiggering.

And if these half-baked stories sneak through planning and make it onto Kanban, the whole iteration slows down while the team strives to make sense of them.

Be specific.
That sounds elementary, but stories are written all the time with no actual users in mind, only "theoretical" ones. Or the stories themselves are hazy and dreamlike.

Imprecise stories are velocity killers. They waste everybody's time because they're sooooooo open to interpretation. They lead to unnecessary work that nobody asked for, fixes and back-outs of code that never should have happened, and a rebuild (or discard) of the system once you finally do get feedback from real users. 

Make sure stories represent actual people who can answer questions, help with details, and verify that the team is meeting requirements. Then, make sure they are written so that both the product owner and the team understand what's needed upon the first read.
    Bad: "UI team needs to fix scheduled-payment section." This story is overlarge and clear as cat litter. It also points to...what user? The UI team?

    Much Better: "As a credit union member, I need to see my scheduled-payment history displayed on a single webpage." This story represents a real user. And you don't have to tease it apart to find out what the user is asking for.

    Scale it down.
    Epic stories—in which nothing is done until everything is done—linger in the iteration backlog accumulating bulk, then haltingly heave across the Kanban board leaving wide snail tracks. They obfuscate progress, and the team learns very little about what it can actually accomplish.

    Epic stories have a place: It's in the product backlog. Leave them there, and break out stories small enough to be completed in one iteration.

    Don't forget the exit criteria.
    If a story does not clearly indicate when the work is considered done, you run several risks. You can end up doing too much, exceeding what's required, tying ribbons all over the car engine. Or you can fall short of what's needed. Or you can simply do the wrong thing.

    Defining exit criteria also can help to determine if a story is sized correctly. A long list of criteria indicates that the story should be broken up into smaller ones. Conversely, if stories are too small, exit criteria frequently overlaps.

    Take these three stories:
    "User should be able to select thumbnail of image"  
    "User should be able to select 200-pixel-wide version of image" 
    "User should be able to select 600-pixel-wide version of image" 
    All three involve many of the same tasks to put this functionality in place. So why have they been broken apart? Fragmenting work in this way causes complicated interdependencies between stories and makes it next to impossible to make story-point or time estimates.

    Read some more about user stories.
    Mike Cohn's book User Stories Applied is a good read for any Agile team looking to improve story writing. And here are a few links that I've found useful:

    Popular posts from this blog

    facebook, time to grow up

    Originally published on August 28, 2006 I appreciate how Facebook has enabled me to connect with colleagues, and (younger) family members in a manner that is both informative and expressly cordial. It attracts students like Nutella attracts chocolate lovers, and because of that, I see interesting potential here. In fact, one of our faculty members at Penn State plans to try running his human-computer interaction course through Facebook this fall . Definitely worth pursuing.

    how to make the worst of your content management system

    I recently heard tell of the following activity, parading as content migration to an enterprise level content management system. I am not making this up: Copy large volumes of Web-content-to-be, page by page, into separate Dreamweaver files containing the design (created and sliced up in FireWorks) Copy/paste said Dreamweaver files into content wells of the content management system Repeat this activity ad infinitum until an entire Web presence is constructed in this fashion always crashing in the same car: recurring mistakes and misuses of the web When I heard this, something inside me snapped. Aside from the stunning inefficiency inherent in creating all these disparate Dreamweaver files, this activity points to a fundamental lack of understanding of what exactly a content managment system is. In the interest of quelling this misunderstanding in others, here follows a list of what not to do with a CMS: Dump a bad Web site into a good CMS. If your organization's Web presence is a ...

    the case for incremental redesign: part ii

    If you are in any way responsible for a Web site, you should have some understanding of the principles of Extreme Programming . Cultivated as a discipline of software development, it is a combination of ensuring that designs remain uncomplicated, centering changes around user requirements, and employing the concept of the "Whole Team." The result is that small changes are released as they are needed - and endorsed - by the client. Not surprisingly, Extreme Programming speaks well to Web management. Consider its core values: simplicity, communication, feedback, and courage. These are the bedrock incremental redesign. Simplicity - Integrate all site changes in small doses. Avoid tectonic disruption of the entire Web presence. Document faithfully, but do not get bogged down in over-documenting. Or overplanning. Leverage reusable objects. Better yet, get the site into a content management system - one that is scaled to its requirements. Eliminate unmanageable code morass by fol...