top of page
Search

Mastering User Stories: Fun, Effective, and Brain-Friendly Techniques for Agile Teams

  • JACOB P JAMES
  • Jul 6, 2024
  • 9 min read

Meet Alex and James

Meet Alex and James, two dynamic Business Analysts at the heart of our story.

Alex is the seasoned pro, with years of experience under his belt and a knack for navigating complex projects with ease. Known for his calm demeanour and insightful advice.

James, on the other hand, is the eager junior BA, fresh into the field and brimming with enthusiasm. With a curious mind and a drive to learn


Alex: Hey James, how's it going? I heard you’re diving into writing user stories. Need any tips?

James: Hey Alex! Yeah, I could use some help. User stories seem straightforward, but I'm not sure I'm getting them right.

Alex: No worries, James. User stories are a bit of an art and science combo. Let's break it down, shall we?

James: Sounds great! Where do we start?

Alex: First things first, remember that a user story is a simple description of a feature from the perspective of the person who desires it. It's usually formatted like this: "As a [type of user], I want [an action] so that [a benefit]."

James: Okay, that makes sense. But how do I make sure it's effective?

Alex: Good question. Let's use the acronym INVEST. It stands for Independent, Negotiable, Valuable, Estimable, Small, and Testable. Let's walk through each part with some examples.

James: Awesome, I'm ready!

Alex: I for Independent: Each user story should stand alone. If you need to deliver another story first, it’s not independent. For example, “As a user, I want to reset my password so that I can access my account if I forget it.” This should work without needing other stories completed first.

James: But Alex, in complex software projects, it can be very difficult to make each story truly independent. How do you handle that?

Alex: Great question, James. In large projects, it can indeed be challenging. One approach is to create vertical slices of functionality that can stand on their own. For example, you might have a story for the backend logic of password reset and a separate one for the frontend interface. Both are independent in their own right but contribute to the overall feature.

James: That makes sense. Can you give an example from your experience?

Alex: Sure! In one project, we had a feature for user authentication. Instead of one big story, we broke it down into smaller, independent stories like "As a user, I want to enter my email and password to log in," and "As a user, I want to receive a verification email after registration." Each story was manageable and could be developed independently.

James: How do you create these vertical slices of functionality? Any tips?

Alex: Definitely. The key is to think about delivering a small, usable piece of functionality from end to end. Imagine you're making a cake. Instead of baking the entire cake first and then adding frosting and decorations, you create a small, finished slice of cake that includes a bit of everything: cake, frosting, and decoration. In software, this means including aspects of the frontend, backend, and any necessary data changes in each slice.

James: Got it. So, in our password reset example, one slice could be the backend logic for resetting the password, and another slice could be the frontend form for entering a new password, right?

Alex: Exactly. This way, you ensure each piece of functionality is complete and testable on its own. It also helps in delivering incremental value to the user.


James: But mostly user stories are from a business user perspective, so how can we write a story for backend and frontend logic since they are technical?

Alex: Excellent point, James. While user stories should always focus on delivering value to the user, you can still break down the functionality in a way that aligns with technical implementation. Here's how:

  1. High-Level User Story: Start with a high-level user story that describes the entire feature from the user's perspective. For example, "As a user, I want to reset my password so that I can regain access to my account if I forget it."

  2. Frontend User Story: Break down the high-level story into smaller, user-centric stories. For the frontend, you might write:

  • "As a user, I want to see a password reset form so that I can enter my email to request a password reset link."

  • Acceptance Criteria:

  1. A form with an email input field is available.

  2. A submit button is present.

  3. Instructions for the user are clear and visible.

  4. On submission, a confirmation message is shown that the link has been sent if the email exists in the system.

  5. Backend User Story: For the backend, focus on what the user expects as an outcome:

  • "As a user, I want the system to send me a password reset email so that I can reset my password if I forget it."

  • Acceptance Criteria:

  1. The system verifies the email address.

  2. If the email exists, a reset link is generated.

  3. The reset link is sent to the user's email.

  4. The link expires after a predefined period (e.g., 24 hours).

  5. If the email does not exist, an appropriate message is logged.

