9 min read • Guide 785 of 877
Refinement Meeting Best Practices
Good refinement makes planning smooth. GitScrum helps teams prepare work items so they're ready to pull into sprints.
Refinement Purpose
Why Refine
REFINEMENT GOALS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ BEFORE REFINEMENT: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ STORY-456: Improve search ││
│ │ ││
│ │ Description: Make search better ││
│ │ Estimate: ? ││
│ │ Ready: ❌ ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ AFTER REFINEMENT: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ STORY-456: Add autocomplete to search ││
│ │ ││
│ │ Description: ││
│ │ As a user, I want search suggestions as I type ││
│ │ so I can find products faster. ││
│ │ ││
│ │ Acceptance Criteria: ││
│ │ ☐ Suggestions appear after 3 characters ││
│ │ ☐ Max 5 suggestions shown ││
│ │ ☐ Keyboard navigation works ││
│ │ ☐ Works on mobile ││
│ │ ││
│ │ Technical Notes: ││
│ │ • Use existing search API with prefix matching ││
│ │ • Debounce 300ms ││
│ │ • Cache recent queries ││
│ │ ││
│ │ Estimate: 5 points ││
│ │ Dependencies: None ││
│ │ Ready: ✅ ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ RESULT: Team can confidently pull into sprint │
└─────────────────────────────────────────────────────────────┘
Definition of Ready
READY FOR SPRINT:
┌─────────────────────────────────────────────────────────────┐
│ │
│ A STORY IS READY WHEN: │
│ │
│ UNDERSTOOD: │
│ ☐ User need is clear │
│ ☐ Team understands what to build │
│ ☐ Questions answered or noted as assumptions │
│ │
│ DEFINED: │
│ ☐ Acceptance criteria written │
│ ☐ Edge cases identified │
│ ☐ Designs available (if UI work) │
│ │
│ ESTIMATED: │
│ ☐ Story points assigned │
│ ☐ Team agrees on estimate │
│ ☐ Small enough to complete in sprint │
│ │
│ INDEPENDENT: │
│ ☐ Dependencies identified │
│ ☐ Blockers resolved or planned for │
│ ☐ Can be worked without waiting │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ IF NOT READY: │
│ • Don't pull into sprint │
│ • Continue refining │
│ • Or create spike to investigate │
└─────────────────────────────────────────────────────────────┘
Meeting Structure
Refinement Session
REFINEMENT MEETING FORMAT:
┌─────────────────────────────────────────────────────────────┐
│ │
│ LOGISTICS: │
│ Duration: 1-2 hours/week │
│ Attendees: PO, Dev Team, Scrum Master │
│ Frequency: Weekly or twice weekly │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ AGENDA: │
│ │
│ 1. REVIEW (5 min) │
│ • Quick check of refined backlog │
│ • Any updates since last session? │
│ │
│ 2. DISCUSS STORIES (45-90 min) │
│ For each story: │
│ • PO presents user need (2 min) │
│ • Team asks questions (5-10 min) │
│ • Discuss technical approach (5 min) │
│ • Write/refine acceptance criteria (5 min) │
│ • Estimate (5 min) │
│ │
│ 3. REVIEW DEPENDENCIES (10 min) │
│ • Any blockers identified? │
│ • Cross-team needs? │
│ • Actions to resolve │
│ │
│ 4. WRAP UP (5 min) │
│ • Mark stories as ready │
│ • Note follow-up items │
│ • Preview next session │
│ │
│ GOAL: 2-3 sprints of refined work in backlog │
└─────────────────────────────────────────────────────────────┘
Discussion Flow
DISCUSSING A STORY:
┌─────────────────────────────────────────────────────────────┐
│ │
│ STORY: STORY-789 Add user notifications │
│ │
│ PO PRESENTS: │
│ ───────────── │
│ "Users want to be notified when their order ships. │
│ Currently they have to keep checking. Email is fine │
│ for now, push notifications later." │
│ │
│ TEAM QUESTIONS: │
│ ───────────────── │
│ Q: "What triggers the notification?" │
│ A: "When shipping status changes in fulfillment system" │
│ │
│ Q: "Just shipped, or all status changes?" │
│ A: "Start with shipped only, add others later" │
│ │
│ Q: "Can users opt out?" │
│ A: "Yes, in preferences. Default is opted in." │
│ │
│ Q: "What email template?" │
│ A: "Design will provide, follows existing style" │
│ │
│ TECHNICAL DISCUSSION: │
│ ───────────────────── │
│ Dev: "We'll need to listen to fulfillment webhook" │
│ Dev: "Email service already exists, just new template" │
│ Dev: "Need to add notification preferences to user model"│
│ │
│ ACCEPTANCE CRITERIA: │
│ ───────────────────── │
│ ☐ Email sent when order status = shipped │
│ ☐ Email contains order number and tracking link │
│ ☐ User can opt out in preferences │
│ ☐ Opted-out users don't receive emails │
│ │
│ ESTIMATE: 5 points │
│ STATUS: Ready ✅ │
└─────────────────────────────────────────────────────────────┘
Breaking Down Stories
Story Splitting
SPLITTING LARGE STORIES:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ORIGINAL (Too big - 21 points): │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ STORY-800: User notification system ││
│ │ ││
│ │ Users can receive email and push notifications for ││
│ │ order status, promotions, and account activity. ││
│ │ ││
│ │ Estimate: 21 points (too big!) ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ SPLIT BY FUNCTIONALITY: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ STORY-801: Order shipped email notification (5 pts) ││
│ │ STORY-802: Order delivered email notification (3 pts) ││
│ │ STORY-803: Notification preferences (5 pts) ││
│ │ STORY-804: Push notification infrastructure (8 pts) ││
│ │ STORY-805: Push notification for shipping (5 pts) ││
│ │ STORY-806: Promotional email notifications (5 pts) ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ SPLITTING STRATEGIES: │
│ ───────────────────── │
│ • By workflow step (create → read → update → delete) │
│ • By user type (admin, user, guest) │
│ • By channel (email, push, SMS) │
│ • By happy path vs edge cases │
│ • By must-have vs nice-to-have │
│ │
│ EACH STORY SHOULD: │
│ • Deliver user value independently │
│ • Be completable in one sprint │
│ • Be testable on its own │
└─────────────────────────────────────────────────────────────┘
Common Issues
Refinement Problems
COMMON REFINEMENT ISSUES:
┌─────────────────────────────────────────────────────────────┐
│ │
│ TOO VAGUE: │
│ ─────────── │
│ "Improve performance" │
│ "Make it more user-friendly" │
│ │
│ FIX: Ask "What specific outcome do users need?" │
│ Add measurable criteria │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ TOO DETAILED: │
│ ────────────── │
│ 3 pages of requirements │
│ Every button described │
│ │
│ FIX: Focus on acceptance criteria │
│ Let team figure out implementation │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ SOLUTION PRESCRIBED: │
│ ───────────────────── │
│ "Add a dropdown that..." │
│ "Use a modal to..." │
│ │
│ FIX: Focus on problem, not solution │
│ "User needs to select from options" │
│ Team decides best UX │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ MISSING CONTEXT: │
│ ───────────────── │
│ No designs for UI work │
│ No API spec for integration │
│ │
│ FIX: Block refinement until context available │
│ PO prepares before meeting │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ ENDLESS DISCUSSION: │
│ ──────────────────── │
│ 30 minutes on one story │
│ Rabbit holes │
│ │
│ FIX: Timebox per story (10-15 min) │
│ Create spike if too many unknowns │
│ "Good enough" acceptance, not perfect │
└─────────────────────────────────────────────────────────────┘
Preparation
Before Refinement
PREPARATION CHECKLIST:
┌─────────────────────────────────────────────────────────────┐
│ │
│ PO PREPARATION: │
│ │
│ ☐ Stories prioritized in backlog │
│ ☐ Initial descriptions written │
│ ☐ User need clearly stated │
│ ☐ Designs/mockups attached (if applicable) │
│ ☐ Any research/data to share │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ TEAM PREPARATION: │
│ │
│ ☐ Review stories before meeting │
│ ☐ Note initial questions │
│ ☐ Think about technical approach │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ MEETING PREPARATION: │
│ │
│ ☐ Agenda set (which stories to discuss) │
│ ☐ Time allocated per story │
│ ☐ Notes template ready │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ PRE-REFINEMENT TASK: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ REFINE-PREP: Week 5 Refinement Preparation ││
│ │ ││
│ │ STORIES TO DISCUSS: ││
│ │ 1. STORY-789: User notifications (5 min) ││
│ │ 2. STORY-790: Export reports (10 min) ││
│ │ 3. STORY-791: Dashboard redesign (15 min) ││
│ │ 4. STORY-792: Performance improvements (10 min) ││
│ │ ││
│ │ TOTAL TIME: ~45 min ││
│ │ ││
│ │ PRE-WORK: ││
│ │ • @designer: Dashboard mockups by Wednesday ││
│ │ • @po: Export requirements clarified ││
│ │ • @dev: Performance profiling data ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