MDN/Development/Process: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
The MDN development team loosely follows [http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] to manage its work.
The MDN development team follows the [http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum development framework] to manage its work.


== Overview ==
== Overview ==


We work in short development periods called <em>Sprints</em>. A Sprint starts with a Sprint Planning Meeting (see the section [[MDN/Development/Process#Planning_and_Retrospective_Meeting|Planning and Retrospective Meeting]]) and ends two weeks later.
The team works in short development periods called <em>Sprints</em>. Each Sprint starts with a [[MDN/Development/Process#Planning_and_Retrospective_Meeting|Sprint Planning meeting]] and ends two weeks later.


During each Sprint, we work on a subset of features important to the MDN. These features are captured in a list called a Sprint Backlog (see the section [[MDN/Development/Process#Sprint_Backlogs|Sprint Backlogs]]).
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 [[MDN/Development/Process#Sprint_Backlogs|Sprint Backlog]].


== Documents ==
== Artifacts ==
 
The team maintains a few [http://en.wikipedia.org/wiki/Artifact_%28software_development%29 artifacts] to keep track of work.


=== Product Backlog ===
=== Product Backlog ===


Our [http://is.gd/NkQHkd Product Backlog] is maintained on Bugzilla.
The <em>Product Backlog</em> 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 [http://is.gd/NkQHkd 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 [[MDN/Development/Process#Planning_and_Retrospective_Meeting|Sprint Planning meeting]], the development team decides what features it should complete in the upcoming Sprint based on the priorities reflected in the Product Backlog. 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 every Sprint.


The <em>Product Backlog</em> is a large list of features that we plan to build, prioritized by a combination of thoughts from the development team, feedback from users, and strategic planning. Priorities are re-evaluated according to these criteria before each Sprint.
The team maintains its [[http://scrumbu.gs/t/mdn/ Sprint Backlogs]] on Scrumbugs.


Oour Product Backlog is currently very large and somewhat difficult to understand. We are planning to soon reorganize it to make it more understandable to people outside of the development team.
=== Sprint Burndown Chart ===


==== Organization ====
==== Organization ====


At times, features in the Product Backlog can become unnecessarily broad or vague. To avoid this, we should break features down into smaller actions when necessary. For example, we might break up a feature about searching for demos by creating subtasks like"Create a mockup for demo searching" and "Research the tools that we could use to power demo searches".
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.
 
We should pay special attention to breaking things down when features become blocked. For example, if a feature has been planned in more than one Sprint without much visible progress (or even if a feature does not make much visible progress during the course of one Sprint), we could break that feature down into front-end and back-end components and complete one piece at a time.


=== Sprint Backlogs ===
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.


Our [[http://scrumbu.gs/t/mdn/ Sprint Backlogs]] are maintained on Scrumbugs.
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.


At each Sprint Planning Meeting, we look at the highest priority features on the product backlog and decide which ones we should complete during the upcoming Sprint.
=== Velocity ===
We capture the individual tasks needed to complete these features in a list called the <em>Sprint Backlog</em>. Each Sprint has its own Sprint Backlog.


=== Daily Scrum ===
=== Status reports ===


We record our [http://standu.ps/project/mdndev Daily Scrums] with Standups.
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 <code>#blocked</code> to his status report to request help from the MDN project manager.


We use a status reporting service called [http://standu.ps/ Standup] to share our progress during a Sprint. We post status updates occasionally as important work is completed. If someone is having a hard time making progress on a task, he adds the <code>#blocked</code> tag to his status report so that John can help.
The team records its [http://standu.ps/project/mdndev status reports] with a service called Standups.


== Meetings ==
== Meetings ==
Line 40: Line 45:
=== Planning and Retrospective Meeting ===
=== Planning and Retrospective Meeting ===


We meet as a team once every two weeks for a Planning and Retrospective Meeting. This meeting is broken down into two parts.
The team meets at the beginning of each Sprint for a <em>Planning and Retrospective Meeting</em>. The meeting is broken down into two parts.


==== Retrospective ====
==== Retrospective ====


During this part of the meeting, we discuss aspects of our process that have been working well, and aspects of our process that could use improvement. John updates this page based on our discussions.
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 ====
==== Planning ====


In the second part of the meeting, we build a new Sprint Backlog by looking at the Product Backlog and deciding which of the features we should complete in the upcoming Sprint. We try to keep a good balance of variety in the bugs we choose -- some front end, some back end, etc. -- so that everyone has something to work on that interests them. We plan for about two-thirds of our [https://docs.google.com/spreadsheet/ccc?key=0AtSmmChL-hpUdFNXeFVwbmZGMDFzbUhVQS1oQ0FnbFE&pli=1#gid=1 Sprint velocity] (the amount of work we normally complete in a Sprint), and leave the last third open for other features that developers choose based on their interests.
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.


After building the Sprint Backlog, we play [http://en.wikipedia.org/wiki/Planning_poker Planning Poker] to discuss the features in more detail and estimate how long it will take us to complete them. If Planning Poker reveals that we taken on more or less work than we usually complete, we add or remove features to 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.


== Working ==
== Working ==

Revision as of 22:21, 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 based on the priorities reflected in the Product Backlog. 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 every Sprint.

The team maintains its [Sprint Backlogs] on Scrumbugs.

Sprint Burndown Chart

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.

Velocity

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. 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 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

Between the start of the Sprint and the end of the Sprint, the development team works on the features that they added to the Sprint Backlog. When a developer knows that he will be working on a particular feature, he assigns that feature to himself. When he knows that he will no longer work on it, he updates the feature to be unassigned so that someone else can begin working on it.

Handling development annoyances

Occasionally, the team runs into minor annoyances that affect their development work, such as an error that causes an overwhelming amount of email. These problems are usually not much of a problem on their own, but they can pile up over time. To handle this, anyone affected by these issues should open a bug with the keyword [dev-papercut] in the status whiteboard. The team will watch a list of ignored papercuts to make sure they don't pile up.

Updating the MDN

During the sprint, we occasionally add our new features to the MDN by pushing code to our production server. We push about once per week (usually on Tuesdays or Thursdays) and avoid pushing on Mondays and Fridays.