[teampractices] How to best track the work within Phabricator Epic tasks

Mukunda Modell mmodell at wikimedia.org
Fri Jan 6 01:27:22 UTC 2017


On Thu, Oct 20, 2016 at 7:42 PM, Max Binder <mbinder at wikimedia.org> wrote:

> For bigger 'epic' tasks, it might be better to collect them together under
>> a milestone in the parent project.
>
>
> I agree with this. I think for sagas, you can have a whole dedicated
> project, and for epics, you can have Milestones. If the Milestones are a
> problem (they don't allow relative prioritization of tasks on the same
> board, they create #toomanycolumns, etc) then you can create a dedicated
> Milestone board, and Herald tag everything on that board with the parent
> project.
>
>
I try to very gently discourage using herald to tag everything with a
parent project. It hasn't become a problem yet but ultimately herald rules
do not scale. The herald rules themselves are tedious to create and
maintain and they are slow for phabricator to process. If we get too many
herald rules then phabricator will be slow and fixing it will be tedious.
The overhead is in the range of 10ms to 100ms per herald rule.

I didn't start out to be a naysayer though. I am really replying to to
share some team practices with the group based on experience with the
#Scap3 project.

https://phabricator.wikimedia.org/project/board/1449/ is the parent
project. It could be a sub-project under our team project but it's
currently a top-level project. The top level workboard is mostly for
backlog and high-level categorization of the tasks. We have created
milestones that approximately correspond to quarterly goals. When something
moves from backlog it can go into a future milestone, the current milestone
or into the "debt" column for a future tech debt sprint. Further
prioritization and progress tracking happens within each milestones'
workboard:

https://phabricator.wikimedia.org/project/subprojects/1449/

We still end up with epic tasks and the phabricator task graph helps with
those but I think milestones are nice for this sort of thing. Milestones
could represent any amount of work, not just quarterly goals, however, the
key advantage in keeping them small is that you can easily see everything
on one screen. So I would recommend scoping your milestones so that they
are limited to whatever you feel is a manageable set of tasks that doesn't
become overwhelming to look at.

The line between manageable and overwhelming is obviously subjective but I
think it's useful to think of milestones in this way.

Anyway that's my $0.02 about milestones.

Happy Practicing,
Mukunda


> This approach doesn't preclude Epics. Indeed, you'll find yourself with
> tasks that you didn't realize were as big as they turned out to be, or that
> get scope creep. That's fine. If that's the case, though, ruthless grooming
> into dedicated projects and Milestones seems appropriate.
>
> Regardless, it seems like all of these approaches benefit from having
> someone who pays attention to the growing task list and constantly sorts
> and prioritizes.
>
> On Wed, Oct 12, 2016 at 12:47 AM, Mukunda Modell <mmodell at wikimedia.org>
> wrote:
>
>> For tasks with many tiny subtasks, I choose to outline them in the
>> description and avoid creating separate subtasks.
>>
>> For bigger 'epic' tasks, it might be better to collect them together
>> under a milestone in the parent project.
>>
>> For tasks with several interdependent sub-tasks I think the phabricator
>> task dependency tree works pretty well for understanding the order and
>> status of tasks. Sure the presentation could use a lot of improvement but
>> it doesn't seem that terrible to me (especially after recent updates to fix
>> horizontal scrolling issues)
>>
>> The biggest failure in the subtask graph, IMO, is when you have more than
>> say 10 direct subtasks and the thing starts to get really wide.
>>
>> On Fri, Oct 7, 2016 at 3:59 PM, Kevin Smith <ksmith at wikimedia.org> wrote:
>>
>>> If my years of programming taught me anything, it is the evil of
>>> duplication. There needs to be one authoritative source of information. Any
>>> copy is at high risk of being out-of-date or out-of-synch, either of which
>>> make it misleading. For me, misleading information is (much) worse than
>>> none at all.
>>>
>>> In approach 1:
>>>
>>>    - Sequencing can be handled by creating sub/parent task dependency
>>>    chains among the children. It's ugly, and the new phab terminology really
>>>    sucks for this use case, but it is possible, if it's important. Or we could
>>>    adopt a convention of putting sequence numbers at the start of each subtask
>>>    title, in cases where sequencing matters and is not obvious.
>>>    - I agree that the graphic presentation is horrible, although the
>>>    more I stare at the little spaghetti mazes, the more I start to believe
>>>    that I might be starting to understand them.
>>>
>>> I think this issue intersects with:
>>>
>>> Should we "explode" tasks pro-actively/early? I am increasingly thinking
>>> the answer is "no".
>>>
>>> Should we use phabricator as our primary tool for learning the status
>>> and ​next steps of an epic? I'm also leaning toward "no", because the epic
>>> owner/shepherd should serve as a reasonable source of that information.
>>>
>>>
>>>
>>>
>>> Kevin Smith
>>> Agile Coach, Wikimedia Foundation
>>>
>>>
>>> On Thu, Sep 29, 2016 at 11:13 PM, Joel Aufrecht <jaufrecht at wikimedia.org
>>> > wrote:
>>>
>>>> TPG is struggling with practices for having lists of sub-tasks within
>>>> Phabricator tasks. So far we have used two approaches, neither fully
>>>> satisfactory, and we are looking for approaches that solve all of the
>>>> problems with none of the drawbacks.
>>>>
>>>> The most common example of this problem is a complex piece of work,
>>>> e.g. an "Epic" task, which has many subcomponents and which may take months
>>>> to complete in full. We generally create a Phabricator task to track this
>>>> work as a whole, tagged as "Epic". Then, we have two different approaches
>>>> to decomposition.
>>>>
>>>>
>>>> *Approach 1: Pure subtasks*
>>>>
>>>> For each divisible piece of work within this Epic, we create a separate
>>>> Phabricator task as a subtask of the Epic. The Epic task itself has a brief
>>>> description. An example of this is T137479: [EPIC] Provide support to
>>>> people in design-related roles
>>>> <https://phabricator.wikimedia.org/T137479>.
>>>>
>>>> What works well:
>>>>
>>>>    - All divisible work is tracked as subtasks, so they can be
>>>>    properly tracked (status is clear, responsibility is clear, history is
>>>>    logged, etc.)
>>>>
>>>> What works poorly:
>>>>
>>>>    - All work must be decomposed into sub-tasks (as opposed to being
>>>>    left in outline form)
>>>>    - The relative order of sub-tasks cannot be modified.
>>>>    - The list of subtasks is presented in the Task Graph, which is not
>>>>    as familiar or legible as an indented bullet list
>>>>    - Sub-tasks may have multiple parents, which is confusing to users
>>>>    expecting pure trees.  For example:
>>>>
>>>>
>>>> ​*Approach 2: Manual subtask tree*
>>>>
>>>> The work comprising the Epic is documented in the Phabricator
>>>> Description field as a list or tree of subcomponents, which may be either
>>>> lines of text or links to Phabricator sub-tasks.  Example: T122839: A
>>>> documented and agreed upon definition of ‘core work’ exists
>>>> <https://phabricator.wikimedia.org/T122839>.
>>>>
>>>> What works well:
>>>>
>>>>    - The order of subtasks can be edited
>>>>    - Small pieces of work can be documented as lines of text instead
>>>>    of complete Phabricator tasks
>>>>    - The work breakdown is more legible to those expecting a checklist
>>>>    or tree
>>>>    - Sub-tasks can be documented using the {T######} shortcut, which
>>>>    auto-updates title and status.
>>>>    - Changes to the Description are well-highlighted in update emails.
>>>>
>>>> What works poorly:
>>>>
>>>>    - The subtasks in Phabricator inevitably get out of sync with the
>>>>    list of subtasks in the Description.
>>>>    - The status of checkboxes in the description inevitably gets out
>>>>    of sync with the status of subtasks
>>>>    - The history of text-only tasks in the description is not easily
>>>>    accessible in the web interface.
>>>>
>>>> Example:
>>>>
>>>> Should we commit to Approach 1 or 2, or are there other approaches
>>>> which provide the benefits of both?
>>>>
>>>>
>>>>
>>>> *-- Joel Aufrecht*
>>>> Team Practices Group
>>>> Wikimedia Foundation
>>>>
>>>> _______________________________________________
>>>> teampractices mailing list
>>>> teampractices at lists.wikimedia.org
>>>> https://lists.wikimedia.org/mailman/listinfo/teampractices
>>>>
>>>>
>>>
>>> _______________________________________________
>>> teampractices mailing list
>>> teampractices at lists.wikimedia.org
>>> https://lists.wikimedia.org/mailman/listinfo/teampractices
>>>
>>>
>>
>> _______________________________________________
>> teampractices mailing list
>> teampractices at lists.wikimedia.org
>> https://lists.wikimedia.org/mailman/listinfo/teampractices
>>
>>
>
> _______________________________________________
> teampractices mailing list
> teampractices at lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/teampractices
>
>

On Thu, Oct 20, 2016 at 7:42 PM, Max Binder <mbinder at wikimedia.org> wrote:

> For bigger 'epic' tasks, it might be better to collect them together under
>> a milestone in the parent project.
>
>
> I agree with this. I think for sagas, you can have a whole dedicated
> project, and for epics, you can have Milestones. If the Milestones are a
> problem (they don't allow relative prioritization of tasks on the same
> board, they create #toomanycolumns, etc) then you can create a dedicated
> Milestone board, and Herald tag everything on that board with the parent
> project.
>
> This approach doesn't preclude Epics. Indeed, you'll find yourself with
> tasks that you didn't realize were as big as they turned out to be, or that
> get scope creep. That's fine. If that's the case, though, ruthless grooming
> into dedicated projects and Milestones seems appropriate.
>
> Regardless, it seems like all of these approaches benefit from having
> someone who pays attention to the growing task list and constantly sorts
> and prioritizes.
>
> On Wed, Oct 12, 2016 at 12:47 AM, Mukunda Modell <mmodell at wikimedia.org>
> wrote:
>
>> For tasks with many tiny subtasks, I choose to outline them in the
>> description and avoid creating separate subtasks.
>>
>> For bigger 'epic' tasks, it might be better to collect them together
>> under a milestone in the parent project.
>>
>> For tasks with several interdependent sub-tasks I think the phabricator
>> task dependency tree works pretty well for understanding the order and
>> status of tasks. Sure the presentation could use a lot of improvement but
>> it doesn't seem that terrible to me (especially after recent updates to fix
>> horizontal scrolling issues)
>>
>> The biggest failure in the subtask graph, IMO, is when you have more than
>> say 10 direct subtasks and the thing starts to get really wide.
>>
>> On Fri, Oct 7, 2016 at 3:59 PM, Kevin Smith <ksmith at wikimedia.org> wrote:
>>
>>> If my years of programming taught me anything, it is the evil of
>>> duplication. There needs to be one authoritative source of information. Any
>>> copy is at high risk of being out-of-date or out-of-synch, either of which
>>> make it misleading. For me, misleading information is (much) worse than
>>> none at all.
>>>
>>> In approach 1:
>>>
>>>    - Sequencing can be handled by creating sub/parent task dependency
>>>    chains among the children. It's ugly, and the new phab terminology really
>>>    sucks for this use case, but it is possible, if it's important. Or we could
>>>    adopt a convention of putting sequence numbers at the start of each subtask
>>>    title, in cases where sequencing matters and is not obvious.
>>>    - I agree that the graphic presentation is horrible, although the
>>>    more I stare at the little spaghetti mazes, the more I start to believe
>>>    that I might be starting to understand them.
>>>
>>> I think this issue intersects with:
>>>
>>> Should we "explode" tasks pro-actively/early? I am increasingly thinking
>>> the answer is "no".
>>>
>>> Should we use phabricator as our primary tool for learning the status
>>> and ​next steps of an epic? I'm also leaning toward "no", because the epic
>>> owner/shepherd should serve as a reasonable source of that information.
>>>
>>>
>>>
>>>
>>> Kevin Smith
>>> Agile Coach, Wikimedia Foundation
>>>
>>>
>>> On Thu, Sep 29, 2016 at 11:13 PM, Joel Aufrecht <jaufrecht at wikimedia.org
>>> > wrote:
>>>
>>>> TPG is struggling with practices for having lists of sub-tasks within
>>>> Phabricator tasks. So far we have used two approaches, neither fully
>>>> satisfactory, and we are looking for approaches that solve all of the
>>>> problems with none of the drawbacks.
>>>>
>>>> The most common example of this problem is a complex piece of work,
>>>> e.g. an "Epic" task, which has many subcomponents and which may take months
>>>> to complete in full. We generally create a Phabricator task to track this
>>>> work as a whole, tagged as "Epic". Then, we have two different approaches
>>>> to decomposition.
>>>>
>>>>
>>>> *Approach 1: Pure subtasks*
>>>>
>>>> For each divisible piece of work within this Epic, we create a separate
>>>> Phabricator task as a subtask of the Epic. The Epic task itself has a brief
>>>> description. An example of this is T137479: [EPIC] Provide support to
>>>> people in design-related roles
>>>> <https://phabricator.wikimedia.org/T137479>.
>>>>
>>>> What works well:
>>>>
>>>>    - All divisible work is tracked as subtasks, so they can be
>>>>    properly tracked (status is clear, responsibility is clear, history is
>>>>    logged, etc.)
>>>>
>>>> What works poorly:
>>>>
>>>>    - All work must be decomposed into sub-tasks (as opposed to being
>>>>    left in outline form)
>>>>    - The relative order of sub-tasks cannot be modified.
>>>>    - The list of subtasks is presented in the Task Graph, which is not
>>>>    as familiar or legible as an indented bullet list
>>>>    - Sub-tasks may have multiple parents, which is confusing to users
>>>>    expecting pure trees.  For example:
>>>>
>>>>
>>>> ​*Approach 2: Manual subtask tree*
>>>>
>>>> The work comprising the Epic is documented in the Phabricator
>>>> Description field as a list or tree of subcomponents, which may be either
>>>> lines of text or links to Phabricator sub-tasks.  Example: T122839: A
>>>> documented and agreed upon definition of ‘core work’ exists
>>>> <https://phabricator.wikimedia.org/T122839>.
>>>>
>>>> What works well:
>>>>
>>>>    - The order of subtasks can be edited
>>>>    - Small pieces of work can be documented as lines of text instead
>>>>    of complete Phabricator tasks
>>>>    - The work breakdown is more legible to those expecting a checklist
>>>>    or tree
>>>>    - Sub-tasks can be documented using the {T######} shortcut, which
>>>>    auto-updates title and status.
>>>>    - Changes to the Description are well-highlighted in update emails.
>>>>
>>>> What works poorly:
>>>>
>>>>    - The subtasks in Phabricator inevitably get out of sync with the
>>>>    list of subtasks in the Description.
>>>>    - The status of checkboxes in the description inevitably gets out
>>>>    of sync with the status of subtasks
>>>>    - The history of text-only tasks in the description is not easily
>>>>    accessible in the web interface.
>>>>
>>>> Example:
>>>>
>>>> Should we commit to Approach 1 or 2, or are there other approaches
>>>> which provide the benefits of both?
>>>>
>>>>
>>>>
>>>> *-- Joel Aufrecht*
>>>> Team Practices Group
>>>> Wikimedia Foundation
>>>>
>>>> _______________________________________________
>>>> teampractices mailing list
>>>> teampractices at lists.wikimedia.org
>>>> https://lists.wikimedia.org/mailman/listinfo/teampractices
>>>>
>>>>
>>>
>>> _______________________________________________
>>> teampractices mailing list
>>> teampractices at lists.wikimedia.org
>>> https://lists.wikimedia.org/mailman/listinfo/teampractices
>>>
>>>
>>
>> _______________________________________________
>> teampractices mailing list
>> teampractices at lists.wikimedia.org
>> https://lists.wikimedia.org/mailman/listinfo/teampractices
>>
>>
>
> _______________________________________________
> teampractices mailing list
> teampractices at lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/teampractices
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.wikimedia.org/pipermail/teampractices/attachments/20170105/1e8cacf2/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: confusing_tree.png
Type: image/png
Size: 40574 bytes
Desc: not available
URL: <https://lists.wikimedia.org/pipermail/teampractices/attachments/20170105/1e8cacf2/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: breakdown_example.png
Type: image/png
Size: 13982 bytes
Desc: not available
URL: <https://lists.wikimedia.org/pipermail/teampractices/attachments/20170105/1e8cacf2/attachment-0003.png>


More information about the teampractices mailing list