<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mike Cohn&#039;s Blog - Succeeding With Agile® &#187; product backlog</title>
	<atom:link href="http://blog.mountaingoatsoftware.com/tag/product-backlog/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.mountaingoatsoftware.com</link>
	<description>Succeeding With Agile®</description>
	<lastBuildDate>Mon, 06 Feb 2012 18:11:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>A Sample Format for a Spreadsheet-Based Product Backlog</title>
		<link>http://blog.mountaingoatsoftware.com/a-sample-format-for-a-spreadsheet-based-product-backlog</link>
		<comments>http://blog.mountaingoatsoftware.com/a-sample-format-for-a-spreadsheet-based-product-backlog#comments</comments>
		<pubDate>Fri, 01 Jul 2011 16:05:14 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprint Artifacts]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[user stories]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=1110</guid>
		<description><![CDATA[I want to show a real easy way to put user stories in a spreadsheet-based product backlog. I wrote this after seeing someone tweet a screen capture of a product backlog I made 9 years ago and thought to myself, &#8220;Yikes, that&#8217;s out of date for how I do it today&#8230;&#8221; As you probably know [...]]]></description>
			<content:encoded><![CDATA[<p>I want to show a real easy way to put user stories in a spreadsheet-based product backlog. I wrote this after seeing someone tweet a screen capture of a product backlog I made 9 years ago and thought to myself, &#8220;Yikes, that&#8217;s out of date for how I do it today&#8230;&#8221;</p>
<p>As you probably know I&#8217;m a big fan of writing the product backlog in the form of user stories and of writing user stories in the form, &#8220;As a <type of user>, I <want / can / am required to / etc> <some goal> so that <some reason>.&#8221;  An example being, &#8220;As a frequent flyer, I really want to be able to connect to the internet while flying so that I can update my blog while traveling rather than having to save this as a text file and updating my blog later.&#8221;  (Can you guess where I am while writing this?) </p>
<p>What I&#8217;ve found makes a user story in this format very easy to work with in a spreadsheet is to take the boilerplate parts and put them into column headings. So we&#8217;ll have column headings like &#8220;As a&#8221; and &#8220;I&#8221; and &#8220;so that&#8221;. The meat of each story is then clearly visible in each row. Additional columns can be added for things like a unique identifier, notes, status and such. In this example, I&#8217;ve also included a column for the theme or grouping of which the story is a part. You can see this in the screen capture below. You can click the image for a larger view. </p>
<p><a href="http://blog.mountaingoatsoftware.com/wp-content/uploads/fullsize-product-backlog.jpg"><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/smaller-product-backlog.jpg" alt="the product backlog in Excel" title="smaller-product-backlog" width="600" height="323" class="aligncenter size-full wp-image-1111" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/a-sample-format-for-a-spreadsheet-based-product-backlog/feed</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>A New Artifact &#8211; The Long-Term Product Backlog</title>
		<link>http://blog.mountaingoatsoftware.com/a-new-artifact-the-long-term-product-backlog</link>
		<comments>http://blog.mountaingoatsoftware.com/a-new-artifact-the-long-term-product-backlog#comments</comments>
		<pubDate>Fri, 06 May 2011 08:15:24 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprint Artifacts]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[product owner]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=1000</guid>
		<description><![CDATA[The weather turned nice about two weeks ago, which meant it was time for spring cleaning about the Cohn home, affectionately known as the Cohnderosa (which will only mean something if you&#8217;re old enough to remember &#8220;Bonanza&#8221;). While washing the windows around the outside of the house I had plenty of time to think about [...]]]></description>
			<content:encoded><![CDATA[<p>The weather turned nice about two weeks ago, which meant it was time for spring cleaning about the Cohn home, affectionately known as the Cohnderosa (which will only mean something if you&#8217;re old enough to remember &#8220;Bonanza&#8221;). While washing the windows around the outside of the house I had plenty of time to think about spring cleaning I&#8217;d also just helped a couple of clients with&#8211;we cleaned up their product backlogs.</p>
<p><a href="http://blog.mountaingoatsoftware.com/wp-content/uploads/waste-basket.jpg"><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/waste-basket.jpg" alt="The Long-Term Product Backlog" title="waste-basket" width="300" height="401" class="alignright size-full wp-image-1001" /></a></p>
<p>In order to clean up the product backlog, I want to introduce you to a new Scrum artifact&#8211;the Long-Term Product Backlog. The Long-Term Product Backlog is maintained by the product owner and is usually round, black and sits next to or under the product owner&#8217;s desk. Left unattended, a product backlog can become large and hard to work with. If your backlog has reached this point, take some time to do some spring cleaning&#8212;review the backlog and delete / throw away user stories that you can finally admit you&#8217;re never going to get to.</p>
<p>Some product owners or teams feel this is an admission of failure. It&#8217;s not. In most cases it&#8217;s an admission of success&#8211;we&#8217;re throwing away feature ideas that we once thought important because since writing them down we&#8217;ve discovered even more important features. So celebrate the fact that you&#8217;ve got newer, bigger, better feature ideas and delete the less valuable ones from your product backlog.</p>
<p>If permanently deleting such ideas is too big of a step, perhaps you really do want to introduce a new artifact into your process. Create a spreadsheet and paste the user stories there for safe keeping. Or print a report from your product backlog tool and file the report somewhere safe just in case. In my experience, though, you won&#8217;t miss them. And just like the bright new view through the windows of the Conderosa, you&#8217;ll be able to see the rest of your product backlog much more clearly.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/a-new-artifact-the-long-term-product-backlog/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Estimating Work Shared Between Two Backlog Items</title>
		<link>http://blog.mountaingoatsoftware.com/estimating-work-shared-between-two-backlog-items</link>
		<comments>http://blog.mountaingoatsoftware.com/estimating-work-shared-between-two-backlog-items#comments</comments>
		<pubDate>Wed, 14 Jul 2010 15:38:24 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Estimating]]></category>
		<category><![CDATA[product backlog]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=831</guid>
		<description><![CDATA[Product backlog items can be ideally written to be independent. It is the hallmark of a good team that its members can implement product backlog items in any order. However, it would be nearly impossible to remove all dependencies between product backlog items and so our goal becomes minimizing important dependencies rather than eliminating them [...]]]></description>
			<content:encoded><![CDATA[<p>Product backlog items can be ideally written to be independent. It is the hallmark of a good team that its members can implement product backlog items in any order. However, it would be nearly impossible to remove all dependencies between product backlog items and so our goal becomes minimizing important dependencies rather than eliminating them altogether.</p>
<p>But any dependencies that remain can raise questions about how to estimate the individual product backlog items. One common <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">agile project management</a> question is what to do with work that could be performed as part of either of two backlog items but that only needs to be done once. As an example, consider these two product backlog items, which are written as user stories:</p>
<ul>
<li>As a user, I can add an invoice to the system so that it gets paid.</li>
<li>As a user, I can delete an invoice.</li>
</ul>
<p>These two user stories share some work. Supposing this is a very simple system, whichever one of these stories is done first will also involve the team much of the database design for invoices. Some database design work (a cascading delete between Invoice and Line_Items, for example) will be done only when a specific one of the stories is developed. But, some work (deciding that a table called Invoice exists at all, perhaps) will be done as part of whichever story is implemented first. Assuming that this work is non-trivial, the estimates given to these stories will be influenced by which will be implemented first.</p>
<p>In deciding how to estimate these and how to handle the common work between them, I suggest there are two guiding principles we can rely on:</p>
<ul>
<li>We should assume work will be done in its natural order.</li>
<li>The sum of all estimates on the product backlog should represent the total size of the project (as understood at that time, of course).</li>
</ul>
<p>Let’s see how these two principles lead to the answer about how to estimate our two user stories about adding and deleting invoices. Although a good agile team should be able to implement these stories in either order, it is most likely that the product owner will ask the team to add invoices first. After all, you can’t delete an invoice until it has been added. This is what I mean by the natural order.</p>
<p>Although it is natural to add invoices to a database before deleting them, it is not hard to imagine a need to do these in the opposite order. Suppose our team is writing a new system to interface with an existing invoice database. That existing system is full of old invoices from the 1940s and the first thing the product owner wants is the ability to delete old invoices. </p>
<p>When a product wants stories done in the natural order or when it seems likely the product owner will want them done in that order, my advice is that the team should estimate with that assumption in mind and not bother noting it on the story cards. Documenting all logical assumptions about the natural order gets tedious. To document all such assumptions, our add an invoice story would also need to be documented with “assumes login story is done first,” and so on.  </p>
<p>But when a team knows or suspects they will be asked to work out of the natural order, they should document the assumption. If the team assumes that adding an invoice will be quicker to implement because deleting is already done, they should add appropriate notes to these story cards. </p>
<p>Teams are, of course, sometimes wrong in their assumptions or are surprised by product owners who change their minds. These situations are resolved by simple discussion along the lines of saying “We assumed you’d want these stories in a different order. So, a few points [or ideal days] of work move off this story and onto that story.” </p>
<p>It is even possible that working outside the natural order can sometimes increase the total size of the work. For example, to do the delete invoices user story before the add invoices story, our team might need to write a short script to preload the database with dummy data just so we can be sure delete is working. Usually when this happens the change in project size is very small and washes out in the noise of other estimating and planning errors. (In other words, it’s rarely worse than someone being out sick for a day.)</p>
<p>Why not get around this problem of potentially moving points from one story to another by assuming that each story is done first, which would be a worst case for its estimate?  This is where our second principle comes in: The sum of the estimates should add up to the total size of work being considered. If the total work is 8 and that’s what we’d put on a single add+delete user story then our two user stories need a total of 8. To put a higher number on them overstates the size of the project. This would lead to incorrect projections of the project completion date based on velocity.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/estimating-work-shared-between-two-backlog-items/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Mix the Sizes of the Product Backlog Items You Commit To</title>
		<link>http://blog.mountaingoatsoftware.com/mix-the-sizes-of-the-product-backlog-items-you-commit-to</link>
		<comments>http://blog.mountaingoatsoftware.com/mix-the-sizes-of-the-product-backlog-items-you-commit-to#comments</comments>
		<pubDate>Wed, 30 Dec 2009 15:58:55 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[sprint planning]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=479</guid>
		<description><![CDATA[To avoid having multiple product backlog items wrapping up the last few days of the sprint, mix the size of the product backlog items you choose to bring into each sprint.  ]]></description>
			<content:encoded><![CDATA[<p>Teams used to a sequential development process have become accustomed to hand-offs between specialists. Analysts hand their work to designers who hand it to programmers who pass it on to testers. Each of these hand-offs includes some overhead in the form of meetings, documents to read and perhaps sign, and so on. In part because of this overhead, the hand-offs tend to be of large amounts of functionality. In the purest meaning of a waterfall process, the entire application is handed from group to group.</p>
<p>Teams that are new to <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">agile project management</a> often do not go far enough in eliminating these hand-offs. They often make the assumption that the programmers should finish programming a product backlog item before handing it off to the testers. This results in lengthy delays at the start of a sprint, when the testers are waiting for a first product backlog item to be handed to them. On a Scrum project, the unit of transfer between disciplines should be smaller than an individual product backlog item. That is, although there will always be some hand-offs (not everyone can be working on everything all the time), the amount of work being transferred from one person to the next should generally be as small as possible.</p>
<p>To facilitate these small transfers, Scrum teams learn to work by doing a little of everything all the time. Rather than an analysis phase (done without the programmer and tester) followed by a programming phase followed by a testing phase, a little of each of those activities is happening at all times. </p>
<p>Even with an emphasis on minimal hand-offs, there will be some product backlog items that will require a week or more of programming time before the programmer can give something even beginning to be testable to a tester. That’s OK. Not everything can be split as small as we might like. To avoid a flurry of testing activity toward the end-of-sprint, avoid bringing a bunch of these complex items into the same sprint. Instead of planning a sprint with, for example, three very large items that cannot be partially implemented, bring one or two large items into the sprint along with two or three smaller items. Some of the programmers can work on the large items, handing them over to testers whenever possible. The remaining programmers can work on the smaller items, ensuring a somewhat smoother flow of work to testers early in the sprint.</p>
<p>While your goal in each sprint should be to do a little bit of everything all the time, some backlog items are complex by nature and will not be completed until near or on the last day of a sprint. To avoid having multiple product backlog items wrapping up the last few days of the sprint, mix the size of the product backlog items you choose to bring into each sprint.  </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/mix-the-sizes-of-the-product-backlog-items-you-commit-to/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Make the Product Backlog DEEP</title>
		<link>http://blog.mountaingoatsoftware.com/make-the-product-backlog-deep</link>
		<comments>http://blog.mountaingoatsoftware.com/make-the-product-backlog-deep#comments</comments>
		<pubDate>Mon, 14 Dec 2009 15:50:59 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprint Artifacts]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[product owner]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=486</guid>
		<description><![CDATA[The product backlog should be DEEP: detailed appropriately, estimated, emergent, and prioritized.]]></description>
			<content:encoded><![CDATA[<p>Roman Pichler, author of <em><a href="http://www.mikecohnsignatureseries.com/books/agile-product-management">Agile Product Management with Scrum: Creating Products That Customers Love,</a></em> and I use the acronym DEEP to summarize key attributes of a good product backlog.</p>
<ul>
<li><strong>Detailed Appropriately.</strong> User stories on the product backlog that will be done soon need to be sufficiently well understood that they can be completed in the coming sprint. Stories that will not be developed for awhile should be described with less detail.</li>
<li><strong>Estimated.</strong> The product backlog is more than a list of all work to be done; it is also a useful planning tool. Because items further down the backlog are not as well understood (yet), the estimates associated with them will be less precise than estimates given items at the top.</li>
<li><strong>Emergent.</strong> A product backlog is not static. It will change over time. As more is learned, user stories on the product backlog will be added, removed, or reprioritized.</li>
<li><strong>Prioritized.</strong> The product backlog should be sorted with the most valuable items at the top and the least valuable at the bottom. By always working in priority order, the team is able to maximize the value of the product or system being developed.</li>
</ul>
<p>Product backlogs are discussed in much more detail in <a href="http://www.mountaingoatsoftware.com/books/7--succeeding-with-agile">Succeeding with Agile</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/make-the-product-backlog-deep/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Agile Design: Intentional Yet Emergent</title>
		<link>http://blog.mountaingoatsoftware.com/agile-design-intentional-yet-emergent</link>
		<comments>http://blog.mountaingoatsoftware.com/agile-design-intentional-yet-emergent#comments</comments>
		<pubDate>Fri, 04 Dec 2009 15:43:40 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[agile product management]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[product owner]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=436</guid>
		<description><![CDATA[On a Scrum project, design is both intentional and emergent. The design emerges because there is no up-front design phase (even though there are design activities during all sprints). Design is intentional because product backlog items are deliberately chosen with an eye toward pushing the design in different directions at different times. ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">Agile project management</a> approaches favor an incremental, just-in-time approach to design. As such, Scrum projects do not have an upfront analysis or design phase; all work occurs within the repeated cycle of sprints. This does not mean, however, that design on a Scrum project is not intentional. An intentional design process is one in which the design is guided through deliberate, conscious decision making. The difference on a Scrum project is not that intentional design is thrown out, but that it is done (like everything else on a Scrum project) incrementally. Scrum teams acknowledge that as nice as it might be to make all design decisions up front, doing so is impossible. </p>
<p>This means that on a Scrum project, design is both intentional and emergent. The design emerges because there is no up-front design phase (even though there are design activities during all sprints). Design is intentional because product backlog items are deliberately chosen with an eye toward pushing the design in different directions at different times. </p>
<p>As an example of how the product backlog items can be sequenced to influence the architecture of the system, consider a workflow system I worked on. The system supported a fund-raising company that produced specialized T-shirts and similar products. School-age children would go door to door selling these items. The sales revenue would be split between the company and the organization the kids represented, such as a school, sports team, or other group. For each sale, the kid would complete a form and send it to the company, where it was scanned, sent through an optical character recognition (OCR) process, and converted into an order. To keep shipping costs down, orders from the same organization were batched together and sent back to the organization, after which the kids would hand-deliver the items. </p>
<p>Our software handled the entire process—from when the paper was received by the company until the shipment went out the door. Kids have notoriously bad writing and are bad spellers, so our system had to do more than just scan forms and prepare packing lists. There were various levels of validation depending upon how accurately we thought each order form had been read. Some forms were routed to human data-entry clerks who were presented the scanned form on one side of the screen, the system’s interpretation on the right, and an additional space to make corrections.</p>
<p>Because thousands of shirts were processed on the busiest days, this process needed to be as automated as possible. I worked with the product owner, Steve, to write the product backlog. After that I met with the development team to discuss which areas of the system were the highest risk or we were the most uncertain about how to develop. We decided that our first sprint would focus on getting a high-quality document to run through the system from end to end. It would be scanned, go through OCR, and generate a packing list. We would bypass optional steps such as deskewing crooked pages, despeckling pages, and so on but would prove that the workflow could be completed from start to finish. This wasn’t highly valuable but it was something that needed to be done, and it let the developers test out the general architecture. After we accomplished this, we had a basic database in place and could move documents from state to state, triggering the correct workflow steps.</p>
<p>Next the developers asked the product owner if they could work on the part of the system that would display a scanned document to a human who would be able to override the scanned and interpreted values. This was chosen as the second architectural goal of the project for three reasons:</p>
<ul>
<li>It was a manual step, making it different from the workflow steps handled already.</li>
<li>Getting the user interface right was critical. With the volume of documents flowing through this system, saving seconds was important. We wanted to get early feedback from users to allow time to iterate on usability.</li>
<li>After this feature was added, users could start processing shirt orders.</li>
</ul>
<p>The project continued in this way for a few months and was ultimately tremendously successful, meeting all of the prerelease targets for reliability and throughput. A key to the success was that the product owner and technical personnel worked together to sequence the work. The closest the team got to a design phase was the first afternoon in the conference room when we identified risky areas and dark corners and decided which one we wanted to tackle first. From there the design emerged sprint by sprint, yet was intentionally guided by which product backlog items were selected to illuminate the dark corners and risks of the project.</p>
<p><em><a href="http://www.mountaingoatsoftware.com/books/7--succeeding-with-agile">Succeeding with Agile</a></em> goes into much more detail on agile design, including how the roles of architect and user experience designer change with Scrum, the concept of emergent design, and how teams work together and with the product owner to deliver increments of functionality that guide the design of the final product.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/agile-design-intentional-yet-emergent/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Bugs on the Product Backlog</title>
		<link>http://blog.mountaingoatsoftware.com/bugs-on-the-product-backlog</link>
		<comments>http://blog.mountaingoatsoftware.com/bugs-on-the-product-backlog#comments</comments>
		<pubDate>Tue, 07 Jul 2009 03:17:28 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprint Artifacts]]></category>
		<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[defect management]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[user stories]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=208</guid>
		<description><![CDATA[Ideally bugs belong on the product backlog just like any feature request. But, that would often necessitate a significant change for the rest of the organization so two backlogs are used. ]]></description>
			<content:encoded><![CDATA[<p>A common <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">agile project management</a> question is whether bugs belong on the product backlog. Before I address that question, let me clarify that the question refers to bugs that are unrelated to functionality being coded during the sprint. If someone finds a bug during a sprint that is related to the features being worked on, the best thing to do is yell, &#8220;Hey, Mike, the boojum code is broken when I&#8230;&#8221;  The second best thing to do is to stick a new task card on the task board saying &#8220;Fix the boojum code; it breaks when&#8230;&#8221;</p>
<p>But what about a bug found today in something the team wrote a month or a year ago? And what about the existing bug database that a team new to agile is almost sure to bring with them?</p>
<p>The ideal situation is to put the bugs right onto the product backlog. To see why, consider the situation from a user&#8217;s perspective: Do you think a user cares whether something is considered a New Feature or a Bug? No. The user just wants the system to behave in some way different from how it behaves today. They don&#8217;t care what it&#8217;s called. </p>
<p>But notice I called this the <i>ideal situation.</i> It isn&#8217;t always practical&#8211;and sometimes for reasons out of the team&#8217;s control or influence. Bug databases have a way of becoming embedded into organizations. The tech support group uses them as a primary way of communicating with the developers. The marketing group uses the bug database in a similar way. This makes it quit the bug database cold turkey. </p>
<p>In these cases, the most common solution teams use is to have two backlogs</p>
<ul>
<li>a product backlog of features</li>
<li>a bug backlog</li>
</ul>
<p>This approach is a bit harder on the team and the product owner but allows an agile team to work more easily with existing processes in the organization. </p>
<p>Sometimes when we make such accommodations to the overall organization, the accommodation can damage or destroy the agile adoption. Allowing everyone to work on five concurrent projects is an example of a crippling accommodation. Accommodating the organization&#8217;s use of a bug database is not crippling. It&#8217;s just a bit more work. </p>
<p>The product owner takes on most of the additional work by having to prioritize two separate work queues and then present them to the team in a more or less consolidated manner (&#8220;My top priorities are the first three items on the product backlog, then bugs #12403 and 12415, then these next two items on the product backlog&#8230;&#8221;). This isn&#8217;t too onerous as the items would need to be prioritized even if all were in one backlog.</p>
<p>So: Ideally bugs belong on the product backlog just like any feature request. But, that would often necessitate a significant change for the rest of the organization so two backlogs are used. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/bugs-on-the-product-backlog/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>The Ideal Agile Workspace</title>
		<link>http://blog.mountaingoatsoftware.com/the-ideal-agile-workspace</link>
		<comments>http://blog.mountaingoatsoftware.com/the-ideal-agile-workspace#comments</comments>
		<pubDate>Thu, 05 Mar 2009 19:46:58 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[agile books]]></category>
		<category><![CDATA[agile teams]]></category>
		<category><![CDATA[collocation]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[product owner]]></category>
		<category><![CDATA[sprint backlog]]></category>
		<category><![CDATA[sprint burndown chart]]></category>
		<category><![CDATA[taskboard]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=117</guid>
		<description><![CDATA[A list of things (such as all other team members) that should be visible from within an ideal agile workspace.]]></description>
			<content:encoded><![CDATA[<p>As you may now, I am working on a new book, which will be called <a href="http://www.succeedingwithagile.com">Succeeding with Agile</a>. I recently finished writing a chapter for it on the impact of the human resources and facilities groups on an organization that is transitioning to an <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">Agile project management</a> approach. While writing that chapter, I put together a list of all the things that I think should be visible within the ideal agile workspace:</p>
<ul>
<li><strong>Big Visible Charts.</strong> Alistair Cockburn coined the term &#8220Big Visible Charts&#8221 to describe the charts that agile teams like to hang on their walls. One of the most common of these is the sprint burndown chart, showing the number of hours remaining as of each day of the current sprint. Charts like these provide a strong visual reminder of the current state of the project. What is shown on these charts will get the attention of team members so display charts showing the most important information for that sprint. Ron Jeffries suggests considering big visible charts showing the number of passing customer acceptance tests, the pass/fail status of tests by day, sprint and release burndown charts, number of new stories introduced to the product backlog per sprint, and more. </li>
<li><strong>Additional feedback devices.</strong> In addition to big, visible charts, it is common for an agile team to use additional visual feedback devices in their workspace. One of the most common is a lava lamp that is turned on whenever the automated build is broken. I&#8217ve also worked with teams that use flashing red traffic lights to indicate exceptional conditions such as an issue on a production server. Also popular are <a href="http://www.ambientdevices.com">ambient orbs</a> and <a href="http://www.nabaztag.com">Nabaztag rabbits</a>, which are wireless programmable devices that can also be configured to change colors, speak messages, or wiggle their ears as a team desires. Devices like these make a workspace more dynamic, unobtrusively bringing into it information the team may find helpful.</li>
<li><strong>Everyone on your team.</strong> Each person on the team should ideally be able to see each other person on the team. This absolutely includes the ScrumMaster and ideally includes the product owner. I do understand, however, that product owners often have responsibilities to other groups outside the development team and so may sit near them instead. Still, in an ideal world the product owner would be visible to everyone in the team workspace.
<li><strong>The sprint backlog.</strong> One of the best ways to ensure that everything necessary is completed in the sprint is to make the sprint backlog visible. The best way to do that is by displaying the sprint backlog on a wall, ideally in the form of a <a href="http://www.mountaingoatsoftware.com/task-boards">task board</a> A task board is usually oriented in rows and columns with each row containing a particular user story and one index card or sticky note for each task involved in that story. Task cards are organized in columns, minimally including &#8220To Do&#8221 &#8220In Process,&#8221 and &#8220Done.&#8221 In this way, team members are able to see work progressing across the task board during the sprint and all work to be done is visible at all times.</li>
<li><strong>The product backlog.</strong> One problem with running an endless series of sprints is that each can feel disconnected or isolated from the whole of a planned released or related set of new capabilities. A good way to reduce the impact of this problem is by displaying the product backlog somewhere clearly visible. This can be as simple as keeping the shoebox full of user stories written on index cards on a table in the middle of the team&#8217s space. Even better, tack the index cards with those upcoming user stories on a wall where all can see them. This allows team members to see how the user stories they are working on in the current sprint relate to others that are coming soon.</li>
<li><strong>At least one big white board.</strong> Every team needs at least one big whiteboard. Locating this in the team&#8217s common workspace encourages spontaneous meetings. One developer may start using the board to think through a problem; others may notice and offer to help.</li>
<li><strong>Someplace quiet and private.</strong> As important as open communication is, there are times when someone needs some peace and quiet. Sometimes this is for something as simple as a private phone call. Other times it can be to think through a particularly challenging problem without being interrupted.</li>
<li><strong>Food and drink. </strong>It’s always a good idea to have food and drink available. These don’t need to be fancy, and they don’t even need to be provided by the organization. I’ve worked with plenty of teams that buy a small under-desk refrigerator and share the expense of buying water bottles or soda for it. Other teams buy a coffee machine, depending on team preferences. Some teams rotate bringing in snacks, both healthful and not.</li>
<li><strong>A window.</strong> Windows are often a scarce commodity and are doled out to an organization’s favored employees. One of the nice things about an open workspace is that windows are shared. Even if the view is only of our parking lot and can only be seen across three messy desks, at least I can see the window and some natural light.</li>
</ul>
<p>It&#8217;s unlikely that every one of these will be visible from your workspace, but the more of them visible, the better. Let me know what else you think should be visible from within the ideal agile workspace.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/the-ideal-agile-workspace/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Why There Should Not Be a &#8220;Release Backlog&#8221;</title>
		<link>http://blog.mountaingoatsoftware.com/why-there-should-not-be-a-release-backlog</link>
		<comments>http://blog.mountaingoatsoftware.com/why-there-should-not-be-a-release-backlog#comments</comments>
		<pubDate>Sun, 08 Feb 2009 04:40:50 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[Sprint Artifacts]]></category>
		<category><![CDATA[agile release planning]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[sprint backlog]]></category>
		<category><![CDATA[velocity]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=97</guid>
		<description><![CDATA[A rejection of the idea that agile teams should use a Release Backlog in addition to the already generally accepted Product and Sprint (or Iteration) Backlogs.]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t heard the term &#8220;release backlog&#8221; in many months, but it&#8217;s come up in three conversations over the past week. So, I want to share my thoughts on whether a team using an <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">Agile project management</a> approach should have a Release Backlog in addition to the conventional Product and Sprint (or Iteration) Backlogs.</p>
<p>First, let&#8217;s clarify what people mean when they refer to a &#8220;release backlog.&#8221; A release backlog is a subset of the product backlog that is planned to be delivered in the coming release, typically a three- to six-month horizon. A release backlog would presumably contain the same type of items as on a product backlog. My preference for this, of course, would be user stories. So, at the start of some release planning horizon, a product owner with help from the team and other stakeholders would example the product backlog, select some amount of high priority work and move those items to the release backlog. Later, in sprint (iteration) planning, the team would examine the release product and select some amount of work to do. (Notice how this already goes against existing agile literature that says the team selects top priority items for the sprint <em>from the product backlog?</em>)</p>
<p>I am opposed to the use of a release backlog for a couple of reasons:</p>
<p><strong>First,</strong> in all projects that are not being done as fixed-scope contracts (and, arguably, even then) we don&#8217;t know exactly what user stories or features will be delivered in a release. To say that there is a release backlog may not imply a guarantee that all features on it are delivered. However, it does create additional work as items are moved off back and forth between the product and release backlogs. This will happen as the team&#8217;s velocity changes (even by small amounts) from sprint to sprint. If the release backlog is to show what a team will deliver in a release, it should contain an amount of work equal to the number of story points (or ideal days) times the number of remaining sprints. If you have an average velocity of 20 and 6 sprints left, the release backlog should contain 120 points worth of work. Suppose the team finishes 24 points of work in a sprint. The backlog is now down to 96 points (120-24) but should contain 100 (5 sprints left x an average velocity of 20). Things get even more difficult if that good velocity of 24 increases the team&#8217;s average velocity to 21. In that case the release backlog should contain 5&#215;21=105 points of work; we need to move 9 points of work from the product backlog to the sprint backlog. If there&#8217;s a release backlog, this moving of items back and forth from product backlog to release backlog will happen every sprint.</p>
<p>Second, introducing a release backlog creates additional confusion. We&#8217;ve already overloaded the word &#8220;backlog&#8221; with &#8220;product backlog&#8221; and &#8220;sprint backlog.&#8221; Why confuse things further with a third type of backlog unless there is an immensely compelling reason to do so?</p>
<p>Third, introducing the concept of a Release Backlog actually makes it harder for product owners to do one of the most important things they should be doing&#8211;looking at the features or user stories that just miss the cut of being in a release. When I look at a product backlog and count down the number of story points that I anticipate will be in the release, the most interesting thing to me is not necessarily the set of user stories that will make it into the release. I&#8217;m often just as interested in the next few user stories below that cut-off point. That is, I want to know what user stories won&#8217;t quite make it into the release. After all, we say that one of the benefits of agile (on some, not all, projects) is the ability to decide later if we should release a few sprints early (if a lot has been done), on the planned date, or perhaps a sprint or two late if we want to add more functionality before a release. This is made more difficult with a Release Backlog because a product owner now needs to examine both a Product Backlog and a Release Backlog to make these decisions.</p>
<p>So, what do I propose instead?</p>
<p>I advocate that all teams track their velocities. This leads to a graph like this:</p>
<img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/velocityaverages.jpg" alt="Velocity as graphed over the last nine sprints." title="velocityaverages" width="450" height="277" class="size-full wp-image-103" />
<p>This graph shows a team calculating three average velocities:</p>
<ol>
<li>Long term average, defined as the mean of the last eight sprints</li>
<li>Worst case average, defined as the mean of the worst three chosen among the last eight sprints</li>
<li>Best case average, defined as the mean of the best three chosen among the last eight sprints</li>
</ol>
<p>You can choose your own ways of calculating long-term, best-case, and worst-case average velocities. These are just the ones I like. We use these average velocities as shown in this figure:</p>
<img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/predictingwherewefinish.jpg" alt="Using velocity to predict how much will be done by a given date." title="predictingwherewefinish" width="450" height="338" class="size-full wp-image-102" />
<p>In this figure, the product backlog is shown on the left as a stack of index cards. We use the three average velocities multiplied by the number of remaining sprints to draw arrows pointing into the product backlog. The range created by these arrows indicates the likely amount of work finished by the planned date. Our release plan is the work defined by the arrows. Rather than a Release Backlog as a new work product or artifact, my equivalent of a release backlog is the product backlog and these arrows pointing into it.</p>
<p>As you can imagine, predicting velocity as a range is much more likely to be accurate than using a single point estimate (&#8220;Our velocity is 31.&#8221;) as has been implied by everyone I&#8217;ve heard talk about a Release Backlog. Additionally, looking at figures like these should make it apparent that the amount of work expected to be delivered in a release will change from sprint to sprint. Pointing arrows into a product backlog is much easier and more helpful than creating a new work product, the Release Backlog.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/why-there-should-not-be-a-release-backlog/feed</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
		<item>
		<title>Clarifying the Purpose of Iteration Planning</title>
		<link>http://blog.mountaingoatsoftware.com/clarifying-the-purpose-of-iteration-planning</link>
		<comments>http://blog.mountaingoatsoftware.com/clarifying-the-purpose-of-iteration-planning#comments</comments>
		<pubDate>Tue, 25 Nov 2008 04:12:58 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[Sprint Meetings]]></category>
		<category><![CDATA[agile estimation]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[sprint backlog]]></category>
		<category><![CDATA[sprint planning]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=66</guid>
		<description><![CDATA[I was recently asked whether it would be OK for a team to complete their iteration planning without going to the point of estimating tasks in hours. To answer this, let&#8217;s consider what the purpose of iteration planning is. In my view, the purpose of the iteration planning is for the team to arrive at [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently asked whether it would be OK for a team to complete their iteration planning without going to the point of estimating tasks in hours. To answer this, let&#8217;s consider what the purpose of iteration planning is.</p>
<p>In my view, the purpose of the iteration planning is for the team to arrive at a commitment to some set of functionality that they feel reasonably confident they can complete in the coming iteration. The purpose is not to identify tasks. The purpose is not to estimate the number of hours for each of those tasks. The purpose is to figure out how many and which product backlog items they can commit to delivering in the coming iteration.</p>
<p>If a team can do this without discussing tasks and hours, so be it. If a team can walk into the iteration planning meeting and one team member announces, &#8220;Sssh, I&#8217;ve receiving divine inspiration&#8230;&#8230;&#8230; We can do the first three items plus the sixth on the product backlog,&#8221; I would call the meeting over and we&#8217;d have our commitment. I&#8217;d be impressed and I&#8217;d be skeptical, but we&#8217;d be done with the meeting.</p>
<p>Since I haven&#8217;t seen a team do this yet, I strongly recommend that an iteration planning meeting involve identifying tasks, estimating the effort of each, and then using that information to arrive at a set of product backlog items the team can commit to. I think this is the best way for a team to arrive at that reasonable commitment that I believe is the purpose of this meeting. Is it the only way? No. I&#8217;ve also worked with teams who decide that they will split work up such that all tasks are &#8220;about half a day&#8221;. They then can skip explicitly estimating the hours for each task because, in a way they&#8217;ve already done it.  </p>
<p>But, until I learn how to receive divine inspiration at the start of my iteration planning meetings, I&#8217;m sticking with identifying tasks as hours as a good way to figure out how much to commit to.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/clarifying-the-purpose-of-iteration-planning/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
	</channel>
</rss>

