A Gentle Introduction to Agile/Scrum User Stories For Beginners
Tags: agile, webdev, programming, beginners
Published: 2021-10-01 10:58:17

**This guide is DEPRECATED**, [here is the updated version.](https://dev.to/rammina/the-art-of-writing-agile-user-stories-17o9)

Have you ever thought of what a user would do with your application?

No matter how well-architectured the app you built is, _if it brings no value to users, chances are, no one will use it._

In simple terms, **user stories** are brief, informal descriptions of a software feature told from the perspective of the users. These answer the **"who,"** **"what,"** and **"why"** of a single task/functionality in an application.

## User Story Format

```
As a(n) <user type>, I want to <function> so I can <benefit>
```

## Example

As a _customer_, I want to _view the list of menu items_, so I can _easily choose what food to order_.

The **user type** answers the "who," the **function** refers to the "what," and finally, the **benefit** explains the "why" in a user story.

<img src="https://heavencpa.com/wp-content/uploads/2019/03/pros-vs-cons-heaven-and-alvarez-1024x683.png" alt="Pros and Cons" />

## Advantages of User Stories:

- helps ensure that a functionality brings user value
- follows Agile/Scrum core principles
- makes it easier to organize software functionality, as it leaves out implementation details
- allows team members of different expertise and backgrounds to plan an application more easily
- encourages conversations rather than simply handing out document details
- simple to prioritize and reorder, especially for product backlog items
- easily understood by both clients and developers

## Disadvantages of User Stories:

- does not explain the "how?"
- does not involve nonfunctional requirements (e.g. fault tolerance, performance, usability, modifiability)
- user stories are not substitutes to business requirements
- the lack of implementation details means that the processes could vary a lot from team to team
- can be misunderstood and misused 
- can lose its original essence/purpose (especially in companies and teams that are "agile" only for compliance purposes)

<img src="https://res.cloudinary.com/rammina/image/upload/v1633428841/user-story-footnote1_bhz9pf.png" alt="User Story Opinion" />

From here on, I will most likely utilize user stories before I begin coding my application. Even if I don't write them down, it helps a lot to keep in mind the perspective of a user when building an application and planning its features.

## Resources/Recommended Reading:

- [User Story Guide by Mike Cohn](https://www.mountaingoatsoftware.com/agile/user-stories#:~:text=User%20stories%20are%20short%2C%20simple,so%20that%20) - Great resource on Agile.
- [How To Create a Perfect User Story Step by Step Guide](https://blog.anvileight.com/posts/how-to-create-a-perfect-user-story-step-by-step-guide/) - Beginner-friendly guide on writing user stories.
- [A Short Introduction to the Scrum Framework by Jim Medlock](https://medium.com/chingu/a-short-introduction-to-the-scrum-methodology-7a23431b9f17) - Not about user stories, but is a well-written introduction to the Scrum framework.

### DISCLAIMER:

This post only expresses my thoughts and opinions (based on my limited knowledge) and is in no way a substitute for actual references. If I ever make a mistake or if you disagree, I would appreciate corrections in the comments!

### Other Media

Feel free to reach out to me in other media!

<span><a target="_blank" href="https://www.rammina.com/"><img src="https://res.cloudinary.com/rammina/image/upload/v1638444046/rammina-button-128_x9ginu.png" alt="Rammina Logo" width="128" height="50"/></a></span>

<span><a target="_blank" href="https://twitter.com/RamminaR"><img src="https://res.cloudinary.com/rammina/image/upload/v1636792959/twitter-logo_laoyfu_pdbagm.png" alt="Twitter logo" width="128" height="50"/></a></span>

<span><a target="_blank" href="https://github.com/Rammina"><img src="https://res.cloudinary.com/rammina/image/upload/v1636795051/GitHub-Emblem2_epcp8r.png" alt="Github logo" width="128" height="50"/></a></span>