Project Management
Note that the below is not a strict guideline, nor is it set in stone. This is merely a guide to create order out of chaos, but should be followed only as closely as it is helpful to do so.
Issue Structure
- Three-Tier Hierarchy: Organize work into three levels only to prevent management overhead:
- Milestone: High-level themes or versions (e.g., "3rd Party Delivery").
- Epic: Categorized as an Issue Type, not a Status or Label. These are sub-sections of a milestone that can be released on their own.
- Task/Issue: The individual units of work assigned to developers.
- Checklists for Sub-Tasks: Instead of creating "sub-sub-issues," use Markdown checklists within a Task Issue to track granular steps. If something feels too significant to be a checklist item, make it a sub-issue on the parent epic.
- Metadata Fields:
- Type: Delineate between Epic, Enhancement, Bug, and Task.
- Labels: Use for secondary information (e.g., "Priority," "Frontend," "API").
Execution & Accountability
- Single Assignee: Every issue should have exactly one owner to ensure clear accountability for moving the card.
- Epic Constraints: Epics are never assigned to individuals and do not have cycle/iteration dates or estimates, as they are simply containers for smaller tasks.
- Standalone Issues: Not every issue requires an Epic or Milestone; small, independent tasks can exist outside the hierarchy. This is a common case for one-off requests or existing issues that we don’t need to take the time to organize.
Estimation & Cycles (completely optional!)
- Iterations: Work can be tracked in 2-week "Cycles."
- Fibonacci Estimates: Use standard delineations (1, 2, 3, 5, 8, 13).
- 1 (trivial): Tiny changes. Text edits, CSS tweaks, or fixing a typo. No real risk.
- 2 (small): A well-defined task. Adding a simple UI button or a single unit test.
- 3 (medium): A standard task. Requires logic changes, e.g., a new API endpoint or a reusable Vue component.
- 5 (large): Multi-day effort. Significant logic or UI work. Example: A new filtered search feature.
- 8 (huge): The Cycle Ceiling. Full-stack work or high-uncertainty tasks. Takes most of the cycle.
- ⚠️ 13 (oversized): ****Break this down. This is too large for one cycle. Must be split into smaller issues. It may be an Epic. It may even be a Milestone.
- The 13 Rule: Any issue estimated at a 13 is considered too large and must be broken down into smaller issues before work begins.
Ceremonies
"Ceremonies" remain unchanged by this document. We can continue to meet once every two weeks to discuss incoming work. Milestone creation, Epic tracking, and Issue organization can happen on an as-needed basis outside of those meetings. Individuals should decide whether to assign work to a cycle or use an estimate for a given issue. Organizing issues into Milestones and Epics should also be utilized only so much as they are helpful. Not all issues will fit into this paradigm.
Perhaps most importantly, these tools are for developer consideration only and are not to be used to communicate to other teams when issues will be resolved.
Useful Github Project Views
- Current Cycle View: Grouped by Status, filtered for the current Iteration. An individuals's primary daily workspace.
- Backlog View: Grouped by Type, filtered for issues with no assigned Iteration. Used for planning upcoming cycles.
- Roadmap View: A timeline layout grouped by Milestone to visualize long-term progress for stakeholders.
- Epic Tracker: A specific view filtered for
Type: Epicand grouped by Status to monitor feature-level completion.