User Stories Applied: For Agile Software Development
Introduction:
"User Stories Applied: For Agile Software Development" is written by two of the heavy hitters from the agile movement, starting with Kent Beck one of the original signatories of the Agile Manifesto in 2001 who has since driven the development and popularisation of Extreme Programming XP. The primary author is Mike Cohn who we have already reviewed in this series with "Succeeding with Agile: Software Development Using Scrum".
In a world where projects can't afford to wait, user stories are a paradigm shift—where communication triumphs over cumbersome upfront requirements.
Key in Agile projects are communication and feedback cycles which are the foundation for user stories. It's ok for developers and customers to talk rather than write requirement specs, negotiate with stakeholders, and then write some more. A requirements document should only be written when it achieves the real goal of delivering the project, not an invaluable waterfall sequence that yields no value to the customer. User stories provide us with a method for having just enough information written down that we don't forget and we can estimate and plan while encouraging communication.
The primary purpose of this book is to set the scene for the role user stories can play in software development and agile projects, why, when and, how to use them, and when other tools in our toolkit might be useful. At 286 pages it's a quick read with sections towards the end reserved for examples. It's a very practical reference point for a tool that many of us use without a second thought in our day-to-day Jira backlog management. User stories at best should serve as a means for communication and collaboration between stakeholders, including customers, developers, and testers throughout the software development process.
This blog will be structured as follows:
Let's get into it.
What are user stories and how are they used ??????
Software requirements are a communication problem. Those who want the new software must communicate with those building it. If either side dominates the communication the project loses. For example:
We cannot perfectly predict a software development project, rather as users see early versions they come up with new ideas or change their opinions. So instead of attempting to make an all-encompassing set of decisions at the outset of a project, we spread the decision-making across the duration.
User Stories are the 3 Cs. Card, Conversation and Confirmation.
What is a user story? They describe the functionality of something valuable to a user or system. Comprised of:
Note: When a story is too large it is sometimes referred to as an epic. Epics can be split into two or more stories of a smaller size.
Cohn introduces the concept of the customer team, which includes those who ensure the software meets the needs of intended users e.g. product managers, real users, testers and designers. The customer team write the user stories so they are written in the language of the business rather than developer jargon which means enables the customer team to prioritise their inclusion in iterations and releases.
The story-writing process is best started by considering the type of users of the intended system, more on that next.
Writing User Stories ????
When writing user stories there are some important themes to yield the maximum benefit for the least effort. They must be:
Now, let's take and put it into the practical world when gathering user stories.
Gathering Stories ????
Cohn challenges the idea of elicitation and capture which implies requirements are out there in the wild waiting to be explained and locked in a cage. My favourite takeaway from this book is the excellent metaphor of requirements captured as trawling.
In fishing, trawling involves dragging a large net behind a boat to catch a variety of fish. Similarly, in the context of requirements capture, "trawling" refers to casting a wide net to gather a diverse set of ideas, needs and requirements from stakeholders. This works on multiple levels:
However even though we acknowledge the impossibility of writing all the stories upfront, we should at least make an initial upfront attempt. The stories can decrease in detail as the time horizon. This is useful in getting a feel for the size of the application.
Cohn covers 4 techniques for capturing requirements:
领英推荐
Guide for Good Stories ???
Good stories are comprised of a few key elements one of which is acceptance tests (ATs). The purpose of ATs is to express the details from conversations between devs and the customer team. ATs provide basic criteria that can be used to determine if a story is fully implemented. The customer team should as a minimum specify the tests to know if the story has been correctly developed. They are however not responsible for identifying every possible test, the customer focuses on the tests that clarify the intent of the story. It is vital that testing is viewed as part of the development process, not something that happens after 'coding is done'.
Here is a simplified checklist for writing good stories:
Estimating and Planning ????
I've kept this section light touch as it's been covered in detail in this blog: https://www.dhirubhai.net/feed/update/urn:li:activity:7150562164158726144/ however relevant to user stories. The best approach to estimation allows us to:
Stories within iteration planning are relevant meaning we can discuss a story and disaggregate the story into its constituent tasks with One dev taking responsibility for each task. After all are allocated devs estimate to make sure they are not over capacity.
What stories are not ????
While we advocate for user stories there are instances when they might not be solely applicable e.g. on a large project with many stories it can be difficult to understand the relationship between stories. You may need to augment stories with additional documentation if requirements traceability is mandated in the dev process.
Why user stories? ???
So why user stories? They emphasise verbal communication: it seems so easy to think that if everything is written down there can be no disagreements, developers will know exactly what to build and test and more importantly, customers will get exactly what they want. However, the reality is the customer will get the developer's interpretation of what was written down which may not be what they wanted. A far more valuable goal than perfect requirements is to augment adequate stories with frequent conversation.
Stories are also:
How can we understand if we are using user stories correctly? Checkout the list of smells below.
A catalogue of story smells ????
Something might be amiss in your features, projects and programmes.
My Conclusion ????
Remember, user stories are not rigid contracts but rather dynamic instruments for ongoing conversations between customers and developers.
Why for users' stories over requirements documents or use cases?
On a practical level in Boohoo and PLT, we've been reviewing the what, why, who, where, when and how across our issue types in Jira looking to create user story standards across our agile squads and tribes. The workshop structure facilitated by Becca Jaye Sharples is included in the Miroverse template:
Next up will be a dive into Extreme Programming looking at the latest version of Kent Becks Extreme Programming Explained: Embrace Change.
Senior Software Engineering Manager @ PrettyLittleThing
1 年Loads of learning in those sessions. Thank you Matthew Binder MBA ??
Senior Product Specialist
1 年Have loved working on this so far with you guys! ??