Module 6: User Stories & Estimation

Scrum Methodology — From Agile Foundations to Running Real Sprints

Module 6 of 8 Hands-on with Jira Requires Module 5 ~3 hours

Module Overview

Learning Objectives

By the end of this module, you will be able to:

  1. Place any piece of work correctly on the decomposition ladder: epic → user story → task/subtask
  2. Write user stories in the Connextra format and evaluate them against the INVEST checklist
  3. Attach testable acceptance criteria to a story — in Given/When/Then form or as a rule checklist — and distinguish them from the Definition of Done
  4. Split an oversized story into thin vertical slices using five reusable splitting patterns
  5. Estimate with story points on the Fibonacci scale, anchored to a reference story — and explain why points are not hours
  6. Facilitate a Planning Poker round and use the disagreement, not just the number, as information
  7. Compute velocity, forecast a release from it, and read a Sprint burndown chart critically
Course Information
  • Module: 6 of 8
  • Prerequisites: Module 5 completed — your TaskFlow project (key TF) with 4 epics, 17 ordered stories, and a started two-week Sprint 1 with the goal "A user can manage a basic task list"
  • Format: Theory on stories and estimation, then a hands-on lab estimating the entire TaskFlow backlog in Jira
  • Tools needed: Your Jira site from Module 4; optionally a free Planning Poker tool

Why this module comes after Sprint Planning

In Module 5 the team planned Sprint 1 by feel: four stories looked achievable, so four were selected. That is exactly how new teams start — and it works for one Sprint. But "by feel" cannot answer the questions a Product Owner gets asked next: How much of the backlog fits in the next Sprint? When will the Collaboration epic ship? This module adds the missing arithmetic: well-formed stories, relative estimates, and velocity. By the end, every one of TaskFlow's 17 stories carries a number, and those numbers can forecast a release.

From Epics to Tasks: The Decomposition Ladder

Work arrives big and gets built small. Between a stakeholder's wish ("teams should be able to work together") and a developer's Tuesday afternoon ("write the invite API endpoint") sit two or three levels of decomposition. Naming the levels precisely keeps the backlog navigable and the conversations honest:

Epic — Collaboration (TF-2)
A large feature area, too big for one Sprint. Lives for months. Exists to group stories and track a theme — never pulled into a Sprint as-is.
User Story — As a project owner, I can invite a teammate by email (TF-13)
A thin slice of user-visible value, deliverable within one Sprint. This is TF-13 from your Module 4 backlog — written there as "share a project with a teammate" and sharpened during refinement into the concrete mechanism: an email invitation. Refinement renames and reshapes stories; that is normal and healthy.
Subtasks — the technical to-do list, each roughly a day or less
  • Build the POST /invites API endpoint with validation
  • Design and code the invitation email template
  • Build the accept-invite landing page
  • Write unit and integration tests for the invite flow

Each level answers a different question for a different audience:

LevelTypical sizeLifespanPrimary audienceAnswers the question
EpicMultiple SprintsWeeks to monthsStakeholders, PO"Which big themes are we investing in?"
User storyFits in one Sprint (ideally a few days)Created in refinement, dies when DonePO + Developers together"What will a user be able to do next?"
Task / subtask≤ 1 dayInside one SprintDevelopers"What exactly do we do today?"

What Scrum actually says

Open the Scrum Guide and search for "epic", "story", or "subtask" — you will find nothing. Scrum only knows Product Backlog items. Epics, stories, and subtasks are popular conventions (baked into Jira) that most teams layer on top. Use them because they are useful, not because Scrum demands them — and never let a debate about "is this an epic or a story?" replace the real question: is this small enough to finish in a Sprint, and valuable enough to bother?

Writing Good User Stories

A user story is a short description of a capability told from the perspective of the person who wants it. The classic template — invented at the London company Connextra around 2001 — forces three pieces of information into one sentence:

As a <role>, I want <capability>, so that <benefit>.

# TaskFlow example
As a project owner, I want to invite a teammate by email,
so that we can manage our project's tasks together.

Each clause earns its place. The role stops the team building for an imaginary "user" who is secretly the developer. The capability states the observable behaviour, not the implementation. The benefit is the most frequently skipped and the most valuable part: if you cannot finish the "so that…" clause convincingly, you have just discovered a backlog item that maybe should not exist. Your Module 4 backlog used the compact variant "As a …, I can …" as story titles — fine for titles; the full template with the benefit clause belongs in the story description.