James: That helps a lot. So even if the backend and frontend have technical aspects, we frame them from the user's perspective based on the functionality they deliver.

James: That makes a lot of sense. What’s next?

Alex: Next letter N for Negotiable: User stories are not contracts. They should be open to discussion. Think of them as starting points for conversations. For instance, “As a shopper, I want to see my cart items at any time so that I can keep track of my purchases.” You can talk to your team about the best way to display the cart items.

James: Can you give me some examples from your experience where negotiating a user story led to a better outcome?

Alex: Sure! In one project, we had a user story like “As a user, I want to filter search results by date so that I can find the most recent items.” Initially, the team thought about a simple date filter. But during our discussions, it came out that users also wanted to filter by custom date ranges and even by time. This negotiation led us to a more flexible and useful feature. Another example was a story for exporting data. The original story was “As a user, I want to export my data to a CSV file.” Through discussions, we realized users needed exports in multiple formats like PDF and Excel, not just CSV. These conversations ensured we delivered exactly what the users needed.

James: That’s really insightful. So, the key is to stay flexible and open to feedback.

Alex: Exactly! V for Valuable: Each story must deliver value to the user or customer. If it doesn’t add value, it doesn’t belong in the backlog. For example, “As a student, I want to submit assignments online so that I can save time and paper.” Here, the value is clear—saving time and resources

James: I see. The focus should always be on the user.

Alex: Right on! E for Estimable: You should be able to estimate the effort required to implement the story. If you can’t, it might be too vague or too large. For example, “As an admin, I want to generate monthly reports so that I can review team performance.” You should be able to estimate how long this will take to develop.

James: What if it's too big to estimate?


Alex: Good point! If it’s too large, break it down into smaller stories. Which brings us to S for Small: User stories should be small enough to be completed within a single iteration. For example, instead of “As a user, I want a fully functional shopping app,” break it down to “As a user, I want to search for products by name so that I can find items quickly.”

James: That makes a lot of sense. Smaller stories are more manageable. What about the acceptance criteria for a story?

Alex: Great question, James. Acceptance criteria are essential because they define the boundaries of a user story and ensure everyone is on the same page about what "done" means. They should be clear and testable. For example, for the user story "As a user, I want to search for products by name so that I can find items quickly," acceptance criteria could be:

  1. A search bar is present on the homepage.

  2. Users can enter a product name in the search bar.

  3. Relevant search results are displayed within 2 seconds.

  4. If no products are found, a "No results" message is displayed.

James: That helps a lot. But what if the story needs to include complex calculations and logic?

Alex: Excellent point, James. When a story involves complex calculations or logic, it’s crucial to break it down into more manageable parts. First, identify the core pieces of logic and then create separate stories for each part. For example, if you're working on a tax calculation feature, you might have one story for basic tax rate application, another for handling tax exemptions, and a third for calculating and displaying the final amount. This way, each piece is easier to manage, develop, and test.

James: This is really helpful, Alex.

Alex: Exactly. And lastly, T for Testable: There should be a clear way to test if the story is done. For example, “As a user, I want to receive a confirmation email after registering so that I know my registration was successful.” You can easily test if an email is sent after registration.

James: This is really helpful, Alex. But what if I'm stuck on writing a story? Any quick tips?

Alex: Sure thing! Think of the three Cs: Card, Conversation, Confirmation. Write the user story on a card, have a conversation with your team to flesh out the details, and establish confirmation criteria to define when it's done.

James: Three Cs, got it! This is starting to feel less daunting now.

James: Alex, apart from the INVEST criteria, are there any other tips or techniques to consider for writing effective user stories?



Alex: Oh, absolutely, James! Buckle up, because we’re diving into the fun zone of user story magic!

James: Sounds exciting! What’s the first trick up your sleeve?

Alex: Let’s kick it off with keeping the user stories user-focused. Imagine you’re writing a love letter to the user. The stories should always be from their perspective. Picture this: Instead of saying, “System sends notification,” you say, “As a busy bee, I want a nudge when my pizza’s arriving so I can stop drooling and get ready to feast.”

