Lesson 7

User Stories

Formally defining requirements in user stories

PRO

Lesson Outline

User Stories

We've already got a pretty good idea of what our initial set of user stories are going to be. However, before we can generate our product backlog - which will be a crucial part of our project management process - we need to formalise our user stories with the client and clarify any questions. This is also a good opportunity to split some of the user stories up into smaller user stories if necessary (remember, we want the user stories to be small enough to complete in a single sprint of 1-3 weeks).

With the workflow we will be using, which we will talk more about soon, we will be creating a new branch in Git for each user story (issue) that we are working on. To keep in line with Agile principles and Continuous Integration, we want these branches to be as short lived as possible before they are merged back into the main branch. We don't want features being developed for long periods of time that live off in their own isolated branches. Therefore, our user stories need to represent small, well-defined chunks of functionality that could generally be completed in a time frame of hours or days, not weeks or months.

Now at this point I'm going to be putting my developer hat on a bit and creating user stories based on the way I assume the application will work. If the client wants the ability to add notes, then I know that is probably going to include the ability to view and edit notes. So, I will split those user stories up to encompass the different bits of functionality that will be created. But it's important not to just treat the user stories as technical specifications with a quirky format. As we create these additional user stories, we should still take the:

so that...

portion seriously, and think about the actual reason this is being created or the value it is providing to the user that the story is about.

A lot of these additional user stories are going to be related to CRUD type of operations. If the user wants to be able to add a client, then they probably want to be able to remove/edit those clients as well. But we are still going to write user stories for these scenarios and consider why we are doing certain things, even if it seems obvious - because sometimes it might reveal something interesting.

For example, if we have the ability to add clients then we probably want the ability to a view a list of the clients right? Maybe, but maybe not. If we ask ourselves what value are we providing or what goal are we serving we might think something like:

"So that we can select a client to view their details? Obviously?"

However, we could just have a text input with auto-complete to bring up a specific client - it'd probably be a quicker/more efficient way to bring up the details for a client, especially if there are a lot of clients. That doesn't mean we won't have a list of clients, we can have both things, but we should consider why we want the list rather than adding it just because it's generally what apps do - this might be the kind of conversation you have with the client, which could reveal important information about their goals, and you might be able to create a better user experience as a result rather than just blindly putting a list in.

A lot of the time the obvious answers to end up being the answer, but it's good to be in the habit of always checking our assumptions.

Ok, let's take a look at how I've broken things down now.

EPIC: As a massage therapist, I want to be able to manage client data

  • As a massage therapist, I want to be able to record a client's details so that I don't need to ask them for the same information on their next visit

  • As a massage therapist, I want to be able to see a list of all clients, so that I can have a birds eye view of my entire client base

  • As a massage therapist, I want to be able to edit a clients details, so that I can manually make updates if necessary

  • As a massage therapist, I want to be able to search for a specific client, so that I can quickly find details for that client

  • As a massage therapist, I want to be able to access the full details of a specific client, so that I can access all of the information that is required to complete my services

  • As a massage therapist, I want to record custom notes for specific clients, so that I can easily find relevant information for that client

  • As a massage therapist, I want to be able to view the notes I recorded for a client in the same place as the rest of their details, so that I will see the additional notes for a client before beginning my service

  • As a massage therapist, I want to be able to edit notes associated with a client, so that I can update information relevant to the client over time

  • As a massage therapist, I want to be able to add a client's future appointments to a calendar, so that I can keep track of when I have clients coming in

  • As a massage therapist, I want to be able to view a clients future appointments in the same place as the rest of their details, so that this information will be available to me when performing my services allowing me to prompt them to book future appointments if necessary

  • As a massage therapist, I want to be able to see all of my appointments from all clients in one place, so that I don't need to check individual clients

  • As a massage therapist, I want to be able to edit a clients future appointments, so that I can accommodate changes in circumstances for the client

  • As a massage therapist, I want to be able to present clients with a questionnaire, so that I am able to gather the information I need to perform a massage.

  • As a massage therapist, I want to be able to send a client a link to the questionnaire that they can complete online, so that the client doesn't need to spend time filling out the questionnaire once they arrive

  • As a massage therapist, I want the results of the users questionnaire to be visible to me, so that I have the information required for the massage and so that I can get them to verify the information in person

  • As a massage therapist, I don't want clients to be able to exit the survey that I present to them in person, so that they can't view other parts of the application that might contain sensitive client data

  • As a massage therapist, I want to provide a mechanism for clients to supply feedback anonymously, so that clients are comfortable to be honest which will allow me to improve my service

  • As a massage therapist, I want the ability to view feedback that has been submitted anonymously, so that I can use that information to improve my services

  • [Added after reviewing user stories with client] As a massage therapist, I want to be able to send out a notice about COVID requirements before a client comes in, so that they know to reschedule their appointment if they are sick or meet any other requirement related to COVID that would prevent them from being able to receive my services

  • As a massage therapist, I want to have reminders sent out to my clients for upcoming appointments, so that my clients don't miss appointments

  • As a massage therapist, I want to be able to log in to the application using my Google account from any device, so that only I can access private information in the application and I can do it from any device

EPIC: As a massage therapist, I want to be able to record notes relevant to my work

PRO

Thanks for checking out the preview of this lesson!

You do not have the appropriate membership to view the full lesson. If you would like full access to this module you can view membership options (or log in if you are already have an appropriate membership).