|
| 1 | +**Project Tracking Template v01** is a template for a simple engineering work tracking project that can span multiple repos. The project avoids the confusion and the clunkiness around GH Issues and Millstones and includes convenient estimation automations. |
| 2 | + |
| 3 | +# Key differentiators |
| 4 | + |
| 5 | +## Avoid the clunkiness and the confusion around _Issues_ and Project _Work Items_ |
| 6 | + |
| 7 | +_Issues'_ primary purpose is (traditionally) to be a mechanism for interacting with the open source community and with a distributed Dev team. |
| 8 | +Moreover, _issues_ exist on a repository level. |
| 9 | + |
| 10 | +On contrary, project _work items'_ primary purpose is to plan and track tasks. |
| 11 | +_Work items_ exists on a project level and a single project may span several repositories. |
| 12 | +Project _work items_ are managed and controlled by project leads (or whoever is responsible for planning, scheduling, prioritization, etc.) with input from the Dev team. Specific _work items_ may or may not be linked to specific _issues_, but their respective purposes are very different. |
| 13 | + |
| 14 | +To keep these concepts separate and to avoid confusion, this project uses only Non-Issue Work Items on its boards (GitHub confusingly calls them "draft items", although there is nothing "drafty" or "preliminary" about them). |
| 15 | + |
| 16 | +## Avoid the clunkiness around _Milestones_ by using _Mileposts_ |
| 17 | + |
| 18 | +_Milestones_ exist on a repository level, while projects span multiple repositories. This creates clunkiness around using milestones for tracking delivery stages in multi-repo projects. To avoid this, we use a custom field called "_Milepost_". |
| 19 | +_Mileposts_ are named `01. Moniker A` ... `99. Moniker ZZ`. |
| 20 | + |
| 21 | + |
| 22 | +# Estimation Strategy |
| 23 | + |
| 24 | +Users estimate work items using two custom fields: |
| 25 | + - `Size`: an estimated _range_ for time/effort required to complete a work item. |
| 26 | + - `Risk`: a level of confidence that the size estimation is correct. |
| 27 | + |
| 28 | +The auto-computed custom field `Days Estimate` is a _single number_ based on those inputs. It is used for planning how long multiple sequential work items will take. |
| 29 | +For that, `Days Estimate`-values of the respective work items are summed up. The result represents the estimated number of **_working_ days** required to complete the work item(s), given the respective items' risk-confidence, and assuming **_full_ and _exclusive_ concentration** on that work. |
| 30 | + |
| 31 | +Details and guidance on performing estimations, and on computing and interpreting estimate values [can be found](https://github.com/macrogreg/ProjectTrackingTemplate/blob/master/README.md#estimating-work-items-and-computing-time-effort) in the below-mentioned repo. |
| 32 | + |
| 33 | +### Auto-computing `Days Estimate` |
| 34 | + |
| 35 | +Do _not_ manually edit the values in the `Days Estimate` field. They are _automatically_ computed as described here. |
| 36 | + |
| 37 | +The script that automatically computes `Days Estimate` is located in the repo [macrogreg/ProjectTrackingTemplate](https://github.com/macrogreg/ProjectTrackingTemplate). When you use this template to create a project, you need to clone that repo, point it to your new project, and respectively configure the security tokens for project access (detailed instructions in the repo). |
| 38 | + |
| 39 | +The estimation update script is triggered by a GitHub workflow that runs every 20 minutes automatically (and can also be run manually as needed). The workflow is located in the same repo. |
| 40 | + |
| 41 | + |
| 42 | +# Custom Fields |
| 43 | + |
| 44 | +## Team |
| 45 | + |
| 46 | +The _engineering team_ and/or the _general product area_ to which a work item belongs. |
| 47 | + |
| 48 | +> Change/adjust the list of teams as needed after creating a new project based on this template. `X-Team` stands for cross-team. |
| 49 | +
|
| 50 | +Use for high-level planning: Loosely speaking, work items from different teams can be performed in parallel, while items from the same team need to be sequenced. (This is stark simplification; work across teams may still have sequential dependencies, and work within a team may still be possible to parallelize.) |
| 51 | + |
| 52 | +Use in dashboard queries: Group or filter by `Team` to focus on work items related to a single engineering team or a general product area. |
| 53 | + |
| 54 | +## Milepost |
| 55 | + |
| 56 | +The earliest high-level project stage or release for which a work item is required. |
| 57 | + |
| 58 | +Similar to the "milestone" (a built-in GitHub concept). `Milepost` is preferred over milestones, because milestones exist on a repository level, while project mileposts can span multiple repositories. Using milestones would create clunkiness and overhead in keeping milestones synchronized across repos, or when a repo is used by different projects with potentially different "stages". The additional milestone-related features (e.g. dates) are not required for nimble low-overhead planning style embraced by this project. |
| 59 | + |
| 60 | +_Milepost_ items are named like `NN. Xyz`. |
| 61 | +E.g. `01. Moniker AA`, ..., `99. Moniker ZZ`. |
| 62 | +Use number prefixes for logical sorting and make sure to reserve free numbers to add milestones later. Reserve number ranges for "special" mileposts. |
| 63 | + |
| 64 | +> Change/adjust the list of mileposts as needed after creating a new project based on this template. |
| 65 | +
|
| 66 | +## Priority |
| 67 | + |
| 68 | +The priority of completing a work item within the specified scope and timeline. |
| 69 | + |
| 70 | +Use `P1` (must complete), `P2` (should complete), `P3` (nice to have). |
| 71 | +Never use `P0` for project planning. `P0` indicates unplanned "drop everything else" work, like severe operational issues or newly discovered security issues. |
| 72 | + |
| 73 | +> You may change/adjust the list of possible priorities as needed after creating a new project based on this template, but it is recommended to keep the default option. |
| 74 | +
|
| 75 | +## Story-Group |
| 76 | + |
| 77 | +A specific or set of features or a specific product area that groups related work items. |
| 78 | +A particular `Story-Group` may map to a specific high-level user-story, or it may describe a group of user-stories around the same product area. |
| 79 | +A `Story-Group` can include work items from different Teams or Mileposts. |
| 80 | + |
| 81 | +> Change/adjust the list of mileposts as needed after creating a new project based on this template. |
| 82 | +> Large projects may have a large, steadily growing number of Story Groups. Curate as needed. |
| 83 | +
|
| 84 | +## Waiting on |
| 85 | + |
| 86 | +Set to a non-empty value when an item's is `Status` is `In progress`, but actual progress towards completion cannot be made. |
| 87 | +The value of the `Blocked on` field describes what specifically prevents work towards item completion. |
| 88 | +Clear this field if an item becomes unlocked again. |
| 89 | + |
| 90 | +> Change/adjust the list of `Waiting on`-values as needed after creating a new project based on this template, but keep their number low and keep things simple. |
| 91 | +
|
| 92 | +## Size |
| 93 | + |
| 94 | +An estimated number of working days required to complete a work item. |
| 95 | +See "Estimation Strategy"-section in this doc. |
| 96 | + |
| 97 | +> Do NOT change/adjust the list of possible `Size`-values after creating a new project based on this template. Automation depends on them. |
| 98 | +
|
| 99 | +## Risk |
| 100 | + |
| 101 | +A level of confidence that the `Size`-estimation is correct. |
| 102 | +See "Estimation Strategy"-section in this doc. |
| 103 | + |
| 104 | +> Do NOT change/adjust the list of possible `Risk`-values after creating a new project based on this template. Automation depends on them. |
| 105 | +
|
| 106 | +## Days Estimate |
| 107 | + |
| 108 | +> The `Days Estimate`-value is auto-computed. Do NOT edit manually. |
| 109 | +
|
| 110 | +A single-number estimate for how many working days a work item will actually take to complete, based on specified `Size` and `Risk`. |
| 111 | +`Days Estimate` values for multiple for items are summed up for planning how many working days are required to sequentially complete those work items. |
| 112 | +See "Estimation Strategy"-section in this doc. |
| 113 | + |
0 commit comments