Team Practices Group/Task Tracking

Tasks in Phabricator
TPG uses Phabricator to track TPG-specific tasks (as opposed to work TPG is doing for other teams). Our convention is to create a Phabricator ticket for all work that:
 * 1) will take a non-trivial amount of time
 * 2) OR will require review or other passing of responsibility
 * 3) OR will require follow-up at a future time

Projects and Backlogs
All TPG tasks should belong to one of the following two Phabricator projects. Each column in each project represents a state for open tasks.


 * 1) Team-Practices General team backlog. This is like a "Product Backlog".
 * 2) * To Triage
 * 3) * General backlog
 * 4) * In-progress EPICS
 * 5) * This-Week
 * 6) Team-Practices-This-Week Work committed to in the current week. This is like a "Sprint backlog".
 * 7) * To Do
 * 8) * Blocked or Waiting
 * 9) * In Progress
 * 10) * Needs Review
 * 11) * Done

Projects that categorize
All tasks that get actively worked on are also tagged with one of these tags, which represent official quarterly goals, or a catch-all bucket for non-goal work:
 * TPG Projects currently in use
 * Historical TPG Projects


 * Use the query http://phlogiston.wmflabs.org/tpg_open_by_category.html to identify any "Uncategorized" TPG tasks and assign them to one of these projects.

Priority
TPG tracks task priority in several ways. Primarily, the priority of a task for TPG is determined by its location within the boards. determined first by which column and project the task is in, and then by the order of the task within each column.

TODO: what is the relative order of the column and projects? e.g., if someone is assigned a task to review and a task to complete, which comes first? Proposals:
 * Option 1. All tasks in Team-Practices-This-Week are more important than any tasks in Team-Practices. Within Team-Practices-This-Week, the rightmost column is most important and the leftmost least important.  Within each column, the top task is most important and the bottom task least important.  Within Team-Practices, To Triage is most important (because it could have a high-priority, urgent item), then General Backlog, then Team Radar.

A second way that priority is tracked is the Priority field in Phabricator. TODO: what do we want to do with this? Note that, if a task is in non-TPG projects, we don't have any control over this field.
 * Option 2. maintain a new field which is absolute order.  (What benefits?)
 * Option 1. Treat this as a severity field. If so, how can we reduce the name confusion?
 * Option 2. Ignore
 * Option 3. Use as tiebreaker
 * Option 4. Use both board location and Priority field. How?

Adding Work
Anyone can add new tasks at any time. New tasks are added to the To Triage column of the Team-Practices project.

Taking work
TPG members assign tasks to themselves - TODO: how/can this happen outside of Weekly Planning?

Finishing work
When a TPG member thinks they have completed a task: When reviewing a task:
 * 1) If the task needs review, ask (e.g., in IRC) who can review it
 * 2) assign it to them
 * 3) move the task to the In Review column
 * 4) Note: The team limits reviews to four tasks at once (see the denominator if the fraction to the right in the column title- the nominator is the number of tasks actually in review
 * 5) If not
 * 6) move the task to the Done column
 * 1) If somebody else should review it next,
 * 2) assign it to them
 * 3) leave it in Needs Review
 * 4) If it is acceptable as-is,
 * 5) Option A: move to Done column and assign to Arthur
 * 6) Option B: comment in the ticket.  (In the next review meeting; move it to Done)
 * 7) If it needs changes, move to In Progress Column and assign back to person who did the task.

Removing Work
TBD

Getting Stuck

 * 1) If a task is blocked by a dependency or is waiting on someone's input, move it to the Blocked or Waiting column.

