Story Point Estimation Guide¶
CMS Planner uses Fibonacci sequence-based story point estimation to account for increasing uncertainty with larger tasks. This guide explains the framework and how to apply it effectively.
Fibonacci Sequence¶
Story points follow the Fibonacci sequence: 1, 2, 3, 5, 8, 13, 21, 34+
Why Fibonacci?¶
- Uncertainty increases non-linearly - Larger tasks have more unknowns
- Prevents false precision - Gap between numbers acknowledges uncertainty
- Forces decomposition - Very large numbers indicate tasks need breaking down
- Industry standard - Widely used in Agile/Scrum methodologies
Story Point Scale¶
| Points | Time Estimate | Complexity | Examples |
|---|---|---|---|
| 1 | <2 hours | Trivial | Update footer text, change button color, fix typo |
| 2 | 2-4 hours | Simple | Add form validation, create basic component, simple bug fix |
| 3 | 4-8 hours (1 day) | Standard | Implement search filter, CRUD API endpoint, standard feature with tests |
| 5 | 2-3 days | Complex | Auth flow, payment gateway, multi-component feature |
| 8 | 3-5 days | Major | Real-time notifications, complex dashboard, architecture decisions |
| 13 | 1-2 weeks | Epic | User management system, e-commerce checkout, should be broken down |
| 21 | 2-3 weeks | Large Epic | Complete theme, full content model, must be broken down |
| 34+ | >3 weeks | Too Large | Must be decomposed into smaller epics before planning |
What Story Points Measure¶
Story points measure complexity and effort, not just time:
Factors Considered¶
- Complexity - How difficult is the work?
- Uncertainty - How well understood is the requirement?
- Effort - How much work is involved?
- Dependencies - What else must be complete first?
- Risk - What could go wrong?
NOT Time Estimates¶
While we provide time ranges for reference, story points are relative measures of effort.
- 5 points for Developer A might take 2 days
- 5 points for Developer B might take 3 days
- Both are still 5 points of complexity
Estimation Best Practices¶
Include Everything¶
Story points should include time for:
- ✅ Implementation - Writing the code
- ✅ Testing - Unit, integration, manual testing
- ✅ Code review - Review cycle and revisions
- ✅ Documentation - Code comments, README updates
- ✅ Deployment - Configuration, deployment steps
- ✅ Bug fixes - Addressing issues found in testing
Consider Complexity Factors¶
- Technical complexity - Algorithm difficulty, architecture decisions
- Integration complexity - Number of systems/components to integrate
- Unknown requirements - Ambiguity or research needed
- Team experience - Familiarity with technology
- Dependencies - Blocking or parallel work
Add Uncertainty Buffer¶
- Higher points = more buffer - 21 points has more uncertainty than 3 points
- Unknown tech = higher points - New framework? Add buffer
- Vague requirements = higher points - Unclear acceptance criteria? Add buffer
- External dependencies = higher points - Waiting on third parties? Add buffer
Recipe-Based Projects¶
For Drupal recipes and similar architectures, estimate separately:
- Recipe creation (8-13 points)
- Define configuration entities
- Export configuration
- Organize structure
-
Test clean installation
-
Configuration export (2-3 points per entity)
- Content type configuration
- View configuration
-
Field configuration
-
Testing (3-5 points per recipe)
- Clean installation test
- Dependency testing
-
Field storage verification
-
Documentation (2-3 points per recipe)
- README file
- Installation instructions
-
Dependency documentation
-
Demo content (5-8 points per recipe)
- Create sample content
- Export with Default Content
- Verify import works
Velocity Calculation¶
Team velocity is the average story points completed per sprint.
Formula¶
Example Calculation¶
Team: - 3 developers - 2-week sprints (80 hours/developer) - 70% productive time (30% for meetings, admin, etc.) - 6 hours per story point (team average)
Calculation:
Calibrating Velocity¶
After a few sprints, use historical data:
- Track completed points per sprint
- Calculate average over 3-5 sprints
- Adjust estimates if consistently over/under
- Re-calibrate when team changes
Breaking Down Large Items¶
13 Points: Should Break Down¶
13-point items should typically be broken into smaller stories:
Example: User Management System [13 points]
Break into: - User Registration Flow [5 points] - User Login Flow [3 points] - Password Reset [2 points] - Profile Management [3 points]
Total: 13 points (same estimate, but broken down)
21 Points: Must Break Down¶
21-point items are too large for a single sprint and must be decomposed:
Example: Complete Theme Development [21 points]
Break into: - Base Theme Setup [5 points] - Component Library [8 points] - Page Templates [5 points] - Responsive Styles [3 points]
Total: 21 points (spread across multiple sprints)
34+ Points: Decompose First¶
Items over 34 points should be broken into multiple epics:
Example: E-commerce Platform [89 points]
Break into epics: - Product Management [21 points] - Shopping Cart [13 points] - Checkout Flow [21 points] - Payment Processing [13 points] - Order Management [21 points]
Total: 89 points (5 epics)
Estimation Workshop¶
Planning Poker¶
- Present user story - Product owner explains requirement
- Ask questions - Team clarifies understanding
- Individual estimates - Each person picks a card (1, 2, 3, 5, 8, 13, 21)
- Reveal simultaneously - Everyone shows their card
- Discuss differences - Highest and lowest explain reasoning
- Re-estimate - Repeat until consensus
Relative Estimation¶
Compare to known tasks:
- "This is about the same as the login form we built" → 5 points
- "This is more complex than search but simpler than checkout" → between 8 and 13
- "This is twice as complex as the user profile" → double the points
T-Shirt Sizing (Initial Estimates)¶
For rough initial estimates, use T-shirt sizes:
- XS → 1-2 points
- S → 3-5 points
- M → 8 points
- L → 13 points
- XL → 21 points
- XXL → Must decompose
Convert to Fibonacci numbers for sprint planning.
Common Estimation Mistakes¶
❌ Too Precise¶
Wrong: "This is 4.5 story points" Right: "This is between 3 and 5, let's call it 5"
Story points are relative, not precise time measurements.
❌ Time-Based Thinking¶
Wrong: "8 hours = 1 day = 8 points" Right: "This is more complex than a 5-pointer but less than a 13"
Think complexity, not time.
❌ Individual Capacity¶
Wrong: "I can do 40 points this sprint" Right: "Our team velocity is 28 points per sprint"
Story points are team-based, not individual.
❌ Ignoring Uncertainty¶
Wrong: "We've done this before, it's still 5 points even with new tech" Right: "New tech adds uncertainty, this is 8 points"
Higher uncertainty = higher points.
❌ Not Including Everything¶
Wrong: "5 points for coding" (forgetting testing, review, documentation) Right: "5 points for full implementation including tests and review"
Include all work in the estimate.
Re-estimation¶
When to Re-estimate¶
- Requirements change significantly
- Technical approach changes
- New information discovered
- Team composition changes
- Velocity consistently off
How to Re-estimate¶
- Review original estimate and reasoning
- Identify what changed - new requirements? tech change?
- Estimate new work separately if possible
- Adjust total - add points for new complexity
- Document change - note why re-estimated
Example¶
Original: API Integration [5 points] - Simple REST API - JSON response - Standard authentication
Re-estimated: API Integration [13 points] - Discovered: SOAP API (not REST) - XML parsing required - OAuth 2.0 with refresh tokens - Rate limiting to handle
Reasoning: Complexity increased significantly with legacy SOAP API and OAuth requirements.
Story Points in FRDs¶
CMS Planner includes story points throughout the FRD:
In Requirements Section¶
## FR-001: saplings_person Recipe [MUST HAVE]
**Story Points:** 34 points
- Recipe creation and config export: 13 points
- Field definitions (including shared storage): 8 points
- Views and Pathauto configuration: 5 points
- Testing and documentation: 5 points
- Demo content creation: 3 points
In Implementation Plan¶
## Phase 2: Core Recipes [168 points]
### Epic 1: saplings_person Recipe [34 points]
- Story 1: Content type and fields [13 points]
- Story 2: Taxonomies and views [8 points]
- Story 3: Pathauto and metatag [5 points]
- Story 4: Demo content [3 points]
- Story 5: Testing and documentation [5 points]
In CSV Backlog¶
Tasklist,Task,Tags
"Phase 2","[EPIC] saplings_person [34 points]","SP-34,Phase-2"
"Phase 2","- [STORY] Content type [13 points]","SP-13,Phase-2"
"Phase 2","-- [TASK] Field definitions [5 points]","SP-5,Phase-2"
Resources¶
- Agile Estimating and Planning by Mike Cohn
- Scrum Guide: https://scrumguides.org/
- Mountain Goat Software: https://www.mountaingoatsoftware.com/agile/planning-poker
- Atlassian Agile Coach: https://www.atlassian.com/agile/project-management/estimation
Getting Help¶
- Documentation: https://kanopi.github.io/cms-planner/
- GitHub Issues: https://github.com/kanopi/cms-planner/issues
- Email: code@kanopi.com
Next: Teamwork Import | Recipe Projects