This guide explains how to use the feature_tracking.md document effectively for team collaboration.
The feature tracking document is organized by board:
- Daughter Board - Individual cell monitoring boards
- Secondary Board - Data aggregation board
- Primary Board - Main BMS controller
- Cross-Board Features - Features spanning multiple boards
⚪ TODO → 🟡 In Progress → 🟣 Review → 🟢 Completed
↓
🔴 Blocked
- Start Work: Change ⚪ → 🟡 when you begin working on a feature
- Ready for Review: Change 🟡 → 🟣 when code is complete and needs review
- Complete: Change 🟣 → 🟢 after review and testing pass
- Blocked: Change any status → 🔴 when blocked, add blocker details in Notes
- Blocks other work or core functionality
- Must be completed before system can function
- Examples: Basic communication, core data collection
- Important for system functionality
- Should be completed soon
- Examples: Fault detection, data validation
- Important but not blocking
- Can be deferred if needed
- Examples: Debug features, optimization
- Nice to have
- Can be deferred indefinitely
- Examples: Future enhancements, nice-to-have features
- Check Dependencies: Ensure all dependencies are complete
- Update Document: Add your name to the Owner column
- Update Status: Change status to 🟡 In Progress
- Communicate: Let team know you're working on it
- Update Owner: Change owner name in document
- Add Note: Document why reassignment occurred
- Update Status: Reset to appropriate status if needed
- Communicate: Notify previous and new owner
Use the Notes column to document:
- Blockers: What's preventing progress
- Decisions: Important technical decisions made
- Issues: Problems encountered and solutions
- Dependencies: Additional dependencies not listed
- Timeline: Expected completion dates
- Resources: Links to relevant docs, PRs, or issues
- Check the Dependencies column
- Verify all dependencies are 🟢 Completed
- If dependencies are incomplete, either:
- Wait for dependencies to complete
- Work on dependencies first
- Document why you can proceed anyway
When adding a new feature:
- Identify what it depends on
- List dependencies in the Dependencies column
- Use feature names or component names
- Update dependent features if needed
During standups, reference the tracking document:
- What did you complete? (Update ⚪ → 🟢)
- What are you working on? (Check 🟡 items)
- Any blockers? (Update to 🔴, add notes)
Weekly, review the document:
- Update statuses for completed work
- Identify items stuck in 🟡 for too long
- Reassign blocked items if needed
- Prioritize upcoming work
Use the document to:
- Identify P0 and P1 items for sprint
- Assign owners based on expertise
- Estimate effort (add to Notes if needed)
- Set sprint goals
- Find feature in tracking document
- Check dependencies are complete
- Add your name to Owner column
- Change status: ⚪ → 🟡
- Add note: "Starting implementation, ETA: [date]"
- Finish implementation
- Update status: 🟡 → 🟣
- Add note: "Ready for review, PR: #[number]"
- Request review from team
- After review passes: 🟣 → 🟢
- Add note: "Completed and tested on [date]"
- Update status: Current → 🔴
- Add detailed note about blocker
- Notify team in communication channel
- Update when blocker is resolved
- Update status as you work
- Don't let items sit in 🟡 for weeks
- Regular updates help team visibility
- Instead of "blocked", write "blocked on hardware delivery, ETA: [date]"
- Instead of "working on it", write "implementing CAN frame generation, 50% complete"
- Use same feature names across documents
- Reference related features in Notes
- Link to relevant documentation
- Remove completed items from "Known Issues"
- Archive completed features if document gets long
- Update priority if circumstances change
- Create branch:
feature/[feature-name] - Reference feature in commit messages
- Link PR to feature in Notes column
- Create GitHub/GitLab issues for complex features
- Link issues in Notes column
- Update status when issue is closed
- Link to relevant docs in Notes
- Update docs when feature is complete
- Reference tracking doc in code comments
- Check Notes for last update
- Reach out to owner
- Consider reassigning if owner unavailable
- Break down into smaller tasks if too large
- Review Dependencies column
- Check if dependencies are actually needed
- Update if dependencies changed
- Document why dependencies aren't needed
- Review team member expertise
- Check current workload
- Assign based on priority and availability
- Document assignment rationale
If you have questions about:
- What to track: Track anything that takes significant time or affects others
- How detailed: Be detailed enough for team to understand status
- When to update: Update whenever status changes, at minimum daily
- Who can update: Anyone on the team can update, but communicate changes
Remember: This document is a tool to help the team, not a burden. Keep it simple, keep it updated, and it will be valuable for everyone.