The 3 Cs: Card, Conversation, Confirmation

Ron Jeffries' famous formula captures what a story is — and, more importantly, what it is not. A story is not a miniature requirements document; it is a promise to have a conversation:

Card

The written token — an index card, or a Jira issue. Deliberately too small to hold every detail. The card's job is to be rememberable and sortable, not complete.

Conversation

The details live in conversations between the PO and Developers — during refinement, Planning, and mid-Sprint. This is where "invite by email" gets its edge cases: expired invites? inviting someone twice?

Confirmation

The acceptance criteria — concrete tests that confirm the conversation was understood. Written down before the work starts, checked before the story is called Done.

The INVEST Checklist

Bill Wake's INVEST acronym is the standard quality gate for a story that is about to enter a Sprint. Run every candidate through all six letters — the TaskFlow examples below show each check failing and passing:

Independent

The story can be built and delivered in (almost) any order relative to its siblings.

Fails: "As a team member, I can assign a task to a teammate" scheduled before any sign-in or sharing exists — it silently depends on TF-17 and TF-13.

Passes: "As a user, I can set a due date on a task" — touches only the task model; can ship in any Sprint.

Negotiable

The story states the what, leaving the how open for the conversation.

Fails: "As a user, I can pick a due date from a jQuery datepicker widget in a modal dialog" — the solution is welded into the requirement.

Passes: "As a user, I can set a due date on a task" — calendar widget, text field, or natural-language parsing are all still on the table.

Valuable

A user or stakeholder would notice — and care — if this shipped.

Fails: "As a developer, I want to refactor the task repository layer" — real work, but invisible to users; fold it into the stories that need it or justify it via the DoD.

Passes: "As a user, I can receive a reminder before a task is due" — retention gold; users will feel it.

Estimable

The Developers know enough to size it relative to other stories.

Fails: "As a user, I want TaskFlow to feel fast" — fast how, where, measured by what? Unestimable until it becomes concrete criteria (e.g., task list loads in under 1 second on 3G).

Passes: "As a user, I can mark a task as complete" — everyone can picture the whole job.

Small

Comfortably fits inside one Sprint — ideally a few days, leaving room for several stories per Sprint.

Fails: "As a user, I can organise tasks into projects and lists" (TF-9) — projects, lists, moving tasks, filtering, empty states… a Sprint-eater. It gets split later in this module.

Passes: "As a user, I can delete a task" — one endpoint, one button, one confirmation.

Testable

There is a concrete way to demonstrate it is done.

Fails: "As a user, I want the app to be intuitive" — no test can pass or fail this as written.

Passes: "As a visitor, I can sign in with my Google account" — click the button, complete the consent screen, land signed-in. Pass or fail.

INVEST is a refinement tool, not a rejection stamp

Items deep in the backlog are allowed to fail INVEST — DEEP (Module 4) told you distant items stay deliberately coarse. INVEST applies with full force only to stories about to enter a Sprint. A story failing "Small" is not deleted; it is split. A story failing "Estimable" earns a conversation or a research spike. The checklist tells you what kind of refinement an item still needs.

Acceptance Criteria: The Confirmation

Acceptance criteria (AC) are the third C made concrete: the per-story conditions that must hold before the Product Owner accepts the work. They turn "I thought you meant…" arguments into a checklist agreed before coding starts. The most popular format is Given/When/Then — the Gherkin syntax from behaviour-driven development — which reads: given a starting context, when an action happens, then an observable outcome follows.

Here is a full set for the story your Sprint 1 anchors on, TF-5: As a user, I can create a task with a title and description:

Story: As a user, I can create a task with a title and description

Scenario 1: Create a task with valid input
  Given I am signed in and viewing my task list
  When  I enter the title "Buy milk" and the description "2 litres, semi-skimmed"
        and press "Add task"
  Then  the task appears at the top of my list with its title visible
  And   the input form is cleared, ready for the next task

Scenario 2: Title is required
  Given I am signed in and viewing my task list
  When  I press "Add task" with an empty title
  Then  no task is created
  And   I see the message "A task needs a title"

