#+TITLE: Requirements, features, user stories, tasks, walking skeletons
#+OPTIONS: num:nil tags:t toc:t
#+DATE: <2025-11-06 Thu 22:01>
#+FILETAGS: :learning:notes:
#+WIP:

** Requirements
- Definition: High-level descriptions of what the system must do or how it should behave.
- Types:
  - *Functional*: Specific behaviors (e.g., “The system must allow users to reset passwords”).
  - *Non-functional*: Quality attributes (e.g., performance, security, usability).
- Agile Context: Requirements are often evolving and are captured incrementally through user stories and feedback loops.
  
** Epic
An epic is a high-level objective or initiative that’s too big to complete in a single sprint. It represents a major business goal or capability and is broken down into smaller deliverables:

- Purpose: Organise related work under a common theme.

- Scope: Broad and strategic; spans multiple sprints.

- Example: “Enable secure user access” could be an epic that includes login, signup, password reset, and multi-factor authentication.

 “An epic serves to manage tasks. It's a defined body of work that is segmented into specific tasks (called ‘stories’) based on the needs/requests of customers or end-users"
 
** Features
- Definition: Distinct pieces of functionality that deliver value to users.
- Scope: Larger than user stories but smaller than epics.
- Example: “User profile management” could be a feature encompassing login, profile editing, and avatar upload.

** User Stories
- Definition: Short, simple descriptions of a feature told from the perspective of the user.
- Format: “As a [user], I want [goal] so that [reason].”
- Purpose: Helps teams focus on user needs and prioritize work.
- Agile Role: Central to backlog grooming, sprint planning, and iterative delivery.

** Tasks
- Definition: Technical or operational steps needed to implement a user story.
- Granularity: Smallest unit of work, often assigned to individual team members.
- Example: For a story like “User can upload avatar,” tasks might include:
  - Create upload UI
  - Validate image format
  - Store image in database

** Walking Skeleton
- Definition: A minimal, end-to-end version of the system that includes the core architecture and basic functionality.
- Purpose: Validates the system’s structure early and allows incremental development.
- Agile Benefit: Enables early integration, testing, and feedback while avoiding big-bang delivery.

** Hierarchy Overview

| Level          | Description                | Agile Artifact   |
|----------------+----------------------------+------------------|
| Vision         | Broad business goals       | Epics            |
| Feature        | Functional chunks of value | Features         |
| User Need      | Specific user goals        | User Stories     |
| Implementation | Technical execution steps  | Tasks            |
| Skeleton       | Minimal working system     | Walking Skeleton |


Here is a summary of the agile hierarchy:


| Level          | Example                              | Description                            |
|----------------+--------------------------------------+----------------------------------------|
| **Epic**       | Enable secure user access            | Broad goal spanning multiple features  |
| **Feature**    | User Login                           | Functional unit delivering user value  |
| **User Story** | “Log in with email/password”         | Specific user goal within the feature  |
| **Task**       | Build login form, connect to backend | Technical steps to implement the story |

* Example from work:
<2025-10-09 Thu>
The user story creation we did for a particular made up project (not the proudest but team voted on this sadly).


[[../../assets/images/user_stories.jpg]]
