/
User Stories

A user story is a concise, informal description of a software feature or functionality from an end user's perspective. It's a common practice in Agile and Scrum methodologies for capturing and prioritizing requirements. User stories are typically written in a specific format to ensure clarity and consistency. Here's how to write good user stories:


  1. As a [role]: Start by identifying the user or stakeholder who will benefit from or interact with the feature. This helps set the context and perspective.

  2. I want [an action]: Describe the action or functionality that the user wants to accomplish. Be specific and use action-oriented language to convey what the user desires.

  3. So that [benefit/value]: Explain the reason or benefit behind the desired action. This clarifies the goal or objective of the user story and helps prioritize it appropriately.


Here's an example of a well-written user story:

"As a registered user (role), I want to be able to reset my password (action) so that I can regain access to my account if I forget my password (benefit/value)."


Tips for writing good user stories:

  1. Keep them focused: Each user story should represent a single piece of functionality. Avoid combining multiple features into one story, as this can make estimation and development more challenging.

  2. Use plain language: Write user stories in simple and understandable language. Avoid technical jargon that might confuse non-technical stakeholders.

  3. Independent: User stories should be independent of each other, meaning they can be developed and tested in isolation without depending on other stories.

  4. Negotiable: User stories should not specify every detail. Leave room for collaboration and discussion between the development team and stakeholders during refinement and sprint planning.

  5. Testable: Ensure that user stories are written in a way that allows for clear acceptance criteria to be defined. This makes it easier to determine when a story is complete.

  6. Valuable: Prioritize user stories based on their value to the end-user or the business. Stories with higher value should be tackled first.

  7. Estimable: The development team should be able to estimate the effort required to complete a user story. If a story is too vague or complex, it may need to be broken down into smaller stories.

  8. Small and manageable: Keep user stories small and manageable to promote faster delivery and easier tracking of progress.

  9. Acceptance criteria: Define clear acceptance criteria for each user story. These criteria outline the specific conditions that must be met for the story to be considered complete.

  10. Emergent details: Understand that some details may emerge during development, and it's okay to update and refine user stories as more information becomes available.


User stories are a valuable tool for Agile teams to ensure that software development remains customer-centric and adaptable to changing requirements. They facilitate communication, collaboration, and the delivery of incremental value to users.



*Here’s a template I built and, I like to use:

1
2
3
4
5
6
7
8

User Storie Template

Problem Statement/Business Case (What is the problem we are solving for the client/customer): 

"As a registered user (role), I want to be able to reset my password (action) so that I can regain access to my account if I forget my password (benefit/value)."


The Work (What are we doing to solve it):

  • Generating a random string as a password. The user has received it in type of email. The database will be updated with passwords using hashed passwords.

  • Using password reset token: the hashed string is generated at random. The database is stored in a hashed string but they might not be stored in a password column. The user receives a link in the form of an email. The user will be asked to enter the password. The old password can be used to log in until that time.

What Should We Test (Are there existing tests that need to be updated? What new tests to be written? What should be automated or not? If we aren’t automating...why?)


  1. Unit integration and deployment tests.

  2. Manually test UI to ensure everything is performing as expected.


Acceptance Criteria/Testing (What criteria need to be met in order for this User Story to be considered complete? ):


GIVEN a user is registered
And he is on the “Sign in” screen
And he fills his email address
And clicks on Continue button
WHEN clicks on <Forgot password?>
THEN a pop-up appears informing the user that a reset password email has been sent
And a reset password email from Catalis is in his inbox


Non-functional requirements (Any criteria that need to be met from a technical perspective.) 

Dependencies (Any other teams or people involved):

Risks (What could make this last longer than expected): 

Deployment/Release Plan (How will it be deployed, enabled (feature toggles),  and transitions from previous systems)