Building Software

Created

User Story

A user story is a way of capturing requirements in a format that is useful for engineers and customers. These are short documents that capture who a feature is for, and how long it will take to build.

  • Short, simple, independent stories
  • Write from the user perspective
  • Make the value/benefit of the story clear
  • Describe one piece of functionality
  • Write stories as a team.

Organize User Stories in groups of

  • "must have"
  • "nice to have"
  • "out of scope"

Write in a role-goal-benefit format

As a <type of user>, I want <goal/object> so that <benefit/value>

Planning fallacy is a phenomenon in which predictions about how much time will be needed to complete a future task display an optimism bias. Avoid this by:

  • Getting estimates from multiple people
  • Estimate "effort required" in terms of "ideal days" or "story points" (estimate the effort required as a combination of the complexity of work and the risk and uncertainty involved in it)
  • Use relative estimates.

A "unit" for estimating the size of a product backlog should be based on the time it takes to complete an item if it were the only work being performed.

  • Estimates larger than 13 idea days cannot fit into an iteration. Break that story apart.
  • If the total estimate of all user stories in the "must have" category is > 5 iterations, make the project smaller.

A Minimum Viable Product (MVP) should have enoguh value that customers want to start using it.

Project Backlog

A Product Backlog is the current list of user stories for the project.

Before starting an iteration, select a subset of user stories from the project backlog that are planned to be delivered during the iteration. Divide each user story into tasks.

A task lifecycle: backlog > build > test > done

Each user story will be a "card" in a board that will have tasks. Each task will be linked to an issue in the repository.

Have a To Do column that is filled with high-level tasks that you will work on for future iterations.

Learn more about managing a project board