MDN/Development/Process: Difference between revisions
No edit summary |
No edit summary |
||
| Line 19: | Line 19: | ||
=== Sprint Backlogs === | === Sprint Backlogs === | ||
At each [[MDN/Development/Process#Planning_and_Retrospective_Meeting|Sprint Planning meeting]], the development team decides what features it should complete in the upcoming Sprint | At each [[MDN/Development/Process#Planning_and_Retrospective_Meeting|Sprint Planning meeting]], the development team decides what features it should complete in the upcoming Sprint. The individual tasks that are needed to complete those features are captured in a list called the <em>Sprint Backlog</em>. A different Sprint Backlog is used for each Sprint. | ||
The team maintains its [[http://scrumbu.gs/t/mdn/ Sprint Backlogs]] on Scrumbugs. | The team maintains its [[http://scrumbu.gs/t/mdn/ Sprint Backlogs]] on Scrumbugs. | ||
==== Organization ==== | ==== Organization ==== | ||
| Line 32: | Line 30: | ||
The team finds research tasks to be especially valuable. For example, when starting the user user login feature, the team might create a task like "Research: What services can we use to power login?". The team discusses the question and shares decisions in an associated Bugzilla bug. | The team finds research tasks to be especially valuable. For example, when starting the user user login feature, the team might create a task like "Research: What services can we use to power login?". The team discusses the question and shares decisions in an associated Bugzilla bug. | ||
=== Sprint Burndown Charts === | |||
The team uses a <em>Sprint Burndown Chart</em> during each Sprint to measure progress. A Sprint Burndown Chart has amount of work on the y-axis and time on the x-axis, so that the trend line gradually moves toward the bottom right of the chart as work as completed. | |||
The team maintains [[[http://scrumbu.gs/t/mdn/ Burndown Charts]] on Scrumbugs. A Burndown Chart is shown on the same page as its associated Sprint Backlog. | |||
=== Velocity === | === Velocity === | ||
To estimate how much work can be completed in each Sprint, the team measures its development speed or <em>Velocity</em>. Velocity is measured in <em>story points</em>, unitless values of development effort. | |||
The team calculates its [https://docs.google.com/spreadsheet/ccc?key=0AtSmmChL-hpUdFNXeFVwbmZGMDFzbUhVQS1oQ0FnbFE#gid=1 Velocity] using Google Docs. | |||
=== Status reports === | === Status reports === | ||
| Line 55: | Line 63: | ||
==== Planning ==== | ==== Planning ==== | ||
In the second part of the meeting, the team decides what features it should complete in the upcoming Sprint based on the priorities reflected in the [[MDN/Development/Process#Product_Backlog|Product Backlog]]. The team aims for variety in the features it chooses so that everyone can find something interesting to work on. The team plans to complete about two-thirds of the work it normally completes as reflected in its [[MDN/Development/Process#Velocity|Velocity]]. The remaining one-third of work is left open for other features that developers choose based on their interests. These features are not added to the Sprint Backlog because doing so would complicate our Velocity and cause bumps in our Sprint Burndown chart. | In the second part of the meeting, the team decides what features it should complete in the upcoming Sprint based on the priorities reflected in the [[MDN/Development/Process#Product_Backlog|Product Backlog]]. Tasks needed to complete these features are captured in the Sprint Backlog. | ||
The team aims for variety in the features it chooses so that everyone can find something interesting to work on. The team plans to complete about two-thirds of the work it normally completes as reflected in its average [[MDN/Development/Process#Velocity|Velocity]]. The remaining one-third of work is left open for other features that developers choose based on their interests. These features are not added to the Sprint Backlog because doing so would complicate our Velocity and cause bumps in our Sprint Burndown chart. | |||
After building the Sprint Backlog, the team plays [http://en.wikipedia.org/wiki/Planning_poker Planning Poker] to discuss the tasks in more detail and estimate how long it will take to complete each. If the team realizes that it has taken on too much or too little work, it adds or removes features from the Sprint Backlog accordingly. | After building the Sprint Backlog, the team plays [http://en.wikipedia.org/wiki/Planning_poker Planning Poker] to discuss the tasks in more detail and estimate how long it will take to complete each. If the team realizes that it has taken on too much or too little work, it adds or removes features from the Sprint Backlog accordingly. | ||
Revision as of 22:41, 4 October 2012
The MDN development team follows the Scrum development framework to manage its work.
Overview
The team works in short development periods called Sprints. Each Sprint starts with a Sprint Planning meeting and ends two weeks later.
At each Sprint Planning Meeting, the team decides on a subset of features important to the MDN and commits to completing them before the two weeks end. This subset of features is captured in a list called the Sprint Backlog.
Artifacts
The team maintains a few artifacts to keep track of work.
Product Backlog
The Product Backlog is a large list of features that the team plans to implement. The Product Backlog is prioritized by a combination of thoughts from the development team, feedback from users, and strategic planning.
The team maintains its Product Backlog on Bugzilla. It is currently very large and somewhat difficult to understand, but the team plans to reorganize it soon to make it more understandable to outsiders.
Sprint Backlogs
At each Sprint Planning meeting, the development team decides what features it should complete in the upcoming Sprint. The individual tasks that are needed to complete those features are captured in a list called the Sprint Backlog. A different Sprint Backlog is used for each Sprint.
The team maintains its [Sprint Backlogs] on Scrumbugs.
Organization
Features in the Sprint Backlog can sometimes become very broad. To avoid this, the team breaks features down into smaller tasks whenever possible. For example, a feature for user login might be broken down into tasks like "Design interface for user login" and "Talk to Tim about how he implemented user login". Breaking features up in this way makes them less intimidating and helps the team track its progress at a more granular level.
The team pays special attention to breaking features into smaller tasks when a feature becomes blocked. In general, the longer a feature goes without completion, the more it is broken down.
The team finds research tasks to be especially valuable. For example, when starting the user user login feature, the team might create a task like "Research: What services can we use to power login?". The team discusses the question and shares decisions in an associated Bugzilla bug.
Sprint Burndown Charts
The team uses a Sprint Burndown Chart during each Sprint to measure progress. A Sprint Burndown Chart has amount of work on the y-axis and time on the x-axis, so that the trend line gradually moves toward the bottom right of the chart as work as completed.
The team maintains [[Burndown Charts] on Scrumbugs. A Burndown Chart is shown on the same page as its associated Sprint Backlog.
Velocity
To estimate how much work can be completed in each Sprint, the team measures its development speed or Velocity. Velocity is measured in story points, unitless values of development effort.
The team calculates its Velocity using Google Docs.
Status reports
The team tracks its progress throughout each Sprint. Each team member shares a status update occasionally as important work is completed. If a member of the team is having a hard time making progress on a task, he or she can add the tag #blocked to his status report to request help from the MDN project manager.
The team records its status reports with a service called Standups.
Meetings
Planning and Retrospective Meeting
The team meets at the beginning of each Sprint for a Planning and Retrospective Meeting. The meeting is broken down into two parts.
Retrospective
In the first part of the meeting, the team discusses aspects of its process that have been working well and aspects of the process that could use improvement.
All thoughts shared in the Retrospective are reflected on this page. The MDN project manager treats this page like a Developer Bill of Rights, and works to ensure that the policies written here are enforced.
Planning
In the second part of the meeting, the team decides what features it should complete in the upcoming Sprint based on the priorities reflected in the Product Backlog. Tasks needed to complete these features are captured in the Sprint Backlog.
The team aims for variety in the features it chooses so that everyone can find something interesting to work on. The team plans to complete about two-thirds of the work it normally completes as reflected in its average Velocity. The remaining one-third of work is left open for other features that developers choose based on their interests. These features are not added to the Sprint Backlog because doing so would complicate our Velocity and cause bumps in our Sprint Burndown chart.
After building the Sprint Backlog, the team plays Planning Poker to discuss the tasks in more detail and estimate how long it will take to complete each. If the team realizes that it has taken on too much or too little work, it adds or removes features from the Sprint Backlog accordingly.
Working
Assignment
During each Sprint, the team works on the features that they added to the Sprint Backlog. When a developer has decided to work on a particular feature, he assigns that feature to himself. If he later decides that he does not want to work on the feature, he removes the assignment so that someone else can work on it.
Handling development annoyances
The team occasionally encounters minor annoyances that affect their development work, such as receiving an overwhelming amount of error report emails. These problems are usually not serious on their own, but they can become more serious as they pile up. To manage this, each team member should open a Bugzilla bug with the keyword [dev-papercut] in the Status Whiteboard. At each planning meeting, the team considers a list of ignored papercuts when building the Product Backlog.
Updating the MDN
Throughout the Sprint, the team occasionally pushes new changes to our production server. The team does this about once per week, usually on Tuesdays or Thursdays. Monday and Friday pushes are avoided.