Scenario 3: Description is optional
  Given I am signed in and viewing my task list
  When  I enter only the title "Call the dentist" and press "Add task"
  Then  the task is created with an empty description

Scenario 4: Title length is bounded
  Given I am signed in and viewing my task list
  When  I enter a title longer than 200 characters
  Then  no task is created
  And   I see the message "Titles are limited to 200 characters"

Notice what the four scenarios just did: they surfaced a validation rule (title required), a product decision (description optional), and a boundary (200 characters) that the one-line story never mentioned. Writing AC is the conversation, captured.

The rule-based alternative

Given/When/Then shines for behaviour with clear flows, but it gets ceremonious for simple constraints. Many teams use a plain rule checklist instead — or mix both. The same story as rules:

  • A task requires a title (1–200 characters); description is optional (max 2,000)
  • A newly created task appears at the top of the list without a page reload
  • Validation failures show an inline message and never lose the user's typed text
  • The form is fully usable by keyboard alone

Where acceptance criteria live in Jira

Jira has no dedicated AC field in team-managed projects, so adopt one convention and stick to it — consistency matters more than the choice:

  • In the description (our course convention): add an Acceptance Criteria heading in the story's description and write the scenarios or rules under it.
  • As a checklist: several free Marketplace apps add a native checklist panel; the PO ticks criteria off at acceptance time.
  • Custom field: company-managed projects often add an "Acceptance Criteria" field so it renders consistently on every card.

Acceptance criteria vs. Definition of Done — do not blur them

Both are checklists; they answer different questions. Acceptance criteria are per-story: "does this story do what we agreed?" ("titles are limited to 200 characters"). The Definition of Done is universal: "does every story meet our quality bar?" (code reviewed, tests green, deployed to staging, responsive, accessible — the DoD you wrote in Module 4). A story is finished only when it satisfies both. If you find yourself copying "code is reviewed" into every story's AC, that line belongs in the DoD; if your DoD says "the calendar shows overdue tasks in red", that line belongs in one story's AC.

Splitting Big Stories

Big stories are where Sprints go to die: they burn no points for days, hide unknown work, and turn the burndown into a cliff. The fix is splitting — but splitting correctly. Every slice must remain a vertical slice: a thin path through UI, logic, and data that a user could actually exercise. Five patterns cover most situations; each row shows the pattern applied to a real TaskFlow story:

PatternHow it worksTaskFlow example
By workflow step The story describes a multi-step journey; each step becomes a story, earliest steps first. TF-13 invite a teammate → ① send an invitation email → ② accept an invitation and join the project → ③ view and revoke pending invitations.
By CRUD operation "Manage X" always hides create, read, update, delete — four stories wearing a trench coat. TF-9 organise tasks into projects → ① create a project and add tasks to it → ② rename a project → ③ archive/delete a project → ④ move a task between projects.
By role Different roles need different depth; ship the most valuable role's version first. TF-20 statistics dashboard → ① as an individual user, my personal weekly stats → ② as a project owner, aggregated stats for the whole team.
Happy path first Deliver the main success flow; edge cases, errors, and hardening become follow-up stories. TF-17 sign in with Google → ① successful sign-in for a new user → ② handle declined consent, expired sessions, and linking an existing email to a Google account.
By data variation Support the simplest data shape or channel first; each additional variation is its own story. TF-11 reminders → ① email reminder 24 h before the due date → ② in-app/browser notification → ③ user-configurable reminder timing.

Two quality checks after any split. First, every slice must still pass INVEST — especially Valuable: "create a project" is demonstrable to a stakeholder; "build the projects database table" is not. Second, expect the slices' estimates to sum to more than the original story's estimate. That is not waste — the original number was hiding uncertainty, and the split just made the real cost visible.

Never split horizontally

The tempting wrong split is by technical layer: "the API story", "the database story", "the UI story". Now nothing is demonstrable until all layers land, dependencies chain the Sprint together, and the Review has nothing to show. If a slice cannot be clicked through by a user (or at least demonstrated end-to-end), it is a task inside a story — not a story.

Story Points & Relative Estimation

