Understanding user stories and epics

by Lana Brindley, Nov 15, 2017

When you want to create a new project with Codebots, you need to tell the bots not only what you want your project to look like, but also how the underlying technology will fit together. In previous posts we’ve discussed using the Diagram Editor, but another powerful way to organise your project is with epics and user stories, which are managed in the Stories Backlog. This Academy post is all about how epics and user stories fit together to give the codebot instructions.

The Stories Backlog is the part of the Codebots interface that lets you create epics and user stories, assign people to those tasks, and provide all the information required for them to be completed. It also provides a high-level view of your project's progress.

Epics and user stories are ways of expressing complicated tasks. The terms come from Agile software development methodology, and it is set up this way so that if you already use an Agile methodology in your project, Codebots can easily fit into that system (this is the First Rule of Codebots: Codebots are complementary to Agile methodologies). However, it is also a good way to provide your codebot with the level of detail it needs to understand what you expect of it. 

Let’s look at epics first, and then see how user stories fit into them:

Epics

An epic is a way of expressing a large piece of work to do. Epics usually can't be completed by a single person, or in a single sitting, they require careful thought and planning, and usually have a number of work tasks (expressed as user stories) within them. Because epics are a high level view of a task, they are generally not very detailed, but you do need to specify the basic information. Codebots give you a framework for your epics, to help you get all the details required, expressed as a sentence:
As a [type of user], I want to [do something] so that I can [achieve a goal].
Once you've filled in the blanks, you end up with an epic that looks something like this:
As an [Administrator], I want to [create a new account] so that I can [perform tasks in the system].
Let's look at each of the components of an epic:
Type of user: The type of user is the broad category that this user falls into. Consider who is using your product, and the different tasks those groups need to achieve. You might have end users who only need access to the user interface, administrators who need access to all the functionality your system offers, and developers who need to be able to access the source code. Classifying users in this way can also help you with setting up security and access measures, by asserting who can access which part of your interface, settings, and back end.

Do something: This is the crux of the epic: what do they need to do? This will usually be something like creating accounts, processing sales, recording or retrieving information from a database, or any number of other actions that your users will need to do.

Achieve a goal: This final statement is used to align your tasks with your overarching goals, and can help with task prioritisation.

User stories

User stories are a standardised way of expressing work that needs to be done. Codebots give you a framework for your user stories, to help you get all the details required, expressed as a sentence:
As a [type of user] like [persona] at [environment], I want to [do something] using [platform] so that [reason for task]. This will [achieve user goal].
Once you've filled in the blanks, you end up with a user story that looks something like this:
As an [Administrator] like [Sam] at [the office], I want to [sign in to my account] using [my Windows desktop] so that [I can begin using the system]. This will [help me assist customers].
Let's look at each of the components of a user story:
Type of user: The type of user is the broad category that this user falls into. Consider who is using your product, and the different tasks those groups need to achieve. You might have end users who only need access to the user interface, administrators who need access to all the functionality your system offers, and developers who need to be able to access the source code. Classifying users in this way can also help you with setting up security and access measures, by asserting who can access which part of your interface, settings, and back end. 

Persona: Personas are a good way of understanding each type of user you have. Personas are fictional characters who represent each user type, you can give them a name, a photo, and write about their typical day and usage in order to better understand how your users interact with your system.

Environment: The environment is the location that your user is interacting with your system. It could be at an office, on a work site, in transit (perhaps on public transport, or an aeroplane), from their home, or any number of other locations. This can greatly impact how you deliver information to them, based on things like lighting, ambient noise, whether they'll have access to data services, or be relying on using a small screen.  

Do something: This is the crux of the task: what do they need to do? This will usually be something like creating accounts, processing sales, recording or retrieving information from a database, or any number of other actions that your users will need to do.

Platform: Platform refers to the type of technology your user is using to access your system to do this task. It could be a Windows desktop, an Android mobile application, or a Mac laptop, for example. 

Reason for task: Why does your user want to do this task? In many cases this is straightforward (it's pretty obvious why someone might want to create an account), but in many cases this can give a good insight into user motivation, which can help you provide a better solution. So if users want to print out a customer list, for example, is it because they need to carry it with them, or because it's hard to read on their screen? Perhaps the solution isn't to develop a system for printing, but to improve the user experience of the customer list screen. 

Achieve user goal: This final statement is used to align your tasks with your overarching goals, and can help with task prioritisation.
The Codebots platform will be released in 2018. Click here for early access.