James: Haha, that definitely paints a picture! What else?

Alex: So James if you take this story “As a busy bee, I want a nudge when my pizza’s arriving so I can stop drooling and get ready to feast” and break it you can understand the way you need to write a user story.

·  As a busy bee: This refers to the user being very busy and perhaps distracted with other tasks, similar to a bee buzzing around and working hard.

·  I want a nudge: The user desires a notification or alert.

·  When my pizza’s arriving: This specifies the event that triggers the notification—when the pizza delivery is about to arrive.

·  So I can stop drooling and get ready to feast: This is the benefit or outcome the user expects from the notification. They want to be notified in advance so they can prepare themselves to receive the pizza and enjoy it promptly.

Alex: In essence, the user story is expressing a desire for a timely notification about the delivery of their pizza, which allows them to pause whatever they are doing and prepare to enjoy their meal. This story humorously captures the user's need for convenience and anticipation for their food. So in short what I mean is that it should focus on the user and his needs.

James: That’s true, I understood the essence of the same what is next ?

Alex: Next up, personas are your friends. Think of personas as your story’s superheroes. Create detailed personas like “Tech-savvy Tina” or “Forgetful Fred” to ground your stories in real user needs. This way, you’re not just writing for any user, you’re writing for your superhero’s specific quirks and needs.

James: Superheroes, got it! How about teamwork?

Alex: Oh, collaboration is the secret sauce! Collaboratively writing stories is like a jam session with your band. Get the whole team—developers, testers, product owners—jamming together in story writing workshops or backlog grooming sessions. The more, the merrier, and the clearer the harmony!

James: Love the analogy! What’s next on the list?

Alex: Simplicity is key, my friend. Think of user stories like tweets—short, sweet, and to the point. Avoid jargon and fancy words. You want everyone to understand the story without scratching their heads. Keep it simple and clear, like “As a sleepy user, I want a one-tap snooze button so I can get back to my dreams.”

James: Short and sweet, got it! Anything about planning?

Alex: Oh yes! Start with epics and break them down. Think of epics as big, juicy watermelons. Slice them into bite-sized pieces—smaller stories that are easier to chew and digest. This way, you’re not overwhelmed, and you can enjoy each piece at your own pace.

James: That’s a tasty metaphor! What about making sure the stories are ready?

Alex: Refining stories until they’re ready is like sharpening your pencils before a big test. Review, tweak, and polish your stories continuously. Make sure they’re clear, feasible, and testable. Add those acceptance criteria to nail down what “done” really means.

James: Sharpen those pencils! Any techniques for breaking down stories?

Alex: Oh, absolutely! Slicing epics into smaller stories can be like cutting a pizza. Use techniques like workflow breakdown (each step of the process), role-based breakdown (different users’ perspectives), or even breaking down by data boundaries (different sets of information). It’s all about making those stories manageable and delivering value in every slice.

James: This is fun and super helpful, Alex. Any last tips?

Alex: Just one more for the road! Always add acceptance criteria. Think of them as the rules of your favorite game. They set the conditions for winning—what needs to be done for the story to be complete. Clear, testable, and understood by everyone, like “Player must collect all coins to unlock the next level.”

James: This has been fantastic, Alex. Thanks for making it so fun and easy to understand!

Alex: Anytime, James! Remember, user stories are your way of making sure you’re building something users will love. Keep it simple, clear, and always focused on delivering value. Now, let’s get out there and write some awesome stories!

 

James: Thanks a lot, Alex. I feel much more confident now!

 

 


 
 
 

1 commentaire


Priya P Mathew
Priya P Mathew
13 févr.

This article on mastering user stories is a fantastic resource! It breaks down complex concepts into fun, relatable examples that make it so much easier to understand. I love how the use of the INVEST acronym is paired with practical tips and creative analogies, like the 'pizza delivery' example, which really helps in grasping how user stories should be structured. The emphasis on keeping things simple and user-focused, along with the importance of collaboration, makes this a great guide for any agile team. Well written and easy to follow – highly recommend it

J'aime
bottom of page