Engagement/MDN Durable Team/Processes: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Added "Communicating" section)
 
(58 intermediate revisions by 5 users not shown)
Line 1: Line 1:
=MDN Durable Team Processes=
=MDN Durable Team Processes=


This page documents the processes used by the [[Engagement/MDN_Durable_Team|MDN Durable Team]], aid understanding by stakeholders, including volunteer contributors. Many terms used here are linked to their definition in the team's [[Engagement/MDN_Durable_Team/Agile_glossary|agile glossary]].
This page documents the processes used by the [[Engagement/MDN_Durable_Team|MDN Durable Team]] to help stakeholders, including volunteer contributors, to understand them. Many terms used here are linked to their definition in the team's [[Engagement/MDN_Durable_Team/Agile_glossary|agile glossary]].


==Proposing Work==
==Assessing Product Opportunities==
Anyone may propose [[Engagement/MDN_Durable_Team/Agile_glossary#User_Story|User Stories]] or [[Engagement/MDN_Durable_Team/Agile_glossary#Epic|Epics]] to be done by the team.  
The MDN team uses an [[Engagement/MDN_Durable_Team/Processes/Opportunity_Assessment|Opportunity Assessment Process]] to evaluate, rank, and flesh out proposed significant changes to the MDN product.


* Team members can create User Stories in the [[Engagement/MDN_Durable_Team/Agile_glossary#Backlog|Backlog]] in [https://tree.taiga.io/project/viya-mdn-durable-team/backlog Taiga], and [https://tree.taiga.io/project/viya-mdn-durable-team/wiki/writing-an-epic Epics as issues].
==Prioritizing Work==
* Other stakeholders can contact the [[Engagement/MDN_Durable_Team/Agile_glossary#Product_Owner|Product Owner]] ([https://mozillians.org/en-US/u/Topal/ Kadir Topal]) to propose User Stories and Epics.
At Mozilla, priorities are set using a framework of [https://en.wikipedia.org/wiki/OKR Objectives and Key Results] (OKRs for short). Objectives are aspirational goals set annually, and Key Results are measurable targets set quarterly. The Epics and User Stories that track work in sprints typically define deliverables that are expected to enable reaching the quarterly Key Results.  


'''Tools'''
Priorities are driven by several factors, including:


* [https://tree.taiga.io/project/viya-mdn-durable-team/backlog Taiga backlog]
* [https://tree.taiga.io/project/viya-mdn-durable-team/issues?page=1&types=404887 List of Epics]
===Connecting Epics and User Stories===
Since an Epic is larger in scope than can be completed in a single Sprint, it must be decomposed into multiple User Stories. Taiga does not explicitly support Epics, so the MDN team represents them as a type of "issue". Epic issues are linked to their user stories, and the user stories are tagged with the issue ID of their epic (for example, "epic 211"). For the mechanics of doing this in Taiga, see [https://tree.taiga.io/project/viya-mdn-durable-team/wiki/connecting-epics-and-user-stories Connecting Epics and User Stories] in the Taiga wiki.
==Prioritizing Work==
The product owner and other team members collaborate to prioritize proposed User Stories and Epics, and place them in the [https://docs.google.com/spreadsheets/d/1TTMsjNUKWg5H7EZh6U7DWhC_ZYzb6jwn4---JDnJyGI/edit?usp=sharing MDN Roadmap], based on when (if ever) they are expected to be worked on. Prioritization is done once per quarter. Priorities are driven by several factors, including:
* Marketing initiatives
* Mozilla software development timelines and releases
* Mozilla software development timelines and releases
* Web standardization milestones
* Web standardization milestones
* Developer Relations initiatives
* IT infrastructure requirements and deadlines
* IT infrastructure requirements and deadlines


Entries in the roadmap are linked to items in the backlog in Taiga, which is the canonical repository of User Stories and Epics.  
[[Engagement/MDN_Durable_Team#Objectives_and_Key_Results|Quarterly Key Results are listed on the MDN Durable Team's wiki page.]] For many efforts, the team creates a Project document, linked from the wiki page. These documents summarize the purpose, success metrics, accountability matrix, and other key elements of the project.


'''Tools'''
'''Tools'''
* [https://www.zenhub.com/extension ZenHub browser extension]
* [https://app.zenhub.com/workspace/o/mdn/sprints/boards?repos=132630865 ZenHub board for MDN]
* [[Engagement/MDN_Durable_Team#Objectives_and_Key_Results|Quarterly Key Results]]
===Triaging Requests===
In addition to [[Engagement/MDN_Durable_Team/Agile_glossary#Epic|Epics]] and [[Engagement/MDN_Durable_Team/Agile_glossary#User_Story|User Stories]] driven by organizational priorities as described above, requests for work to be done by the MDN durable team also arrive in the form of "bugs" or issues, in several forms:


* [https://tree.taiga.io/project/viya-mdn-durable-team/backlog Taiga backlog]
* [https://github.com/mdn/sprints/labels/Content Requests for documentation changes]
* [https://docs.google.com/spreadsheets/d/1TTMsjNUKWg5H7EZh6U7DWhC_ZYzb6jwn4---JDnJyGI/edit?usp=sharing MDN Roadmap]
* [https://mzl.la/DDN Mozilla product issues with the "dev-doc-needed" keyword set]
* [https://mzl.la/MDNBugs Requests for changes to the MDN platform] (product="developer.mozilla.org")


===Triaging Requests===
For the first type of request, see the [[Engagement/MDN_Durable_Team/Processes/Content_issue_triage_process|content issue triage process]].
In addition to Epics and User Stories driven by corporate priorities, requests for work to be done by the MDN durable team also arrive in the form of Bugzilla "bugs", in several forms:
 
Bugs with "dev-doc-needed" are grouped based on the web platform feature they pertain to. A User Story (or Epic) is created to address these "dev-doc-needed bugs" (often shortened to "DDN bugs" or even "DDNs") for each web platform feature, and is scheduled in order to be ready when that feature is available in multiple browsers.
 
The third category of requests is triaged in a weekly "Bug Swat" meeting.  See [https://public.etherpad-mozilla.org/p/mdn-bug-triage MDN Bug Triage Guidelines] for details. See the [[MDN/Meetings]] page for details about triage meetings, and the [https://calendar.google.com/calendar/embed?src=mozilla.com_2d35383434313235392d323530@resource.calendar.google.com&ctz=GMT&pli=1 Public MDN Events calendar] for their schedule.


* Requests for documentation changes (product="Developer Documentation")
The outcome of triaging MDN issues a priority ranging from P1 (highest) to P5 (lowest), with the following meanings:
* Mozilla product issues with the "dev-doc-needed" flag set
* P1: Will be done by staff during the current or next sprint
* Requests for changes to the MDN platform (product="Mozilla Developer Network")
* P2: Will be done by staff during the current quarter
* P3: Will be done by staff "eventually"
* P4: Not used
* P5: Valid issue that will not be done by staff; patches are welcome from volunteer contributors.


The process for triaging the first two types of requests is [https://developer.mozilla.org/en-US/docs/MDN/Contribute/Processes/Documentation_bugs documented on MDN].  
Leaving a bug open is rarely a commitment to fix the bug. P1 and P2 bugs are reviewed at the end/beginning of each quarter to determine if their priority is still valid.


Bugs with "dev-doc-needed" are grouped based on the Firefox version in which the relevant code will be released. A User Story is created to address the "dev-doc-needed" bugs for each Firefox version, and is scheduled in a Sprint in order to be ready for the release date of Firefox Developer Edition with that version.
It's a bit awkward to have some types of work represented as Bugzilla bugs, while the majority of MDN work is represented as GitHub issues. When a Bugzilla issue is planned to be worked on during a sprint, a GitHub issue should be created for it, containing a link to the Bugzilla issue. Use GitHub (and ZenHub) for estimation and status-tracking; use Bugzilla for discussion. Typically, DDN bugs for a given release and functional area of Firefox are grouped into single GitHub issues (e.g., JavaScript DDNs for Firefox 63). DDNs within a group should be estimated individually, and rolled up into an estimate for the group. DDNs that represent a significant chunk of work (e.g., new docs or major revisions) should be split out as separate GH issues from their group.


The third category of requests are triaged in a weekly "Bug Swat" meeting.  See [https://public.etherpad-mozilla.org/p/mdn-bug-triage MDN Bug Triage Guidelines] for details. See the [[MDN/Meetings]] page for details about triage meetings, and the [https://calendar.google.com/calendar/embed?src=mozilla.com_2d35383434313235392d323530@resource.calendar.google.com&ctz=GMT&pli=1 Public MDN Events calendar] for their schedule.
Emergency work can be started immediately and may pre-empt work that was previously planned for the sprint; in such a case, affected team members should confer with the product owner to decide what to do with other affected work.  


The outcome of triaging MDN platform issues is usually either "right now" or "someday". Emergency work ("right now") may be started immediately, and tracked as "other" tasks not contributing to a user story. Bugs in current work may be added as new tasks to existing user stories. Other work will be deferred, either as user stories in future sprints or deferred indefinitely. Leaving a bug open is rarely a commitment to fix the bug.


'''Tools'''
'''Tools'''
* [https://docs.google.com/spreadsheets/d/1YVuD7bQBUMw7hAPafCxR7QmpD3ZmUQ2vaon7d6v2tww/edit?pli=1#gid=1969422041 DocTracker spreadsheet]
* [https://docs.google.com/spreadsheets/d/1YVuD7bQBUMw7hAPafCxR7QmpD3ZmUQ2vaon7d6v2tww/edit?pli=1#gid=1969422041 DocTracker spreadsheet]
* [http://mzl.la/1ACJg7w MDN|Bugzilla triage query]


==Planning Sprints==
==Planning Sprints==
Selection of User Stories to be worked on during a [[Engagement/MDN_Durable_Team/Agile_glossary#Sprint|Sprint]] happens in the week before the start of a new Sprint. Team members in the content and development areas work separately to select and flesh out the User Stories in each area, and place them in the [[Engagement/MDN_Durable_Team/Agile_glossary#Task_Board|Task Board]] for that sprint. The groups also review the [[Engagement/MDN_Durable_Team/Agile_glossary#Task_|Tasks]] for each User Story, to ensure that they can be done in one Sprint, and are complete enough to ensure that the [[Engagement/MDN_Durable_Team/Agile_glossary#Acceptance_Criteria|Acceptance Criteria]] will be met. The whole team convenes for a [[Engagement/MDN_Durable_Team/Agile_glossary#Sprint_Planning_Meeting|Sprint Planning Meeting]] (usually on Thursday), to review and refine all the selected stories for the sprint. The team's committed User Stories will be shared with the broader Marketing team.
Selection of User Stories to be worked on during a [[Engagement/MDN_Durable_Team/Agile_glossary#Sprint|Sprint]] happens in the week before the start of a new Sprint. A sprint is three weeks, with 12 working days and 3 planning days, with some adjustments for quarters and work weeks.
 
Brainstorming of user stories to be worked on happens in a planning scratchpad document (for example, this one from [https://docs.google.com/document/d/1jwXzBDQPpou5gzZKbq_pjOOWTo4G7lyI66BlvVsvD0g/edit?usp=sharing Q3 2018]). Typically, user stories are categorized by the quarterly Key Results they support. However, a given Key Result might not have supporting user stories happening in any given sprint, and a sprint may contain  miscellaneous user stories not connected to a Key Result. Based on this brainstorming, team members create or modify the corresponding user stories as issues in GitHub, and ensure they are ready to be placed in the Backlog in ZenHub. The team optionally identifies a Sprint Goal for Content and Development, which is an area of highest priority for the sub-team; team members are expected to contribute to or support the Sprint Goal foremost if possible. However, it is not required that each sub-team has a Sprint Goal for every sprint, or that team members must work on it, if doing so is not suited to their skill set.
 
Items placed the Backlog must have:
 
* [[Engagement/MDN_Durable_Team/Agile_glossary#Acceptance_Criteria|Acceptance Criteria]]
* Size estimate (points)
 
The size estimate categories are based on the number of "ideal" days they are expected to take to complete; ideal days would be those devoted to working on the story, without meetings, email, or other interruptions. Values can be from 1 to 5; stories that need more than 5 days should be broken into smaller stories. (Fibonacci values are not used.)
 
The MDN team's [https://docs.google.com/document/d/e/2PACX-1vQRQGXpxSwwVvnOWnzQ0S-mBKs_rYDS79UbrNEZtB1R_dypRhl1JOm5-fg53nqGUq1TCyUDH3onOAiz/pub Definition of Ready] defines requirements that certain work types must meet in order to be considered ready to be worked on (and therefore able to scheduled into sprints).
 
This work can be done asynchronously, or during project- or team-specific planning meetings.
 
The whole team convenes for a final [[Engagement/MDN_Durable_Team/Agile_glossary#Sprint_Planning_Meeting|Sprint Planning Meeting]] (usually on Thursday), to review and refine all the selected stories for the sprint. The team should keep in mind the number of person-days available in the sprint (based on the number of days in the sprint, the number of people on the team, and the number of exceptions, such as holidays, PTO, travel, etc.). The total number of story points for the stories in the sprint should not exceed (and preferably be less than) the number of available person-days.
 
'''Note:''' User stories ''must'' have acceptance criteria and estimates by the time of the final sprint planning meeting in order to be accepted into a sprint.


'''Tools'''


* [https://tree.taiga.io/project/viya-mdn-durable-team/backlog Taiga backlog]
User stories are given confidence ratings (High/Medium/Low), indicating how confident the team is that the user story can be completed during the sprint. The team also reviews the [[Engagement/MDN_Durable_Team/Agile_glossary#Task_|Tasks]] for each User Story, to ensure that they can be done in one Sprint, and are complete enough to ensure that the acceptance criteria will be met.  
* [https://docs.google.com/spreadsheets/d/1TTMsjNUKWg5H7EZh6U7DWhC_ZYzb6jwn4---JDnJyGI/edit?usp=sharing MDN Roadmap]
* Task board for the Sprint; each one has a unique URL within Taiga.[[#taskboard|*]]
* [https://tree.taiga.io/project/viya-mdn-durable-team/kanban Kanban board] in Taiga


===User Story Lifecycle===
GitHub milestones are used to represent sprints. For each sprint, a milestone is created with a deadline of the last day of the sprint.
In addition to the Backlog, the MDN team uses the [https://tree.taiga.io/project/viya-mdn-durable-team/kanban Kanban board in Taiga] to track the status of User Stories in the planning process. The team represents the lifecycle of user stories with the following columns:


; Draft
If a user story from one sprint is moved to another sprint, it should have its milestone, size estimate, and confidence estimate updated to correspond to the new sprint, the remaining  work, and the confidence in the context of the new sprint.  
: The user story is proposed, but incomplete.
; New
: The author has added Acceptance Criteria and Tasks; it is ready for review by the team.
; Ready
: The team accepts the user story as complete; it is ready to be prioritized and pushed into a sprint by the Product Owner.
; In Progress
: The user story has been committed for a Sprint, and at least one task is the In Progress task state.
; Ready for Test
: All tasks have been completed; it is ready for review of the Acceptance Criteria and [[Engagement/MDN_Durable_Team/Agile_glossary#Definition_of_Done|Definition of Done]].
; Done
: The Acceptance Criteria and Definition of Done have been met.
; Archived
: User stories that have been abandoned in Ready or In Progress with a comment explaining why they were abandoned (?? and those that were Done in a previous quarter ??).
* User stories that are abandoned in the Draft or New states are deleted from Taiga.


==Managing Work==
The ideal progression of a Sprint is that team members claim tasks, work on each of them until they are all done, and as a result, all the Acceptance Criteria of all the User Stories selected for the sprint are satisfied. Of course, life in the real world never runs perfectly, and the processes of a Sprint are designed accommodate the bumps, blockages, and shifts that naturally happen.


'''Tools'''
'''Tools'''
* Task board for the Sprint; each one has a unique URL within Taiga.[[#taskboard|*]]


===Task Workflow===
* [https://github.com/mdn/sprints/labels#boards?repos=121649843,55001853,70901646,90252175,1352520,3311772,82040629,121278372,33677290,132630865,134759439&showPRs=false ZenHub user story board]
Tasks in a Task Board can be in one of the following states, typically in order (left to right in the columns of the board):
* Story board for the Sprint; filter the main ZenHub board based on the milestone that represents the sprint.
 
===User Story Life Cycle===
The team represents the life cycle of user stories with the following columns (a.k.a., "pipelines" in ZenHub parlance):


; New
; New Issues
: Planned, not being worked on at the moment
: The user story is proposed, but has not been reviewed.
; Epics
: The user story is an epic with sub-stories; epics are usually not assigned to milestones.
; Not Ready
: The story has been accepted to be worked on, but is missing components, such as [[Engagement/MDN_Durable_Team/Agile_glossary#Acceptance_Criteria|Acceptance Criteria]], size estimates or confidence estimates. The missing pieces may be called out by the tags: NeedsAC, NeedsTimeEst, or NeedsConf.
; Backlog
: The team accepts the user story as complete; it is ready to be added into a sprint by assigning a milestone to it. It '''must''' have acceptance criteria, time estimates to be added to the Backlog, and must also have confidence estimates to be added to a sprint.
; In Progress
; In Progress
: Currently being worked on
: The user story has been committed for a Sprint, and work has started on it.
; Ready for Test
; Review/Test
: Completed, needs test or review
: All tasks have been completed; it is ready for review by subject-matter experts (for content stories), or code review by a peer (for development stories).
; Done
: The work and reviews have been completed. It is ready for sign-off by the Product Owner or relevant team lead.
; Closed
; Closed
: Completed and tested or reviewed
: The Product Owner (or team lead) has signed off, based on the Acceptance Criteria and [[Engagement/MDN_Durable_Team/Agile_glossary#Definition_of_Done|Definition of Done]], and has closed the issue.
; Needs Info
; Icebox
: ?? Purpose is not clear
: The issue is valid, but is not going to be worked on by the core staff team. It might be picked up by a volunteer. Or, the issue is deferred, but the future sprint it will go in is not defined.


The following practices govern the handling of tasks:
The following practices concern maintaining user story status:
* If a user story is blocked in such a way that it can't be completed during a sprint, it should be removed from the sprint milestone (with an explanatory comment).
* If a user story is in Done, but the product owner finds that the Acceptance Criteria and [[Engagement/MDN_Durable_Team/Agile_glossary#Definition_of_Done|Definition of Done]] are not complete, it should be moved back to In Progress, and more tasks added that will enable it to reach completion. The [https://docs.google.com/document/d/1blL_Jvu3FhPMTE7PkrqvVLiUqAYDvnmCTTIK5s2b-Yg/edit?usp=sharing Definition of Done] for the MDN team is maintained in a Google document.


* Each task that is not New should have an assigned owner.
==Managing Work==
* Each team member should minimize the number of tasks they have in In Progress at any given time, preferably to one task (but not zero unless on PTO).  
The ideal progression of a Sprint is that team members claim user stories, work on each of them until they are all done, and as a result, all the Acceptance Criteria of all the User Stories selected for the sprint are satisfied. Of course, life in the real world never runs perfectly, and the processes of a Sprint are designed to accommodate the bumps, blockages, and shifts that naturally happen. User Stories may sometimes move back to earlier stages if something unexpected happens, for example, or a user story might be deferred to a later sprint, due to a change in external circumstances, such as slippage of a feature's release.
* If a progress on a task is blocked by a dependency external to the team, set it as "Blocked", with an explanation; mention the blocker in the next Standup meeting.  
 
* If a team member suspends work on a task without being blocked, move it back to the New state; make sure that comments on the task reflect the state of work completed so far, so that it can be picked up by someone else if needed.  
The following practices govern the handling of user stories:
* When a task moves into the Ready for Test state, find a specific other person to test or review the work; if needed, ask for a volunteer during the next Standup meeting. Asking "anyone" to do it means no one will do it.
 
* Each user story that is in In Process should have an assigned owner. GitHub allows multiple people to be assigned to an issue.
* When an items moves into the Review/Test column, find a specific other person to test or review the work. ''Asking "anyone" to do it means no one will do it.'' For items that take a significant amount of time to review, the reviewer should be identified and the review time estimated and accounted for as part of sprint planning. 
* When a work product requires review by someone outside the team, create a separate task for managing the review, to avoid having completion of the main task be blocked by external factors.
* When a work product requires review by someone outside the team, create a separate task for managing the review, to avoid having completion of the main task be blocked by external factors.
* Use the "Unassigned tasks" swimlane for tasks that are not part of a User Story, but are necessary during the sprint and take up significant time of a team member.
* When a content user story is moved to Review/Test, it can be helpful to the reviewer to add a link to the completed or updated documents.


===Tracking progress===
===Tracking progress===
During the 12 work days of a Sprint, team members meet in a daily [[Engagement/MDN_Durable_Team/Agile_glossary#Standup|Standup]] meeting. For the MDN team, the discussion is driven by the order of tasks on the Task Board in the In Progress or Ready for Test columns (vs. "around the room" order).
During the 12 work days of a Sprint, team members need to communicate regularly about progress and obstacles. The MDN does this mostly asynchronously, using [https://statushero.com/ Status Hero]. The sub-teams hold a synchronous  [[Engagement/MDN_Durable_Team/Agile_glossary#Standup|Standup]] meeting on the first Wednesday of a sprint, and the whole team meets for a [[Engagement/MDN_Durable_Team/Agile_glossary#Mid-sprint_check-in|Mid-sprint review]] on the second Monday of the sprint.
 
In addition, the MDN team holds a [[Engagement/MDN_Durable_Team/Agile_glossary#Mid-sprint_check-in|Mid-sprint check-in]] on the second Tuesday of the sprint.


==Sharing Outcomes==
==Sharing Outcomes==
The Marketing-wide [[Engagement/MDN_Durable_Team/Agile_glossary#Sprint_Review|Sprint Review]] is typically held on the Wednesday of the third week of a Sprint cycle. In preparation, the MDN team holds a demo planning meeting on the third Monday, to review the accomplishments expected by the end of the Sprint, and agree on what the team will present in the Sprint Review. Team members add demo items or accomplishments into a template shared by the Scrum Master, which then becomes the demo packet that the team presents.
A sprint demo meeting is held on the Thursday between sprints. Team members add demo items or accomplishments into a document that serves as an agenda for the meeting. Due to time limitations, the demo does not cover all work during the sprint, but rather a few highlights.


While the Product Owner leads the demo for the MDN team, teams members are welcome and encouraged to participate in the demo (while staying within the team's allotted 10 minutes).  
The team should consider whether any items shown or discussed in a sprint demo should be shared with the wider Emerging Technologies audience, at an upcoming monthly ET All-Hands meeting.


'''Tools'''
'''Tools'''
* Google Slides
* Google documents


==Improving Processes==
==Improving Processes==
At the conclusion of a Sprint, the team holds a [[Engagement/MDN_Durable_Team/Agile_glossary#Retrospective|Retrospective]] to reflect on the team's processes and habits, in order to find ways to improve or strengthen them. This meeting is restricted to core team members, to facilitate frank discussion.
At the conclusion of a Sprint, the team holds a [[Engagement/MDN_Durable_Team/Agile_glossary#Retrospective|Retrospective]] to reflect on the team's processes and habits, in order to find ways to improve or strengthen them. This meeting is limited to core team members, to facilitate frank discussion.
 
The MDN durable team uses a slightly different structure for the retrospective discussion:
* How did the adjustments we decided on in the last retrospective go?
* What worked well?
* What should we change or stop doing?
* What steps will we take to improve?


Marketing Durable Teams hold their Retrospectives on the third Wednesday of the sprint cycle, in most cases following the Sprint Review meeting. The MDN team holds theirs on that Wednesday, but ''prior'' to the Sprint Review, to accommodate the schedules of team members in Europe.
Variations on this structure are possible, to avoid staleness. For some retrospectives, it may be helpful to focus on a specific aspect of the work, processes, or tooling used by the team.


If the team decides to change processes that are documented in this article, then this article will be updated to reflect the change.
If the team decides to change processes that are documented in this article, then this article will be updated to reflect the change.


'''Tools'''
'''Tools'''
* Google Docs
* Trello
* This wiki page
* This wiki page


==Communicating about these processes with community and other stakeholders==
==Communicating About Processes With Community And Other Stakeholders==
The plans, activities, and outcomes of the MDN team's processes are of interest to a variety of stakeholders, most especially members of MDN's volunteer community.  
The plans, activities, and outcomes of the MDN team's processes are of interest to a variety of stakeholders, most especially members of MDN's volunteer community.  


The following practices will ensure that information is available to stakeholders as they need it, and is delivered to them at appropriate times.
The following practices will ensure that information is available to stakeholders as they need it, and is delivered to them at appropriate times.


* The MDN Taiga project is set as a "public project".
* All MDN-related GitHub repos are public. Anyone can view the ZenHub board by installing the [https://www.zenhub.com/extension ZenHub extension] in Firefox or Chrome
* The MDN roadmap and other related planning and outcome documents are publicly visible, by being linked from the [[Engagement/MDN_Durable_Team|MDN Durable Team's wiki page]], and set with access "anyone with the link can view".
* The MDN roadmap and other related planning and outcome documents are publicly visible, by being linked from the [[Engagement/MDN_Durable_Team|MDN Durable Team's wiki page]], and set with access "anyone with the link can view".
* The User Stories planned for each Sprint are announced on the [mailto://mdn@lists.mozilla.org MDN] stakeholder mailing list, once they have been decided. Volunteers are encouraged to share their plans for MDN-related work as part of the thread.
* The User Stories planned for each Sprint are announced on the [https://discourse.mozilla-community.org/c/mdn MDN discussion forum], once they have been decided upon. Volunteers are encouraged to share their plans for MDN-related work as part of the thread.
* The work accomplished during a Sprint is shared on the [mailto://mdn@lists.mozilla.org MDN] stakeholder mailing list, along with a link to the MDN team's "demo package". (Note that the Marketing-wide Sprint Demo meeting is not public, because some durable teams may share confidential information.)
* The work accomplished during a Sprint is shared on the [https://discourse.mozilla-community.org/c/mdn MDN discussion forum], along with a link to the MDN team's demo doc.
* MDN Durable Team meetings (except Retrospectives) are public, and are marked in the [https://www.google.com/calendar/embed?src=mozilla.com_2d35383434313235392d323530%40resource.calendar.google.com Public MDN Events calendar], along with video conference connection information for video meetings.  
* MDN Durable Team meetings (except Retrospectives) are public, and are marked in the [https://www.google.com/calendar/embed?src=mozilla.com_2d35383434313235392d323530%40resource.calendar.google.com Public MDN Events calendar], along with video conference connection information for video meetings.  
* Team members are encouraged to seek help from volunteers for day-to-day tasks and reviews of work, by posting on the [mailto://dev-mdc@lists.mozilla.org dev-mdc] mailing list for content-related work, or the [mailto://dev-mdn@lists.mozilla.org dev-mdn] mailing list for web development work, and by discussing their work in [[MDN/Meetings/Community|MDN Community Meetings]].  
* Team members are encouraged to seek help from volunteers for day-to-day tasks and reviews of work, by posting on the [https://discourse.mozilla-community.org/c/mdn MDN discussion forum].
 
* Due to the distributed nature of the MDN team and community, asynchronous communication (email) is preferred over ad-hoc synchronous meetings. Whenever possible, hold discussions in public, such as on the [https://discourse.mozilla-community.org/c/mdn MDN discussion forum].  
 
* When meetings are needed (especially for planning and prioritization), invite all team members, using mandatory and optional attendee settings in Google Calendar to indicate who is required, vs. informed. If possible, add meetings to the MDN public calendar to enable community members to attend. ''Make sure there is a guest Vidyo link in the calendar event.''
 
* Take and share notes of meetings to communicate decisions made, actions assigned, etc.
 
<div id="taskboard" style="font-size: smaller">* To find the task board for a specific Sprint, view the [https://tree.taiga.io/project/viya-mdn-durable-team/backlog backlog], and look in the right sidebar for the name and dates of the Sprint you want; click the '''Sprint Taskboard''' button under the section for that Sprint. Or, on the MDN Durable Team's wiki page, look for the Taskboard link corresponding to the Sprint you want, in the [[Engagement/MDN_Durable_Team#Sprint_Schedule|Sprint Schedule]] table.</div>

Latest revision as of 21:34, 24 July 2019

MDN Durable Team Processes

This page documents the processes used by the MDN Durable Team to help stakeholders, including volunteer contributors, to understand them. Many terms used here are linked to their definition in the team's agile glossary.

Assessing Product Opportunities

The MDN team uses an Opportunity Assessment Process to evaluate, rank, and flesh out proposed significant changes to the MDN product.

Prioritizing Work

At Mozilla, priorities are set using a framework of Objectives and Key Results (OKRs for short). Objectives are aspirational goals set annually, and Key Results are measurable targets set quarterly. The Epics and User Stories that track work in sprints typically define deliverables that are expected to enable reaching the quarterly Key Results.

Priorities are driven by several factors, including:

  • Mozilla software development timelines and releases
  • Web standardization milestones
  • Developer Relations initiatives
  • IT infrastructure requirements and deadlines

Quarterly Key Results are listed on the MDN Durable Team's wiki page. For many efforts, the team creates a Project document, linked from the wiki page. These documents summarize the purpose, success metrics, accountability matrix, and other key elements of the project.

Tools

Triaging Requests

In addition to Epics and User Stories driven by organizational priorities as described above, requests for work to be done by the MDN durable team also arrive in the form of "bugs" or issues, in several forms:

For the first type of request, see the content issue triage process.

Bugs with "dev-doc-needed" are grouped based on the web platform feature they pertain to. A User Story (or Epic) is created to address these "dev-doc-needed bugs" (often shortened to "DDN bugs" or even "DDNs") for each web platform feature, and is scheduled in order to be ready when that feature is available in multiple browsers.

The third category of requests is triaged in a weekly "Bug Swat" meeting. See MDN Bug Triage Guidelines for details. See the MDN/Meetings page for details about triage meetings, and the Public MDN Events calendar for their schedule.

The outcome of triaging MDN issues a priority ranging from P1 (highest) to P5 (lowest), with the following meanings:

  • P1: Will be done by staff during the current or next sprint
  • P2: Will be done by staff during the current quarter
  • P3: Will be done by staff "eventually"
  • P4: Not used
  • P5: Valid issue that will not be done by staff; patches are welcome from volunteer contributors.

Leaving a bug open is rarely a commitment to fix the bug. P1 and P2 bugs are reviewed at the end/beginning of each quarter to determine if their priority is still valid.

It's a bit awkward to have some types of work represented as Bugzilla bugs, while the majority of MDN work is represented as GitHub issues. When a Bugzilla issue is planned to be worked on during a sprint, a GitHub issue should be created for it, containing a link to the Bugzilla issue. Use GitHub (and ZenHub) for estimation and status-tracking; use Bugzilla for discussion. Typically, DDN bugs for a given release and functional area of Firefox are grouped into single GitHub issues (e.g., JavaScript DDNs for Firefox 63). DDNs within a group should be estimated individually, and rolled up into an estimate for the group. DDNs that represent a significant chunk of work (e.g., new docs or major revisions) should be split out as separate GH issues from their group.

Emergency work can be started immediately and may pre-empt work that was previously planned for the sprint; in such a case, affected team members should confer with the product owner to decide what to do with other affected work.


Tools

Planning Sprints

Selection of User Stories to be worked on during a Sprint happens in the week before the start of a new Sprint. A sprint is three weeks, with 12 working days and 3 planning days, with some adjustments for quarters and work weeks.

Brainstorming of user stories to be worked on happens in a planning scratchpad document (for example, this one from Q3 2018). Typically, user stories are categorized by the quarterly Key Results they support. However, a given Key Result might not have supporting user stories happening in any given sprint, and a sprint may contain miscellaneous user stories not connected to a Key Result. Based on this brainstorming, team members create or modify the corresponding user stories as issues in GitHub, and ensure they are ready to be placed in the Backlog in ZenHub. The team optionally identifies a Sprint Goal for Content and Development, which is an area of highest priority for the sub-team; team members are expected to contribute to or support the Sprint Goal foremost if possible. However, it is not required that each sub-team has a Sprint Goal for every sprint, or that team members must work on it, if doing so is not suited to their skill set.

Items placed the Backlog must have:

The size estimate categories are based on the number of "ideal" days they are expected to take to complete; ideal days would be those devoted to working on the story, without meetings, email, or other interruptions. Values can be from 1 to 5; stories that need more than 5 days should be broken into smaller stories. (Fibonacci values are not used.)

The MDN team's Definition of Ready defines requirements that certain work types must meet in order to be considered ready to be worked on (and therefore able to scheduled into sprints).

This work can be done asynchronously, or during project- or team-specific planning meetings.

The whole team convenes for a final Sprint Planning Meeting (usually on Thursday), to review and refine all the selected stories for the sprint. The team should keep in mind the number of person-days available in the sprint (based on the number of days in the sprint, the number of people on the team, and the number of exceptions, such as holidays, PTO, travel, etc.). The total number of story points for the stories in the sprint should not exceed (and preferably be less than) the number of available person-days.

Note: User stories must have acceptance criteria and estimates by the time of the final sprint planning meeting in order to be accepted into a sprint.


User stories are given confidence ratings (High/Medium/Low), indicating how confident the team is that the user story can be completed during the sprint. The team also reviews the Tasks for each User Story, to ensure that they can be done in one Sprint, and are complete enough to ensure that the acceptance criteria will be met.

GitHub milestones are used to represent sprints. For each sprint, a milestone is created with a deadline of the last day of the sprint.

If a user story from one sprint is moved to another sprint, it should have its milestone, size estimate, and confidence estimate updated to correspond to the new sprint, the remaining work, and the confidence in the context of the new sprint.


Tools

  • ZenHub user story board
  • Story board for the Sprint; filter the main ZenHub board based on the milestone that represents the sprint.

User Story Life Cycle

The team represents the life cycle of user stories with the following columns (a.k.a., "pipelines" in ZenHub parlance):

New Issues
The user story is proposed, but has not been reviewed.
Epics
The user story is an epic with sub-stories; epics are usually not assigned to milestones.
Not Ready
The story has been accepted to be worked on, but is missing components, such as Acceptance Criteria, size estimates or confidence estimates. The missing pieces may be called out by the tags: NeedsAC, NeedsTimeEst, or NeedsConf.
Backlog
The team accepts the user story as complete; it is ready to be added into a sprint by assigning a milestone to it. It must have acceptance criteria, time estimates to be added to the Backlog, and must also have confidence estimates to be added to a sprint.
In Progress
The user story has been committed for a Sprint, and work has started on it.
Review/Test
All tasks have been completed; it is ready for review by subject-matter experts (for content stories), or code review by a peer (for development stories).
Done
The work and reviews have been completed. It is ready for sign-off by the Product Owner or relevant team lead.
Closed
The Product Owner (or team lead) has signed off, based on the Acceptance Criteria and Definition of Done, and has closed the issue.
Icebox
The issue is valid, but is not going to be worked on by the core staff team. It might be picked up by a volunteer. Or, the issue is deferred, but the future sprint it will go in is not defined.

The following practices concern maintaining user story status:

  • If a user story is blocked in such a way that it can't be completed during a sprint, it should be removed from the sprint milestone (with an explanatory comment).
  • If a user story is in Done, but the product owner finds that the Acceptance Criteria and Definition of Done are not complete, it should be moved back to In Progress, and more tasks added that will enable it to reach completion. The Definition of Done for the MDN team is maintained in a Google document.

Managing Work

The ideal progression of a Sprint is that team members claim user stories, work on each of them until they are all done, and as a result, all the Acceptance Criteria of all the User Stories selected for the sprint are satisfied. Of course, life in the real world never runs perfectly, and the processes of a Sprint are designed to accommodate the bumps, blockages, and shifts that naturally happen. User Stories may sometimes move back to earlier stages if something unexpected happens, for example, or a user story might be deferred to a later sprint, due to a change in external circumstances, such as slippage of a feature's release.

The following practices govern the handling of user stories:

  • Each user story that is in In Process should have an assigned owner. GitHub allows multiple people to be assigned to an issue.
  • When an items moves into the Review/Test column, find a specific other person to test or review the work. Asking "anyone" to do it means no one will do it. For items that take a significant amount of time to review, the reviewer should be identified and the review time estimated and accounted for as part of sprint planning.
  • When a work product requires review by someone outside the team, create a separate task for managing the review, to avoid having completion of the main task be blocked by external factors.
  • When a content user story is moved to Review/Test, it can be helpful to the reviewer to add a link to the completed or updated documents.

Tracking progress

During the 12 work days of a Sprint, team members need to communicate regularly about progress and obstacles. The MDN does this mostly asynchronously, using Status Hero. The sub-teams hold a synchronous Standup meeting on the first Wednesday of a sprint, and the whole team meets for a Mid-sprint review on the second Monday of the sprint.

Sharing Outcomes

A sprint demo meeting is held on the Thursday between sprints. Team members add demo items or accomplishments into a document that serves as an agenda for the meeting. Due to time limitations, the demo does not cover all work during the sprint, but rather a few highlights.

The team should consider whether any items shown or discussed in a sprint demo should be shared with the wider Emerging Technologies audience, at an upcoming monthly ET All-Hands meeting.

Tools

  • Google documents

Improving Processes

At the conclusion of a Sprint, the team holds a Retrospective to reflect on the team's processes and habits, in order to find ways to improve or strengthen them. This meeting is limited to core team members, to facilitate frank discussion.

The MDN durable team uses a slightly different structure for the retrospective discussion:

  • How did the adjustments we decided on in the last retrospective go?
  • What worked well?
  • What should we change or stop doing?
  • What steps will we take to improve?

Variations on this structure are possible, to avoid staleness. For some retrospectives, it may be helpful to focus on a specific aspect of the work, processes, or tooling used by the team.

If the team decides to change processes that are documented in this article, then this article will be updated to reflect the change.

Tools

  • Trello
  • This wiki page

Communicating About Processes With Community And Other Stakeholders

The plans, activities, and outcomes of the MDN team's processes are of interest to a variety of stakeholders, most especially members of MDN's volunteer community.

The following practices will ensure that information is available to stakeholders as they need it, and is delivered to them at appropriate times.

  • All MDN-related GitHub repos are public. Anyone can view the ZenHub board by installing the ZenHub extension in Firefox or Chrome
  • The MDN roadmap and other related planning and outcome documents are publicly visible, by being linked from the MDN Durable Team's wiki page, and set with access "anyone with the link can view".
  • The User Stories planned for each Sprint are announced on the MDN discussion forum, once they have been decided upon. Volunteers are encouraged to share their plans for MDN-related work as part of the thread.
  • The work accomplished during a Sprint is shared on the MDN discussion forum, along with a link to the MDN team's demo doc.
  • MDN Durable Team meetings (except Retrospectives) are public, and are marked in the Public MDN Events calendar, along with video conference connection information for video meetings.
  • Team members are encouraged to seek help from volunteers for day-to-day tasks and reviews of work, by posting on the MDN discussion forum.
  • Due to the distributed nature of the MDN team and community, asynchronous communication (email) is preferred over ad-hoc synchronous meetings. Whenever possible, hold discussions in public, such as on the MDN discussion forum.
  • When meetings are needed (especially for planning and prioritization), invite all team members, using mandatory and optional attendee settings in Google Calendar to indicate who is required, vs. informed. If possible, add meetings to the MDN public calendar to enable community members to attend. Make sure there is a guest Vidyo link in the calendar event.
  • Take and share notes of meetings to communicate decisions made, actions assigned, etc.