What makes a good user story in agile software development?

16 July 2019
Complete Guide for CTO & IT Directors
Microservices under X-Ray Three books image Download free ebook

Introduction

Working with our clients, we frequently get asked about how a perfect user story should look like in order to facilitate the cooperation between business and development teams. Below is a small write up on the subject based on our longtime experience.

User stories are central element to the agile/scrum methodology as they define every piece of work being done by an agile team. There are several important guidelines that needs to be followed to create proper user stories that fit well with the overall process.

Components of user story

The user story is an expectation about the system expressed from the point of view of the end user. The crucial elements of the story are:

  1. The role of the user in the system that is going to benefit from the system
  2. The short description of what the goal or intent of the user is
  3. The specific business value/benefit that we expect to achieve by implementing the user story

The user in the first point does not necessarily need to be the end user of the application itself. It is the user that is going to benefit from the change. In can also be an admin or even a person from the development team.

The business value statement will allow the team to focus on the big picture business expectation instead of specific system functionality. This allows the development teams to come up with creative ideas and not to go off the rails while executing the story.

In addition to the elements mentioned above, a user story should contain acceptance criteria, which are high level test criteria that confirm that the story works as expected. The acceptance criteria can be both functional and non-functional. Please note that this does not need to be full suite of tests for the feature – this is going to be developed by the agile team during the implementation.

Examples

  • As a site visitor I can create a new account so that I can get personalized experience on my next visit
  • As an admin I can create a new user group so that I can assign permissions to the user faster

A user story should be small enough to be executed within one sprint. If the team believes that the user story is too large it needs to be split. The reason is that in agile methodology the work is being delivered incrementally in sprints, which are allotted time slots of team’s work. Each sprint should result in delivery of business value as defined by the user stories included in the sprint.

How to organize stories?

To enable better management of large user stories there were additional story types introduced: enablers, spikes and epics. An enabler is a story that is not delivering business value at the end of the sprint. Instead, it enables the team to deliver the value in the subsequent sprints, building on top of the outcome of enabler story. Also, the work related to system architecture, refactoring can be captured as an enabler.

The enabler stories should not be overused though: the strength of the agile process is in rapid delivery of the business value and feedback from the actual users. A series of enablers followed by a single user story that brings them to the user would be contrary to the purpose.

A spike is a research or investigation work that needs to be performed to properly design or estimate an approach or user story. The purpose of this story is to reduce the risk or uncertainty related to use of specific technology, estimation of a user story or a functional scope. Spike might also include building a small prototype.

Also, the user stories can be organized into epics, which are larger initiatives that group individual user stories, spikes and enablers related to particular business area.

Marcin Wudarczyk

Latest Posts

Scrum: How to Work Together

With the popularity of the scrum framework among software development teams, it’s growingly important to learn how a scrum team works to meet its goals. Scrum Process Overview Scrum is an agile project management framework widely used in IT but can be applied to other fields as well. The framework facilitates the management of complex […]

/
event storming

Event Storming: How to Boost Your Software Development Process with a Simple Technique?

Event storming is a dynamic workshop technique that supports domain-driven design in software development. It can boost the team’s efficiency and reduce error risk, minimizing the back-and-forth in the development lifecycle. If you haven’t been living under a rock, you’re probably familiar with the concept of brainstorming. It’s a widely used term for the process […]

/
rails vs sinatra

Rails vs Sinatra

In the rapidly evolving world of software development, web frameworks have become essential tools for building robust and scalable web applications. These frameworks provide a structured environment that streamlines the development process, offering pre-written code, libraries, and guidelines that help developers avoid repetitive coding tasks, thus significantly enhancing productivity and ensuring best practices. Within the […]

/
android webstockets

Introduction to Android WebSocket

WebSockets have become a pivotal technology in enabling real-time communication for Android apps, offering a dynamic way to send and receive messages instantaneously. This technology facilitates a persistent connection between the client (Android app) and the server, bypassing the traditional HTTP request-response model to allow continuous data flow through a single TCP connection. The WebSocket […]

/
smart contracts audit

Introduction to Smart Contract Audits

In the blockchain world, smart contracts are key to decentralized applications (dApps), automating transactions and enforcing agreements without intermediaries. These contracts handle significant digital assets and perform crucial operations, making their security paramount. Smart contract audits are thus essential, scrutinizing the contract’s code for vulnerabilities to prevent potential security breaches. These audits are crucial for […]

/
What is Python Used for in Finance

Embracing the Essence of Scrum: The Indispensable Values for Agile Teams

In the ever-evolving landscape of project management, Agile methodologies like Scrum have become the cornerstone for many teams striving for adaptability and efficiency. While Scrum offers a comprehensive framework and great agile tools, it is the underlying values that truly breathe life into the process. During The Sprint What Scrum Value Must The Team Demonstrate […]

/
Related posts

Scrum: How to Work Together

With the popularity of the scrum framework among software development teams, it’s growingly important to learn how a scrum team works to meet its goals. Scrum Process Overview Scrum is an agile project management framework widely used in IT but can be applied to other fields as well. The framework facilitates the management of complex […]

/
What is Python Used for in Finance

Embracing the Essence of Scrum: The Indispensable Values for Agile Teams

In the ever-evolving landscape of project management, Agile methodologies like Scrum have become the cornerstone for many teams striving for adaptability and efficiency. While Scrum offers a comprehensive framework and great agile tools, it is the underlying values that truly breathe life into the process. During The Sprint What Scrum Value Must The Team Demonstrate […]

/

Optimization Testing: The First Step towards Better Efficiency

In the ever-evolving landscape of software development, optimization testing emerges as a pivotal strategy, playing a crucial role in enhancing the efficiency and effectiveness of software projects. At its core, optimization testing is a process aimed at streamlining the testing phase of software development, ensuring that the functionality, reliability, and performance of software products are […]

/
web app speed

Revisiting Web App Speed

The performance of a web application can either encourage or deter user interest. Businesses should prioritize performance improvements to enhance the overall user experience and maintain user interest. Let’s delve into a mixture of development optimization, marketing, and… cognitive sciences? All for the sake of providing a smooth user experience. What Is Web Application Speed? […]

/
software development stages

Software Development Life Cycle. How to Handle a Multi-Stage Software Development Process?

Creating a system that performs complex functions requires more than rock-solid expertise. You need a structured approach that will help you achieve your software development goals as efficiently as possible. Software development is a long, complex, and tedious process ridden with challenges. Common issues include incomplete requirements, changing project scopes, poor communication, unrealistic deadlines, insufficient […]

/
angular apps

Angular Apps: Top 7 Web Application Examples, Advantages, and Considerations

Angular is a leading development tool for building sophisticated web apps. Check out the top applications fueled by this Google-backed platform and learn about its strengths and weaknesses. Angular is a household name in the front-end development industry and the key competitor of React (aka ReactJS). As one of the leading web development frameworks, it […]

/
Talk with experts

We look forward to hearing from you to start expanding your business together.

Email icon [email protected] Phone icon +1 (888) 413 3806