Backlog Triage/Grooming Meeting
Conducted in a weekly meeting by rotating TPG members. Have the TPG Weekly Meeting Agenda handy to add stuff as needed.
 * 1) Triage. For each Task in the To Triage column of Team-Practices project, in descending order:
 * 2) Clarify the title and/or description if needed
 * 3) If it can't be clarified, assign to the reporter to clarify, or to a TPG member to interview the reporter and move to next Task.
 * 4) Set the Priority Field (if TPG owns it.)
 * 5) See open discussion about what priority field means.
 * 6) Remove it from the To Triage Column:
 * 7) If possible, cut it:
 * 8) Is it a duplicate?  Open the better version and Merge Duplicate back to this one to eliminate it.
 * 9) Is TPG involvement unnecessary?  Remove the Team-Practices project from the task and explain why in the comment.
 * 10) Is it invalid (because it's not part of the TPG mandate,  not something we realistically expect to do, or not comprehensible)?   Mark it resolved and explain why in a comment.
 * 11) TODO: What is the reporter, if not part of TPG, supposed to do next?
 * 12) If a next action is possible for the task, move it to the General Backlog column.
 * 13) Prioritize the task relative to the rest of the backlog and place in the stack at an appropriate location.
 * 14) If no action is currently possible or appropriate, but it cannot be cut, move it to the Team Radar column.
 * 15) Put it at the bottom of the Team Radar column order, so that the oldest tasks are on top.
 * 16) All tasks in Team Radar must have a TPGer as a subscriber.
 * 17) Groom backlog.  For each item in the General Backlog column, work down this list of checks, using judgment and progressive exploration to do as little as necessary to maintain the quality of the task:
 * 18) Is the Phabricator entry current?
 * 19) Can we cut or merge this?
 * 20) Should we skip this item for this week?  (Because it's already shovel-ready, or because nothing has changed)
 * 21) Should this move up or down in priority?
 * 22) Should it be retitled?
 * 23) Are there new or missed dependencies?
 * 24) Should anyone be added or removed from the list of people associated with the task?
 * 25) Is it shovel-ready?  TODO: need definition of shovel-ready for TPG.
 * 26) Check Radar.  For each item in the Radar column, in descending order:
 * 27) Does this item need attention?  If so, treat as a To Triage item and move out of Radar column.

Weekly Review Meeting
Conducted in a weekly meeting with all of TPG
 * 1) Check for Doneness.  For each item in the Done column of the Team-Practices-This-Week project, in descending order:
 * 2) Is this item Done? (Suggested: Arthur and original submitter (if not Arthur) decide together if it's Done.)
 * 3) If so, mark it resolved.
 * 4) If not, is it helpful to track the remaining work separately?
 * 5) If so, mark it resolved and open a new issue to cover remaining details
 * 6) If not, assign it to the appropriate person and move it back to In Progress or Blocked or Waiting.

Weekly Planning
Conducted in a weekly meeting with all of TPG.
 * 1) Review Needs Review.  For each item in the Needs Review column of the Team-Practices-This-Week project, in descending order:
 * 2) Understand the item status.
 * 3) If it's stuck, change priorities or assign to someone else
 * 4) Otherwise, leave as work in progress
 * 5) Review Progress. For each item in the In Progress column of the Team-Practices-This-Week project, in descending order, check to see if Phabricator has fallen behind reality (i.e., if somebody did work on the task during the week but didn't update Phab):
 * 6) Skip if relevant people are missing.
 * 7) Is it Done, or Ready for Review?  Do steps in Finishing Work above.
 * 8) Is it stuck?  Do steps in Stuck.
 * 9) Does the person it's assigned to want someone else to take it?
 * 10) Unstick stuck work.  For each item in the Blocked or Waiting column of the Team-Practices-This-Week project, in descending order:
 * 11) Find a way to unstick the work:
 * 12) Split into smaller tasks
 * 13) And consider if any of the new tasks are non-essential and can be closed?
 * 14) Assign to someone else.
 * 15) To complete
 * 16) To escalate
 * 17) Start new work.  For each item in the To Do column of the Team-Practices-This-Week project, in descending order:
 * 18) Confirm that the item is shovel-ready. (TODO - may be replaced by having a shovel-ready column at the end of Grooming)
 * 19) Does anyone want to take this and start working on it this week?
 * 20) TPG members assign tasks to themselves.
 * 21) Is the task ready to start?  Person taking the task clarifies in the meeting or identifies how to get more information.
 * 22) Tasks being worked on are moved to the "In Progress" column.
 * 23) The team tries to limit Work In Progress to six tasks in progress at once (see the denominator if the fraction to the right in the column title- the nominator is the number of tasks actually in progress ).
 * 24) Pull from the General Backlog
 * 25) For each item in the General Backlog of Team-Practices, proceed as per Start New Work above (moving the item into Team-Practices-This-Week project)

Monthly Retrospective
Whoever volunteered to facilitate the next one picks the method. Common elements include:
 * 1) Followup on action items from last retro
 * 2) Team collaboratively builds list of everything significant that happened since the last retro
 * 3) Team builds list of things to celebrate and things to improve, votes, and discusses top items
 * 4) Team does five-finger-mnemonic retro (pinky to thumb) (things that were overlooked, relationships, things we didn't like, #1 takeaway, thing we like)

Discussion

 * Proposal for work categorization
 * Unified Theory of Work Tracking
 * TPG Process Re-engineering Notes