The most common cause of a slow sprint isn't estimation - it's a backlog full of stories that were never really stories.
What a story is not
- "Build the modal." That's a task.
- "As a user I want a better dashboard." That's a wish.
- "Add pagination to the results list." That's a UI change.
What a story is
An independent, testable slice of user value with clear acceptance criteria. Test: could a new engineer pick it up and know when it's done? If not, it isn't ready.
The Gherkin discipline
Given / When / Then feels heavy the first time you write it. It stops being heavy the third time QA doesn't need to ask you what "done" means.
Edge cases live in the story
Empty state, error state, permission-denied, undo - these belong in the acceptance criteria, not in a separate QA doc that nobody reads.
The size signal
If a story is L, it's usually two stories in a trench coat. Splitting them at grooming is a net time save every time.
Draft yours with the User Story Writer.