Now the second half of the module: putting numbers on stories. The instinctive unit is hours — and hours fail in practice, for reasons every experienced team rediscovers:

  • Humans are terrible at absolute estimates. Ask three developers how long OAuth integration takes and you get 4 hours, 2 days, and a week — and each answer depends on who ends up doing it.
  • Hour estimates get read as promises. Say "about 6 hours" on Monday and by Wednesday someone is asking why it isn't done. Estimates become commitments, so developers pad them, so the padding gets squeezed, so trust erodes.
  • False precision hides real uncertainty. "6.5 hours" sounds scientific; the honest truth is usually "smallish, unless the API surprises us".
  • They rot. An hours estimate assumes a specific person, a specific week, zero interruptions. Points estimate the work, not the worker's calendar.

The escape is relative estimation: people who cannot say how tall a building is in metres can instantly say it is about twice as tall as the one next to it. Story points are unitless numbers expressing how big a story is compared to other stories — a blend of effort, complexity, and uncertainty. A 4-point story is roughly twice the work of a 2. Points mean nothing outside the team that assigned them, and that is by design.

The Fibonacci Scale

Most teams estimate on a modified Fibonacci sequence: 1, 2, 3, 5, 8, 13 (some add 20, 40, and 100 for epic-sized guesses). The growing gaps are the entire point: uncertainty grows with size. You can meaningfully debate whether a small story is a 2 or a 3 — but debating whether a big story is an 8 or a 9 is theatre, because nobody's crystal ball is that good. The scale physically prevents false precision: after 8, your only options are "13" or "split it".

PointsFeels likeTaskFlow example
1Trivial, well-understood, nearly risk-freeDelete a task (TF-8)
2Small and clear — the reference sizeCreate a task with title and description (TF-5)
3Moderate; a couple of moving partsEdit a task's title and description (TF-7) — inline editing and stale-data handling add wrinkles
5Large; several components or a real unknownSign in with Google (TF-17) — external OAuth integration
8Very large; should make you nervousOrganise tasks into projects and lists (TF-9)
13Too big to Sprint — split before selectingA hypothetical "full team workspace" story

The Reference Story Technique

Relative measurement needs an anchor. Pick one story the whole team understands completely, pin its value, and estimate everything else by comparison. Our anchor for the rest of the course:

# TaskFlow reference story (the anchor)
TF-5  "As a user, I can create a task with a title and description"  =  2 points

Every estimation conversation now has a shape: "Is editing a task bigger or smaller than creating one? About the same, plus wrinkles → 3. Is Google sign-in bigger? Clearly — twice? more? → 5." Strong teams triangulate against two anchors (one small, one large) so every story is squeezed from both sides. One nuance from Module 5: in Sprint 1, TF-5's subtasks included one-off repository and CI setup — that made the story's first implementation slow, but the anchor reflects the feature's inherent size, not the historical accident of which story paid the setup tax.

What story points are NOT

Not hours in disguise. The moment someone publishes a "1 point = 4 hours" conversion table, you have hour estimates with extra steps — and all their pathologies back. Not a performance metric. Comparing developers by points completed, or teams by velocity, is measuring with rulers of different lengths — and the instant points affect anyone's appraisal, estimates inflate and the metric destroys itself. Not a commitment. An estimate is information, not a contract; punishing "wrong" estimates teaches people to stop estimating honestly. Points serve exactly one master: the team's own planning. Guard that boundary fiercely.

Planning Poker

Planning Poker is the standard way teams produce point estimates together. It looks like a game; it is actually a defence mechanism against anchoring — the human tendency to gravitate toward the first number spoken aloud. If the most senior developer says "3" first, everyone's honest "8" quietly becomes "5". Simultaneous reveal removes that distortion. A round works like this:

  1. The PO reads the story and its acceptance criteria; Developers ask clarifying questions (this is refinement happening live).
  2. Everyone privately selects a card from the scale (1, 2, 3, 5, 8, 13). No numbers spoken yet.
  3. Simultaneous reveal. All cards turn over at once.
  4. Consensus? Record and move on. Close spreads (2/3/3) usually settle on the mode without ceremony.
  5. Outliers explain first. The highest and lowest voters each get a timeboxed minute. This is the crucial rule: the outliers are not "wrong" — they may know something the room does not.
  6. Re-vote. Usually converges in one or two rounds. Still split after three? Take the higher number or park the story for research — do not grind.
  7. Only Developers vote. The PO clarifies, the Scrum Master facilitates; neither holds cards — they will not do the work.

