Webdev/Web Production/kanban: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
(Blanked the page)
 
Line 1: Line 1:
Last Updated 2013.2.22 <span style="color:red">Draft</span>


<div class="toclimit-2">__TOC__</div>
<h2>Purpose &amp; Version</h2>
<p>This document is an overview and guide for using Kanban on Web
Production (WP) projects. WP uses kanbanery.com to host our kanban boards
and this document contains information specific to their implementation.</p>
<h2>Overview</h2>
<p>WP projects have the option to use Kanban methodology for organizing work. You can use kanban boards
as part of a full kanban project or as a visualisation tool on scrum/sprint based projects. </p>
<h2>Candidate Projects</h2>
<p>The Kanban approach can be a good choice for projects that are:</p>
<ol>
<li>Using continuous or near continuous deployment.</li>
<li>Reactive projects.</li>
<li>Projects in maintenance mode.</li>
</ol>
<p>If your project is short-term, release or event based you might consider using a mix of Scrum and Kanban. You can use kanban
boards in the traditional manner or you can use them just to visualize what's currently being worked on. It's flexible.</p>
<h2>Accounts</h2>
<p>Please contact XXX@mozilla.com if you need account credentials on kanbanery or if you need to create a new baord.</p>
<h2>Kanbanery Board Overview</h2>
<p>This overview assumes you are using a traditional Kanban workflow to manage your projects.
If you are using a 'scrumban' approach or some other hybrid, please customize to suit your specific needs.</p>
<p>If using kanban there are only 2 'must follow rules':</p>
<ol>
<li>Visualize the workflow</li>
<li>Limit work in progress</li>
</ol>
<p>A full overview of Kanban is outside the scope of this document. Many books have been written, some of them
are quite good.</p>
<h2>Column Overview</h2>
<p>Columns reflect the lifecycle of a task. WebProd projects are given default columns. You can adjust columns
to match the workflow on your specific project. You should model how your team currently works.</p>
<ul>
<li><strong>Backlog</strong> - Something that 'should be done' ideally ordered by priority.</li>
<li><strong>Research &amp; Design</strong> - Tasks needing investigation or design work prior to coding. Not required for all tasks.</li>
<li><strong>Coding &amp; In Progress</strong> - The task is actively being worked on.</li>
<li><strong>Code Review</strong> - Task complete and is being reviewed. For programming tasks, this is when a pull request has been filed.</li>
<li><strong>Testing</strong> - Task can be tested by QA or the team.</li>
<li><strong>Done</strong> - The task is live.</li>
</ul>
<p>Cards can also be in:</p>
<ul>
<li><strong>Icebox</strong> - On hold, should not be thought about at this time. </li>
<li><strong>Archive</strong> - Where completed tasks retire. </li>
</ul>
<h3>Work In Progress Limits</h3>
<p>Set WIP limits on columns where appropriate. These numbers can be changed/updated as you learn
what works best for the team. For coding a good start is 2 items in'coding' at a given time per developer. If an open slot
is not available, you can not take on more work.</p>
<p>If you are using kanban you must use WIP limits, they are important!</p>
<h2>Kanbanery Card Overview</h2>
<h3>Task Title &amp; Description</h3>
<p>Use a good title. Description is required for cards not associated with a bug.</p>
<h3>Task Types</h3>
<p>Cards should be categorized by the type of task. Default work types include:</p>
<ul>
<li>Story</li>
<li>Feature</li>
<li>Design</li>
<li>Bug</li>
<li>Chore</li>
<li>Infrastructure</li>
<li>Documentation</li>
</ul>
<p>While you can customize the work types, we reommend general types rather than specific or feature based
(like API) unless those types are relevant for the life of the project. </p>
<h3>Estimates</h3>
<p>The default size scale includes 0, .5, 1, 2, 3, 5, 8, 13, 21. All cards get estimated
and size can change throughout the lifecycle of the card as additional information about the task becomes known.</p>
<h3>Bugzilla &amp; Single Source Of Truth</h3>
<p>Tasks that are non-trivial, require formal QA, involve another group, and/or require public discussion should have a corresponding bug in bugzilla.
When creating a card:</p>
<ol>
<li>Create a bug in bugzilla.</li>
<li>Enter the bug into the description field of the card.</li>
<li>All comments / discussion / attachments are entered into bugzilla.</li>
</ol>
<p>Bugzilla is used by everyone at mozilla and our community. We want to keep our projects and tasks open. We also need to have a single
source of truth for information about a bug. For now, bugzilla is the source of truth for our tasks.</p>
<h3>Priority</h3>
<p>If a card is high priority you can use this field, you may also sort cards by priority order in the columns.</p>
<h3>Owner</h3>
<p>Owner can either be assigned manually or it can be assigned automatically. If you pull a card into a column it will be assigned to you.</p>
<h3>Subtasks</h3>
<p>A powerful feature of kanbanery is that cards can consist of multiple tasks. These will often have corresponding bugs in bugzilla. The format
for subtasks should be "Description #BUGID" when appropriate.</p>
<h3>Deadline</h3>
<p>Cards with a hard deadline can have this entered.</p>
<h3>Blocked</h3>
<p>Useful to communicate if a card is blocked by another card or another task.</p>
<h2>Workflow Overview</h2>
<p>The following describes an example workflow for a task. </p>
<ol>
<li><strong>Backlog</strong> : With some discussion tasks are added to the Backlog and prioritized.</li>
<li><strong>Research &amp; Design</strong> : Tasks that are being started are moved to this column.
<ul><li>When research &amp; design phase is complete they are marked <strong>ready</strong> with the green checkmark</li>
<li>Cards that do not require research and design still go into this column and are marked <strong>ready</strong></li></ul></li>
<li><strong>Coding &amp; In Progess</strong> : Task is pulled into this column and worked on.
<ul><li>Bugzilla: Bug should be assigned to whomever is doing the work.</li></ul></li>
<li><strong>Code Review</strong> : Pull request filed
<ul><li>Non coding tasks or items not needing code review skip this column.</li></ul></li>
<li><strong>Testing</strong> : Waiting to be tested
<ul><li>Bugzilla: Task marked as resolved</li></ul></li>
<li><strong>Testing</strong>: When complete it is marked as <strong>ready</strong>
<ul><li>Bugzilla: Task marked as verified</li>
<li>Any task in the QA  column marked 'ready' can go live</li></ul></li>
<li><strong>Done</strong>: For coding tasks this means live</li>
<li><strong>Archive</strong> : During cleanup phase live items can be moved to the archive.</li>
</ol>
<p>The above uses the kanban 'pull' methodology. Tasks are marked as ready, signaling that it can be worked on. The task is then pulled
into the next column where work occurs. </p>
<p>There are two places where the <strong>ready</strong> flag is used.</p>
<ol>
<li>Signaling a task is ready to be coded/worked on.</li>
<li>Signaling a task has passed QA and is cleared to go live.</li>
</ol>
<p>Given the above workflow the only columns that should contain <strong>ready</strong> flags are <strong>research and design</strong> and <strong>testing</strong>.</p>
<h2>Future Documentation</h2>
<h3>Github integration</h3>
<h3>Reports &amp; Informing Improvements</h3>

Latest revision as of 21:52, 22 February 2013