241 lines
5.3 KiB
Markdown
241 lines
5.3 KiB
Markdown
# Spec to Implementation - Task Breakdown Guide
|
|
|
|
How to decompose specifications into well-structured, implementable tasks.
|
|
|
|
## Task Hierarchy
|
|
|
|
```
|
|
Specification Document
|
|
├── Requirement 1
|
|
│ ├── User Story 1.1
|
|
│ │ ├── Task 1.1.1 (Backend)
|
|
│ │ ├── Task 1.1.2 (Frontend)
|
|
│ │ └── Task 1.1.3 (Testing)
|
|
│ └── User Story 1.2
|
|
│ └── [Tasks...]
|
|
└── Requirement 2
|
|
└── [User Stories and Tasks...]
|
|
```
|
|
|
|
## Task Properties
|
|
|
|
Each task should have:
|
|
|
|
| Property | Purpose | Example |
|
|
|----------|---------|---------|
|
|
| **Title** | Clear, action-oriented | "Implement user authentication endpoint" |
|
|
| **Description** | What, why, how | Details of implementation approach |
|
|
| **Acceptance Criteria** | How to know it's done | "Users can log in with email/password" |
|
|
| **Estimate** | Effort required | "5 story points" or "8 hours" |
|
|
| **Owner** | Who's doing it | "Alex Chen" |
|
|
| **Dependencies** | What must happen first | "Database schema finalized" |
|
|
| **Priority** | Urgency | "P0 - Blocking", "P1 - Critical", etc. |
|
|
|
|
## Task Sizing
|
|
|
|
**Too Large (> 3 days)**
|
|
- Hard to estimate accurately
|
|
- Difficult to track progress
|
|
- Risk of getting blocked
|
|
|
|
**Right Size (1-2 days)**
|
|
- Concrete and actionable
|
|
- Progress visible daily
|
|
- Easier to unblock
|
|
|
|
**Too Small (< 2 hours)**
|
|
- Overhead from task management
|
|
- Discourages good estimates
|
|
- Creates task clutter
|
|
|
|
## Task Types
|
|
|
|
### Backend Implementation
|
|
```
|
|
Task: Implement [feature] endpoint
|
|
|
|
Acceptance Criteria:
|
|
- [ ] Endpoint accepts [inputs]
|
|
- [ ] Returns [format] with [fields]
|
|
- [ ] Validates [constraints]
|
|
- [ ] Handles [error cases]
|
|
- [ ] Tests cover [coverage level]%
|
|
```
|
|
|
|
### Frontend Implementation
|
|
```
|
|
Task: Build [component/page]
|
|
|
|
Acceptance Criteria:
|
|
- [ ] Component renders [expected layout]
|
|
- [ ] Responds to [user interactions]
|
|
- [ ] Displays [content] from API
|
|
- [ ] Works on [screen sizes]
|
|
- [ ] Accessible (WCAG [level])
|
|
```
|
|
|
|
### Database/Data
|
|
```
|
|
Task: Create [schema/migration]
|
|
|
|
Acceptance Criteria:
|
|
- [ ] Schema supports [use cases]
|
|
- [ ] Indexes created for [queries]
|
|
- [ ] Migration handles [data]
|
|
- [ ] Rollback plan documented
|
|
- [ ] Performance tested
|
|
```
|
|
|
|
### Testing
|
|
```
|
|
Task: Test [feature/component]
|
|
|
|
Acceptance Criteria:
|
|
- [ ] Unit tests: [X]% coverage
|
|
- [ ] Integration tests for [scenarios]
|
|
- [ ] End-to-end tests for [flows]
|
|
- [ ] Performance tests meet [targets]
|
|
- [ ] Documented edge cases
|
|
```
|
|
|
|
### Documentation
|
|
```
|
|
Task: Document [feature/API]
|
|
|
|
Acceptance Criteria:
|
|
- [ ] API documentation complete
|
|
- [ ] Usage examples included
|
|
- [ ] Edge cases documented
|
|
- [ ] Links to related docs added
|
|
- [ ] Reviewed and approved
|
|
```
|
|
|
|
## Dependency Mapping
|
|
|
|
**Identify blocking dependencies:**
|
|
|
|
```
|
|
Auth Implementation (5 days)
|
|
├── Database schema (2 days) ← Must happen first
|
|
├── API endpoint (3 days) ← Depends on schema
|
|
├── Frontend UI (2 days) ← Depends on endpoint
|
|
└── Testing (2 days) ← Depends on frontend
|
|
```
|
|
|
|
**Critical Path:** Schema → Endpoint → Frontend → Testing (11 days)
|
|
|
|
**Parallel Work:** Multiple features can start once dependencies met
|
|
|
|
## Effort Estimation
|
|
|
|
**Estimation Techniques:**
|
|
|
|
1. **Story Points** (Fibonacci: 1, 2, 3, 5, 8, 13)
|
|
- Relative sizing
|
|
- Good for iterative planning
|
|
- Accounts for uncertainty
|
|
|
|
2. **Hours** (for precise tracking)
|
|
- 4-6 hours = Small task
|
|
- 8-16 hours = Medium task
|
|
- 16+ hours = Break down further
|
|
|
|
3. **Days** (for roadmapping)
|
|
- 1 day = Sprint task
|
|
- 2-3 days = Normal task
|
|
- 4+ days = Risky, reconsider
|
|
|
|
## Acceptance Criteria Format
|
|
|
|
**Good Acceptance Criteria:**
|
|
```
|
|
Given [context]
|
|
When [action happens]
|
|
Then [expected result]
|
|
```
|
|
|
|
**Example:**
|
|
```
|
|
Given user is on the login page
|
|
When they enter email and click submit without password
|
|
Then they see error "Password is required"
|
|
```
|
|
|
|
## Common Decomposition Patterns
|
|
|
|
### By Component
|
|
- Task 1: Implement backend service
|
|
- Task 2: Build UI component
|
|
- Task 3: Integrate frontend to backend
|
|
- Task 4: Test end-to-end
|
|
|
|
### By Feature Slice
|
|
- Task 1: Happy path implementation
|
|
- Task 2: Error handling
|
|
- Task 3: Edge cases
|
|
- Task 4: Performance optimization
|
|
|
|
### By Layer
|
|
- Task 1: Database layer
|
|
- Task 2: API layer
|
|
- Task 3: Frontend layer
|
|
- Task 4: Integration & testing
|
|
|
|
### By Priority
|
|
- Task 1: MVP features
|
|
- Task 2: Core features
|
|
- Task 3: Nice-to-haves
|
|
- Task 4: Future enhancements
|
|
|
|
## Red Flags
|
|
|
|
⚠️ **Task is too vague**
|
|
- "Fix authentication" → Break down to specific changes
|
|
|
|
⚠️ **Task has unclear owner**
|
|
- Ensure one person is clearly responsible
|
|
|
|
⚠️ **Task has no acceptance criteria**
|
|
- Add specific, measurable completion definition
|
|
|
|
⚠️ **Task is estimated at 13+ points**
|
|
- Break into smaller tasks
|
|
|
|
⚠️ **Task has unidentified dependencies**
|
|
- List all blockers explicitly
|
|
|
|
⚠️ **Task depends on another task being done**
|
|
- Create clear sequence or parallelize where possible
|
|
|
|
## Task Lifecycle
|
|
|
|
```
|
|
Spec Analysis
|
|
↓
|
|
Task Identification
|
|
↓
|
|
Dependency Mapping
|
|
↓
|
|
Prioritization & Sequencing
|
|
↓
|
|
Estimation
|
|
↓
|
|
Assignment
|
|
↓
|
|
Implementation (with daily progress)
|
|
↓
|
|
Review & Testing
|
|
↓
|
|
Completion & Documentation
|
|
```
|
|
|
|
## Documentation in Task Manager
|
|
|
|
Each task should link to:
|
|
- [ ] Original specification
|
|
- [ ] Related tasks
|
|
- [ ] Design documentation
|
|
- [ ] Test cases
|
|
- [ ] Code review URL
|
|
- [ ] Merged PR/commit
|