Tools: physical card decks work great in a room; distributed teams use free web tools — planningpoker.com, PlanITpoker, or a Planning Poker app from the Jira Marketplace that runs inside the backlog view. Zero-budget fallback: everyone types a number into the chat and presses Enter on a count of three.

A worked TaskFlow round

Estimating TF-13: "As a project owner, I can invite a teammate by email"

Rania (PO) reads the story and its AC: send an email invitation, the recipient clicks a link, joins the project. Questions land: can you invite someone without a TaskFlow account? (Yes — the invite link takes them through sign-up.) Do invites expire? (Yes, after 7 days.)

Reveal: Sara 3 · Lina 2 · Omar 8

Lina (low, 2): "It's a form, an endpoint, and a membership row — barely bigger than creating a task."

Omar (high, 8): "The form is the easy part. We have never sent an email from TaskFlow. There is no email provider configured, no templates, no handling for bounces or spam-folder deliverability — and the accept link has to work for people with no account yet. That's infrastructure, not a form."

Silence, then nodding — nobody else had thought about the email plumbing. Rania confirms the invitation email is essential to the story, not optional polish.

Re-vote: Sara 5 · Lina 5 · Omar 5TF-13 = 5 points. Lina came up from 2, Omar came down from 8 (the team agreed a basic email-provider setup is a known quantity), and the discussion left a comment on the ticket about the email work — which will save whichever Sprint eventually pulls it.

The number is the by-product

Watch what actually happened in that round: the estimate moved from a 2–8 spread to 5, but the real output was the discovery of hidden email infrastructure work — before the Sprint, while it was still cheap to know. Teams that skip the outlier discussion and just average the cards keep the ritual and throw away the value. If your poker sessions produce numbers but never surprises, you are running them too fast.

Velocity & Burndown

Velocity is the number of story points a team gets to Done per Sprint — and "Done" means the full Definition of Done, because Scrum gives no partial credit (Module 4). If Sprint 1 finishes 12 points of stories, velocity is 12. One data point is noise; after about three Sprints, the rolling 3-Sprint average becomes a genuinely useful forecasting tool — an empirical measurement of this team's real, sustainable pace, with meetings, code review, and bad Tuesdays already priced in.

Forecasting with velocity

Once the backlog is estimated, forecasting is division. TaskFlow's 17 stories total 60 points (you will produce this number in the lab below). Suppose velocity settles at 15 points per Sprint:

SprintPoints completed (forecast)Backlog remaining afterMilestone reached
Sprint 11545Core task loop: create, complete, edit, delete + sign-in
Sprint 21530Projects, lists, and due dates
Sprint 31515Reminders, calendar, first collaboration stories
Sprint 4150Collaboration complete + insights & polish

60 ÷ 15 = ~4 Sprints ≈ 8 weeks to the whole wish list. Present forecasts honestly: as a range, not a date — "3 to 5 Sprints, tightening as velocity stabilises". And remember the backlog is alive: every Review adds items, so the finish line moves. Velocity forecasts capacity, not destiny.

The Sprint burndown chart

Velocity looks across Sprints; the burndown chart looks inside one. Vertical axis: story points remaining in the Sprint. Horizontal axis: Sprint days. A straight ideal line descends evenly from the committed total to zero; the actual line shows reality — and reality burns in steps, because points only leave the chart when a whole story reaches Done:

A typical 2-week burndown — 20 points committed (grey = ideal, blue = actual remaining)
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10

Ideal (grey) descends 2 points per day: 18, 16, 14 … 0. Actual (blue) plateaus at 20 for two days (nothing Done yet), steps down as whole stories finish — and notice day 6 sitting above day 5: a story was added mid-Sprint. Real burndowns are staircases with a story, not smooth slopes.

Common shapes and what they reveal

ShapeWhat it looks likeWhat it usually meansResponse
Flat lineActual stays horizontal for daysStories too big to finish (nothing reaches Done), work blocked, or the team is "90% done" on everything at onceOne flat day is normal; two or more means raise it at the Daily — swarm, unblock, or split
Cliff at the endFlat all Sprint, then everything drops on the last dayStories moved to Done in a batch — oversized items, or the DoD applied only at the deadline; risk was invisible for two weeksSmaller stories; finish items continuously, not in a day-10 crunch
Scope-added bumpThe line jumps up mid-SprintWork was added after the start — a renegotiation with the PO (legitimate) or scope leaking in sideways (not)Ask who added it and whether the Sprint Goal is still safe; Jira marks these as scope changes
Below ideal earlyActual hugs zero by mid-SprintThe team under-committed — or quality is being skippedPull the next backlog item in collaboration with the PO; check the DoD is really being met

