Story
A story (or user story) is a feature or requirement from the user’s perspective. Stories should be defined using non-technical language so anyone involved in the project can understand. For example:
Example: As a player, I want to use a joystick to control my character (or “Add joystick support”)
The player is the user of the game, and in this story, the support for an input device is required. To solve this issue, it may be necessary to assign several smaller work items to individual teammates as subtasks.
Task
Tasks are work items that are not directly related to a user requirement but still must be completed, like the upgrading of a server, the coding of a function, or even the ordering of a pizza for the team. A task contains a more detailed and technical description of the particular work item.
Example: Reduce latency to improve character movement
In this case the task involves updating a core function of the game rather than a user feature. While tasks can generally be completed by one team member, they may also be broken down into individually manageable subtasks.
Bug
O, the lamented bug. By classifying bugs as their own issue type, we can differentiate the work they require from other issues. This enables the team do things like filter by bugs in the backlog or draft reports on the number of bugs fixed per week.
Example: Character sometimes moves backward when pushing the joystick forward
Subtask
A subtask is the child of another issue, and is used to break down stories, tasks, or bugs into individually manageable pieces of work. Since they are written for the person working on the task, subtasks can be more technical than their parent issues.
In the above story of adding support for an input device, the following subtasks may be completed by different team members:
Example:
- [Game Designer] Map game mechanics to joystick inputs
- [Software Engineer] Implement input mapping for character movement
- [Artist] Create a visual for joystick configuration in the options menu
A subtask can only be created under a parent issue. However, each subtask has its own issue key and can be moved through boards independently.
Epic
Finally, an epic is a parent issue that groups stories, tasks, and bugs together to capture a large, holistic body of work. As the name implies, epics usually represent a significant deliverable. In the backlog, you can filter by issues belonging to a single epic.
Example: Character movement update
In this example, the epic encompasses the story of adding joystick support, as well other stories, tasks, and bugs in an overall initiative. It might look something like this:
- Epic: Character movement update
- Story: As a player, I want to use a joystick to control my character.
- Subtask: [Game Designer] Map game mechanics to joystick inputs
- Subtask: [Software Engineer] Implement input mapping for character movement
- Subtask: [Artist] Create a visual for joystick configuration in the options menu
- Task: Reduce latency to improve character movement
- Subtask: [Software Engineer] Reduce server calls and move processing to client side
- Subtask: [IT] Update SDK for engineering team
- Bug: Character sometimes moves backward when pushing the joystick forward
- Subtask: [Testing] Determine conditions where this behavior happen