A burndown is a thermometer, not a report card

The chart's job is to trigger a conversation while there is still time to act — "at this rate, TF-17 won't make it; what do we change today?" The moment a manager uses burndowns to grade teams, teams learn to make the chart pretty instead of the product good. You will read a real burndown, plateau and all, in Module 7's simulation.

Hands-on: Estimate the TaskFlow Backlog

Time to put numbers on all 17 stories in your Jira project. Sprint 1 is already running — that is fine: estimation is a refinement activity and happens whenever the team needs it. Work through the steps in order:

  1. Confirm the Story points field is enabled. In Module 4 you switched on the estimation feature; verify it survived: Project settings → Features → Estimation should show Story points as the estimation unit. Open any story — you should see a Story point estimate field in the details panel. If not, enable it now.
  2. Pin the reference story. Open TF-5 — As a user, I can create a task with a title and description and set Story point estimate = 2. Add a comment: Reference story — all other estimates are relative to this = 2. Every future debate now has an anchor.
  3. Estimate every story by comparison. Ideally run Planning Poker with your study group (any tool from the Poker section); working solo, walk the backlog top to bottom asking of each story: bigger or smaller than creating a task, and by how much? Force yourself onto the scale — no 4s, no 2.5s. Our team's results, which the rest of the course uses (yours may reasonably differ by a point here and there — but keep the Sprint 1 stories as listed, since Modules 7 and 8 build on them):
    KeyStoryEpicPoints
    TF-5Create a task with a title and description (anchor)Task Management2
    TF-6Mark a task as completeTask Management2
    TF-7Edit a task's title and descriptionTask Management3
    TF-8Delete a taskTask Management1
    TF-9Organise tasks into projects and listsTask Management8
    TF-10Set a due date on a taskTask Management2
    TF-11Receive a reminder before a task is dueTask Management5
    TF-12See my tasks in a calendar viewTask Management5
    TF-13Share a project with a teammate (invite by email)Collaboration5
    TF-14Assign a task to a teammateCollaboration3
    TF-15Comment on a taskCollaboration2
    TF-16Attach a file to a taskCollaboration3
    TF-17Sign in with my Google accountAccounts & Sign-in5
    TF-18View and edit my profileAccounts & Sign-in2
    TF-19Switch to dark modeInsights & Polish2
    TF-20View a statistics dashboard of my weekInsights & Polish8
    TF-21Use TaskFlow comfortably on my phoneInsights & Polish2
    Total backlog60
  4. Enter the points in Jira. Fastest route: the Backlog view lets you click the estimate badge on each row and type the number inline — no need to open every issue. Watch the epic totals update as you go.
  5. Read the Sprint's committed total. Look at the Sprint 1 panel header in the Backlog view: Jira now shows summed points next to the sprint name. Your four stories total 8 points (2 + 2 + 3 + 1) — and with numbers finally visible, that looks light for three Developers over two weeks. The Developers raise it with Rania, and together they pull TF-17 — Sign in with my Google account (5 points) into the running Sprint: it strengthens the goal (a personal task list needs an account) and de-risks the OAuth integration the Module 4 ordering flagged. Drag TF-17 from the backlog into the active sprint and confirm. New committed total: 13 points.
  6. Locate the burndown report. In the project sidebar open Reports → Burndown chart, and select Sprint 1 with Story points as the estimation statistic. You should see the ideal line descending toward zero — and a scope-change entry where TF-17 joined. Bookmark this view: Module 7 reads it every single day.

Wait — is adding a story to a running Sprint allowed?

Yes, done this way. The Scrum Guide is explicit: as new work is learned about, the Developers negotiate the scope of the Sprint Backlog with the Product Owner — without endangering the Sprint Goal. That is exactly what happened here: the people doing the work found spare capacity and pulled the next goal-supporting item, in collaboration with the PO. What is not allowed is scope arriving from outside — a stakeholder pushing work in over the team's head. Hold onto that distinction: in Module 7, Day 4, someone will test it.

Checkpoint

Before continuing you should have: all 17 stories carrying story points (total 60), TF-5 documented as the 2-point anchor, Sprint 1 committed at 13 points across five stories (TF-17 included), and the burndown report located and understood. This exact state is where Module 7's day-by-day simulation begins.

Exercises 6.1 & 6.2

Exercise 6.1 — Write three new stories with full acceptance criteria (45 min)

The Insights & Polish epic is the thinnest in the backlog — three stories, all coarse. Invent three new user stories for it (ideas: a weekly email summary, productivity streaks, exporting tasks to CSV, a focus mode, per-project colour themes — or your own). For each story:

  1. Write it in the full Connextra format — role, capability, and a benefit clause that survives scrutiny.
  2. Run it through all six INVEST letters in one line each; fix what fails.
  3. Attach at least three Given/When/Then scenarios, including at least one negative or edge scenario (empty data, invalid input, permission denied).
  4. Estimate it against the TF-5 anchor and defend the number in one sentence.
  5. Create all three in your Jira project under the Insights & Polish epic, acceptance criteria in the description.

Exercise 6.2 — Split the dashboard story two ways (30 min)

TF-20 — As a user, I can view a statistics dashboard of my week is an 8 — tied for biggest story in the backlog and a poor fit for any Sprint. Split it twice, using two different patterns from the Splitting section (e.g., once by role, once happy-path-first or by data variation):

  1. For each pattern, produce 2–4 slice stories in Connextra format; every slice must be a vertical slice a user could see working.
  2. Estimate each slice against the anchor. Compare each split's total to the original 8 and explain any difference in 2–3 sentences.
  3. State which split you would actually adopt for TaskFlow and why — which slice ships first, and what the PO learns from shipping it.

Module 6 Project: The Estimated Backlog

You are the team's estimation facilitator. Your deliverable is a TaskFlow backlog a Product Owner could genuinely plan releases from — every item sized, the sizing defensible, and a first release forecast on paper.

Project Requirements
1. Fully Estimated Backlog in Jira
  • All 17 course stories (plus any you added) carry story points on the Fibonacci scale; TF-5 documented as the 2-point reference story
  • Sprint 1 committed total visible at 13 points with TF-17 pulled in
  • Written estimation rationale for 5 stories of your choice — each 2–4 sentences, explicitly comparing to the anchor ("TF-11 is a 5 because, relative to creating a task, it adds scheduled background jobs and a notification channel we have never built…")
  • Evidence: screenshot of the backlog with visible estimates and epic totals
2. Exercises
  • Exercise 6.1 — three new Insights & Polish stories with INVEST checks and full Given/When/Then acceptance criteria, created in Jira
  • Exercise 6.2 — TF-20 split two ways, slices estimated, with your recommendation
3. Velocity-based Release Plan
  • Assume the team's velocity settles at 12 points per Sprint
  • Produce a Sprint-by-Sprint release plan table for the backlog: which stories land in which Sprint (≤ 12 points each, respecting the Module 4 ordering and dependencies), points per Sprint, and the running backlog remainder
  • State the completion forecast in Sprints and weeks, expressed as a range, plus 3 explicit assumptions your plan rests on (e.g., "no new items enter the backlog" — and why that assumption is false in practice)

Grading Rubric

Component Points
Backlog fully estimated in Jira — Fibonacci values, anchor documented, sprint total correct20
Estimation rationales — genuinely relative reasoning, not disguised hours15
Exercise 6.1 — story quality (Connextra + INVEST) and testable Given/When/Then criteria25
Exercise 6.2 — two valid patterns, vertical slices, thoughtful comparison15
Release plan — arithmetic correct, ordering respected, forecast as a range, honest assumptions20
Clarity and structure of the written submission5
Total100

Resources & References

Next Module Preview
Module 7: Running a Sprint
  • A full day-by-day simulation of TaskFlow's Sprint 1 — ten working days, real Jira card moves
  • Handling a mid-Sprint blocker and a stakeholder scope attack
  • Reading your own burndown and negotiating scope to protect the Sprint Goal
  • Running the Sprint Review and Retrospective, then closing the Sprint in Jira
Continue to Module 7