<?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; agile release planning</title>
	<atom:link href="http://blog.mountaingoatsoftware.com/tag/agile-release-planning/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>Estimating a Full Backlog Based on a Sample of It</title>
		<link>http://blog.mountaingoatsoftware.com/estimating-a-full-backlog-based-on-a-sample</link>
		<comments>http://blog.mountaingoatsoftware.com/estimating-a-full-backlog-based-on-a-sample#comments</comments>
		<pubDate>Fri, 16 Sep 2011 16:46:24 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Estimating]]></category>
		<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[agile estimation]]></category>
		<category><![CDATA[agile release planning]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=1131</guid>
		<description><![CDATA[I want to address a question I was sent recently and that I get asked about once a month. The question has to do with how we estimate how many hours it will take to deliver a given product backlog if we have no historical data at all. My first bit of advice is always [...]]]></description>
			<content:encoded><![CDATA[<p>I want to address a question I was sent recently and that I get asked about once a month. The question has to do with how we estimate how many hours it will take to deliver a given product backlog if we have no historical data at all. </p>
<p>My first bit of advice is always to try to put off answering until you&#8217;re able to get even one sprint of historical data. But that&#8217;s not always possible. When it&#8217;s not my general recommendation is to conduct one or more commitment-driven sprint planning meetings and use those to forecast likely velocity. </p>
<p>However, some people are still more comfortable thinking in hours and rather than forecast velocity, they want to forecast the number of hours a product backlog will take. From there they will usually estimate the duration of the project (something that could be done more directly with a velocity estimate). But, since it&#8217;s a common question, I&#8217;d like to address it.</p>
<p>Here&#8217;s essentially the question I was asked. I&#8217;ve paraphrased, simplified and left out extraneous information:</p>
<blockquote><p>We have no historical velocity data. We have a product backlog of 300 user stories. Each user story has been estimated, most in the range of 3-13 points. Would the following approach be reasonable:</p>
<ol>
<li>Grab a random sample of 40 stories.</li>
<li>Break each of those stories into tasks and estimate the tasks.</li>
<li>From the task estimates come up with an average number of hours per story.</li>
</ol>
<p>For example, suppose the randomly selected 40 user stories total 150 points and that the tasks identified for those 40 user stories total 600 hours. We would then theorize that it is about 4 hours per story point?
</p></blockquote>
<p>Well, yes, the idea here is fine with two problems: </p>
<ol>
<li>It&#8217;s important to remember that the relationship between points and hours is not an equivalence. It is not that 1 point equals 4 hours (which is what our example showed above). It is that 1 point equals a mean of four hours with a standard deviation of plus or minus say 45 minutes. This would mean that most of the time (68% of the time) the relationship would be that 1 point takes from 3:15 to 4:45 to finish. It would mean that almost always (98% of the time), one point would take between 2-1/2 and 5-1/2 hours to finish (two standard deviations). </li>
<li>The above approach assumes that 1-point stories and 13-point stories are estimated perfectly in relative terms. In other words, it assumes that if the mean duration of a one-point story is 4 hours, the mean of a 13-point story will be 13&#215;4=52 hours. For many reasons, this is unlikely to be true. And the data I&#8217;ve collected from a variety of teams, shows that&#8211;as we&#8217;d expect&#8211;teams are not perfect, even though many are amazingly consistent.</li>
</ol>
<p>So, what can we do to address these problems? A first really simple improvement is to calculate the average number of hours for stories of each size rather than one overall average. For example, in the example above we said that the 40 stories were 150 points in total and 600 hours for an average of 4 hours per point. But, if we averaged the 1-point stories on their own we might find that they were 3.2 hours per point, and the 2-point stories that were broken into tasks were 4.3 hours per point, and the 3-point stories were 4.1 hours, and so on.</p>
<p>We can then multiply that average number of hours by the number of stories on the product backlog of each size. An example using the average hours given above is shown in the following table:</p>
<table border="1">
<tr>
<th>Points</th>
<th>Hours Per Story</th>
<th># of Stories</th>
<th>Total Hours</th>
</tr>
<tr>
<td>1</td>
<td>3.2</td>
<td>5</td>
<td>16.0</td>
</tr>
<tr>
<td>2</td>
<td>8.6</td>
<td>8</td>
<td>68.8</td>
</tr>
<tr>
<td>3</td>
<td>12.3</td>
<td>7</td>
<td>86.1</td>
</tr>
</table>
<p>First, notice in the above that the second column is hours per story, not hours per point. The two-point stories were assumed to take 4.3 hours per point so 8.6 (4.3&#215;2) hours per story is shown in that column.</p>
<p>This table shows that we have five 1-point user stories. Each is expected to be about 3.2 hours so we expect to spend 16 hours total on the 1-point stories. Summing the last column in this table gives an expected total of 170.9 hours. </p>
<p>Note that this approach is subject to all the shortcomings that will have been introduced during the task identification and estimation step. Most importantly that the team will fail to identify all tasks. So this approach will estimate the number of hours to deliver the tasks identified. Some adjustment will need to be made to estimate the amount of work that the team failed to identify and the duration adjusted accordingly.</p>
<p>I&#8217;ll write about other improvements to this simple approach in upcoming blog posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/estimating-a-full-backlog-based-on-a-sample/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Balancing Anticipation and Adaptation</title>
		<link>http://blog.mountaingoatsoftware.com/balancing-anticipation-and-adaptation</link>
		<comments>http://blog.mountaingoatsoftware.com/balancing-anticipation-and-adaptation#comments</comments>
		<pubDate>Thu, 05 Nov 2009 08:43:21 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[agile release planning]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=256</guid>
		<description><![CDATA[A successful agile or Scrum project needs to find an appropriate balance between anticipating change and adapting to it.]]></description>
			<content:encoded><![CDATA[<p>A big part of an organization’s becoming agile is finding the appropriate balance between anticipation and adaptation, as Jim Highsmith wrote in <em><a href="http://amzn.com/0201760436">Agile Software Development Ecosystems</a></em>. The following figure shows this balance along with activities and artifacts that influence the balance. </p>
<p><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/balancing-anticipation-adaptation.jpg" alt="Balancing anticipation with adaptation." title="balancing-anticipation-adaptation" width="450" height="167" class="size-full wp-image-262" /></p>
<p>When doing up-front analysis or design, we are attempting to anticipate users’ needs. Because we cannot perfectly anticipate these, we will make some mistakes; some work will need to be redone. When we forgo analysis and design and jump immediately into coding and testing with no forethought at all, we are trying to adapt to users’ needs. </p>
<p>All projects of interest will be positioned somewhere between anticipation and adaptation based on their own unique characteristics; no application will be all the way to either extreme. A life-critical, medical safety application may be far to the anticipation side. A three-person startup company building a website of information on kayak racing may be far toward the side of adaptation.</p>
<p>Foretelling the agile preference for simplicity, in 1990, was <a href="http://www.ridgecrest.ca.us/~do_while/toaster.htm">speaker and author Do-While Jones</a>.</p>
<blockquote><p>I’m not against planning for the future. Some thought should be given to future expansion of capability. But when the entire design process gets bogged down in an attempt to satisfy future requirements that may never materialize, then it is time to stop and see if there isn’t a simpler way to solve the immediate problem.
</p></blockquote>
<p><a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">Agile project management</a> approaches avoid this “bogging down” by realizing that, while some anticipation is necessary, not all future needs are worth worrying about today. Many future needs may be best handled by planning to adapt as they arise.</p>
<p><em>For more information on this topic, see <a href="http://www.mountaingoatsoftware.com/books/7--succeeding-with-agile">Succeeding with Agile: Software Development using Scrum</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/balancing-anticipation-and-adaptation/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Using a One-Handed Clock to Convey Project Goals</title>
		<link>http://blog.mountaingoatsoftware.com/using-a-one-handed-clock-to-convey-project-goals</link>
		<comments>http://blog.mountaingoatsoftware.com/using-a-one-handed-clock-to-convey-project-goals#comments</comments>
		<pubDate>Wed, 07 Oct 2009 03:11:42 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[agile release planning]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[product owner]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=239</guid>
		<description><![CDATA[A new visualization for showing the relative importance of scope, schedule and budget on an agile or Scrum software development project.]]></description>
			<content:encoded><![CDATA[<p>The &#8220;iron triangle&#8221; is a long-accepted way of talking about the four parameters of project success. In the iron triangle, scope, schedule and budget each takes its place along a side of the triangle. Quality is placed in the middle under the premise that we don&#8217;t mess with quality. We can, however, adjust the sides. Sometimes a product owner or key stakeholder is told, &#8220;Pick any two but I can adjust the third&#8221; by the project manager, ScrumMaster or coach. Sometimes the customer is told, &#8220;you can only lock down one of the sides.&#8221;</p>
<p>I&#8217;ve recently decided there&#8217;s a better way to convey the points we&#8217;ve been trying to make with the iron triangle&#8211;we use The One-Handed Clock of Project Goals. </p>
<p>To use the one-handed clock, position Scope, Schedule and Budget where twelve o&#8217;clock, four o&#8217;clock, and eight o&#8217;clock would be on a clock. It doesn&#8217;t matter which is positioned where but I put them as shown in the figure. Quality is again assumable fixed and not needed on the clock.</p>
<p><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/NoHands.png" alt="The one-handed clock before its hand is added." title="NoHands" width="293" height="188" class="size-full wp-image-243" /></p>
<p>Next, ask the product owner or key stakeholder to point the one hand where it best indicates the project&#8217;s goals. The one hand can be aimed, for example, directly at Schedule. This would indicate that Schedule is the most important goal and Scope and Budget both take a back seat to it. </p>
<p><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/1HandedClock-A1.png" alt="A one-handed clock." title="1HandedClock-A" width="290" height="186" class="size-full wp-image-245" /></p>
<p>Or perhaps the one hand is pointed between Scope and Schedule showing a mix of importance between them. </p>
<p><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/1HandedClock-B.png" alt="1HandedClock-B" title="1HandedClock-B" width="288" height="189" class="alignnone size-full wp-image-248" /></p>
<p>To see how the One-Handed Clock of Project Goals works, take a moment to think about it. You can position the hand anywhere between any two of three goals but one goal is always left out. In the terms of the iron triangle, that would be the side left flexible.</p>
<p>There are a lot of things I like about this new way of visualizing the relative importance of Scope, Schedule and Budget. I&#8217;ll mention two here:</p>
<ul>
<li>The One-Handed Clock allows stakeholders or product owners to convey a position more precisely than saying something like &#8220;I pick Schedule and Budget.&#8221; The ability to point the arrow precisely rather than only directly at an item is essential.</li>
<li>The One-Handed Clock is a useful visual metaphor that can be hung in a team room. The iron triangle doesn&#8217;t really work for that as it&#8217;s hard to convey which sides were selected other than by darkening them, which doens&#8217;t show much.</li>
</ul>
<p>Try this out and let me know what you think. The teams and product owners I&#8217;ve introduced it to so far have found it to be a very helpful <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">agile project management</a> tool. I suspect you will as well. Also, let me know what else you use a one-handed clock for as it&#8217;s a useful visualization for any three competing factors.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/using-a-one-handed-clock-to-convey-project-goals/feed</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Two Chapters from Agile Estimating &amp; Planning Avialable</title>
		<link>http://blog.mountaingoatsoftware.com/two-chapters-from-agile-estimating-planning-avialable</link>
		<comments>http://blog.mountaingoatsoftware.com/two-chapters-from-agile-estimating-planning-avialable#comments</comments>
		<pubDate>Tue, 22 Sep 2009 03:02:23 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[agile books]]></category>
		<category><![CDATA[agile estimation]]></category>
		<category><![CDATA[agile release planning]]></category>
		<category><![CDATA[sprint planning]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=225</guid>
		<description><![CDATA[My publisher, Addison-Wesley, has just made two chapters from Agile Estimating &#038; Planning available for free. Check out Chapter 1, The Purpose of Planning, and Chapter 3, An Agile Approach.]]></description>
			<content:encoded><![CDATA[<p>My publisher, Addison-Wesley, has just made two chapters from <a href="http://www.mountaingoatsoftware.com/books/1-agile-estimating-and-planning">Agile Estimating &#038; Planning</a> available for free. Check out <a href="http://www.informit.com/articles/article.aspx?p=1374899">Chapter 1, The Purpose of Planning</a>, and <a href="http://www.informit.com/articles/article.aspx?p=1374900">Chapter 3, An Agile Approach</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/two-chapters-from-agile-estimating-planning-avialable/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Why Do Release Planning?</title>
		<link>http://blog.mountaingoatsoftware.com/why-do-release-planning</link>
		<comments>http://blog.mountaingoatsoftware.com/why-do-release-planning#comments</comments>
		<pubDate>Sat, 11 Apr 2009 10:24:59 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[agile release planning]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=140</guid>
		<description><![CDATA[I live in Colorado, which boasts some of the world’s best hiking trails and North America’s greatest concentration of mountain peaks over 14,000 feet (nearly 4,300 meters). There are so many mountains over 14,000 feet high here that they are referred to simply as “fourteeners.” Most of Colorado’s fourteeners are non-technical routes; no special equipment [...]]]></description>
			<content:encoded><![CDATA[<p>I live in Colorado, which boasts some of the world’s best hiking trails and North America’s greatest concentration of mountain peaks over 14,000 feet (nearly 4,300 meters). There are so many mountains over 14,000 feet high here that they are referred to simply as “fourteeners.” Most of Colorado’s fourteeners are non-technical  routes; no special equipment is needed and anyone in good shape can  make it to the summit.</p>
<p>This means there are a couple of different ways to climb a fourteener.  One approach is to drive to the base of the mountain and start walking  toward the highest thing you see. This will almost certainly be a false peak—once you’re reached it, you’ll see a higher point that had been obscured by the false peak. So walk again toward the highest point you see. It, too, will probably be a false peak. But, keep this up long enough and you’ll eventually find the true summit. In doing so, though, you will probably have to descend into a few valleys only to climb higher on the other sides. The approach will feel highly inefficient.</p>
<p>A second way to climb a fourteener is to purchase a topographic map, identify a route up the mountain, and then proceed that way. Looking first at a topographic map allows you to plot a course to the summit that avoids much of the inefficiency of the first approach. Of course, we must be careful not to value our route plan too highly—a stream we plan to cross may be too deep when we get there or a rock slide may have made a trail impassable, and we’ll need to alter the route when we encounter these problems.</p>
<p>An agile team does release planning to avoid the same type of problems we avoid with a topographic map when hiking a fourteener. A release plan helps a team avoid finishing a series of sprints and feeling that, while they always worked on the highest priority items, the collection of work completed does not add up to a satisfying whole.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/why-do-release-planning/feed</wfw:commentRss>
		<slash:comments>6</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>Interviewed by Software Process and Measurement Cast</title>
		<link>http://blog.mountaingoatsoftware.com/interviewed-by-software-process-and-measurement-cast</link>
		<comments>http://blog.mountaingoatsoftware.com/interviewed-by-software-process-and-measurement-cast#comments</comments>
		<pubDate>Mon, 06 Oct 2008 01:15:24 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[agile estimation]]></category>
		<category><![CDATA[agile release planning]]></category>
		<category><![CDATA[mike in the news]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=57</guid>
		<description><![CDATA[I was interviewed recently by Tom Cagley for the Software Process and Measurement Cast. Part 1 of the interview is available for download now. During the interview, Tom and I discuss agile estimating and planning. Part 2 will be available in early November.]]></description>
			<content:encoded><![CDATA[<p>I was interviewed recently by Tom Cagley for the Software Process and Measurement Cast. <a href="http://www.spamcast.libsyn.com/index.php?post_id=387960">Part 1 of the interview</a> is available for download now. During the interview, Tom and I discuss agile estimating and planning. Part 2 will be available in early November.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/interviewed-by-software-process-and-measurement-cast/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Predicting Velocity When Teams Change Frequently</title>
		<link>http://blog.mountaingoatsoftware.com/predicting-velocity-when-team-membership-or-size-changes-frequently</link>
		<comments>http://blog.mountaingoatsoftware.com/predicting-velocity-when-team-membership-or-size-changes-frequently#comments</comments>
		<pubDate>Mon, 11 Aug 2008 03:28:57 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[agile release planning]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[velocity]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=50</guid>
		<description><![CDATA[As a measure of the amount of work completed in an iteration, velocity works extremely well when teams are relatively stable. If the same people stay on a team, it is reasonable to assume that the amount of work they complete will be relatively constant from iteration to iteration. This allows us to plan using [...]]]></description>
			<content:encoded><![CDATA[<p>As a measure of the amount of work completed in an iteration, velocity works extremely well when teams are relatively stable. If the same people stay on a team, it is reasonable to assume that the amount of work they complete will be relatively constant from iteration to iteration. This allows us to plan using inferences such as &#8220;This team has an average velocity of 25 points per iteration over the last year and they have time for 8 iterations in this new project; therefore they will complete around 200 points in those 8 iterations.&#8221;</p>
<p>But what do we do when we are <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">managing an agile project</a> where team membership or size changes frequently?</p>
<p>To answer this question most effectively, you should collect data on how teams of different sizes have performed over time in your organization. When I was a VP of Development at a couple of agile organizations, I used to collect data on velocity and team size changes in a simple spreadsheet similar to this:</p>
<table border="1">
<tr>
<th>Initial Team Size</th>
<th>New Team Size</th>
<th>Median of Last 5</th>
<th>Iteration +1</th>
<th>Iteration +2</th>
<th>Iteration +3</th>
</tr>
<tr>
<td>6</td>
<td>7</td>
<td>25</td>
<td>20</td>
<td>24</td>
<td>28</td>
</tr>
<tr>
<td>6</td>
<td>7</td>
<td>16</td>
<td>16</td>
<td>15</td>
<td>19</td>
</tr>
<tr>
<td>8</td>
<td>6</td>
<td>50</td>
<td>40</td>
<td>40</td>
<td>42</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>12</td>
<td>10</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<p>The first column represented the size of the team before a change occurred. The next column represented the new size of the team (up or down). The third column was what I considered to be a reasonable &#8220;long term average&#8221; velocity for the team at its initial size. Because team&#8217;s could change frequently (by a person or two) I settled on using the median value of the team&#8217;s last five iterations. The tradeoff in using a longer measure (median of 15 iterations perhaps) is that you&#8217;d have fewer observations. The next columns represent the actual velocities of teams over the next three iterations. Notice that for the last team values are not shown for the last two iterations. This is usually because the team size changed again. If you have a significant number of teams, the rows in this type of spreadsheet will accumulate quite quickly.</p>
<p>In some of the organizations where I used this approach we did not have a standardized definition of story point (or we&#8217;re using ideal days, which were not as normalized as you might think). So all analysis was done on a percentage basis. What I wanted to know was &#8220;What is the average impact of adding a person to a seven-person team?&#8221; I would have loved the answer to be something like &#8220;Velocity goes up 15%.&#8221; Unfortunately, it wasn&#8217;t that straightforward because velocity often dipped for a couple of iterations before going up. By tracking data I found that usually by the third iteration a team had settled in on a new velocity, which is why my spreadsheet above only tracks through Iteration+3. By all means, track more and see what you find. (But keep in mind that the data will get sparse as team sizes will change again.)</p>
<p>Another tab in my spreadsheet, expressed all the data in percentage terms. The first two rows </p>
<table border="1">
<tr>
<th>Initial Team Size</th>
<th>New Team Size</th>
<th>Iteration +1</th>
<th>Iteration +2</th>
<th>Iteration +3</th>
</tr>
<tr>
<td>6</td>
<td>7</td>
<td>-20%</td>
<td>-4%</td>
<td>+12%</td>
</tr>
<tr>
<td>6</td>
<td>7</td>
<td>0%</td>
<td>-6%</td>
<td>+15%</td>
</tr>
</table>
<p>(Example: Iteration +1 in the first row is -20% based on the team dropping its velocity from 25 to 20.) </p>
<p>I then simply averaged these percentages for each team size change to get results like:</p>
<table border="1">
<tr>
<th>Initial Team Size</th>
<th>New Team Size</th>
<th>% Change in Iteration +1</th>
<th>% Change in Iteration +2</th>
<th>% Change in Iteration +3</th>
</tr>
<tr>
<td>6</td>
<td>7</td>
<td>-10%</td>
<td>-5%</td>
<td>+15%</td>
</tr>
</table>
<p>This allowed me to answer all sorts of questions, including:</p>
<ul>
<li>What will this team&#8217;s velocity be if we add two people?</li>
<li>How soon could we get this project if we added a person to each team?</li>
<li>If I want all those projects done by the end of the year, how many people would we need to add?</li>
<li>What would be the impact of not approving the new employees in the budget?</li>
<li>What would be the impact of a 15% layoff?</li>
</ul>
<p>There are of course many flaws with this approach. Adding Susan to the project is very different than &#8220;adding an unknown person&#8221; to the project. Still, if I have the data on averages across the board in our organization I can make assumptions about specifically adding Susan (if I want, there can be many more risks in doing this). Notice that the approach does not attempt to take into consideration who it was that was added or even what skillset the person had. You could collect such data if you wanted. As anal about collecting all sorts of data like this as I am when I have access to it, I knew though that collecting that type of data would have made this just hard enough that I wouldn&#8217;t have done it regularly.</p>
<p>I did collect a few other bits of data that I left out of the initial table (so as to have more horizontal room for the data of real interest). For example, I collected data such as iteration length and the name of the team&#8217;s ScrumMaster (the latter was in case I had questions a few weeks later).</p>
<p>The approach described here was just simple enough that I could get empirical evidence of the impact of team size changes. This was invaluable when discussing headcount changes with product owners and the CEO.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/predicting-velocity-when-team-membership-or-size-changes-frequently/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Visualizing a Large Product Backlog With a Treemap</title>
		<link>http://blog.mountaingoatsoftware.com/visualizing-a-large-product-backlog-with-a-treemap</link>
		<comments>http://blog.mountaingoatsoftware.com/visualizing-a-large-product-backlog-with-a-treemap#comments</comments>
		<pubDate>Wed, 02 Jul 2008 22:09:48 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Scaling Scrum/Agile]]></category>
		<category><![CDATA[Sprint Artifacts]]></category>
		<category><![CDATA[agile release planning]]></category>
		<category><![CDATA[large projects]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[product owner]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=33</guid>
		<description><![CDATA[How to visualize a large product backlog using a treemap.]]></description>
			<content:encoded><![CDATA[<p>In the early days we promoted <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">agile project management</a> only for small teams because that was where it originated. We had plenty of experience to say that agile worked well on seven- to ten-person teams. We were also quick to learn the techniques that allowed agile project management methodologies to scale up to around 20-40 people. </p>
<p>These days, though, there are many truly large projects being done with agile methodologies. In preparing for this posting I started counting on my fingers the number of 100+ person projects I&#8217;m aware of. I quickly ran out of fingers. I&#8217;ve been involved in a couple of 500+ person projects and am aware of three projects that each have over 1,000 people. We are truly at the point of doing large scale agile.</p>
<p>Unfortunately, the charts and tools we use for such large projects have not entirely caught up with us. For example, the time-tested Scrum burndown chart is absolutely wonderful but is really limited to showing only one thing: a single team&#8217;s rate of progress through their product backlog. This month I want to write about visualizing large product backlogs using a technique I&#8217;ve been advocating with my clients for three years but will be writing about here for the first time.</p>
<p>Suppose you have a very large product backlog&#8211;such as one with lots of themes (groups of related user stories) or being worked on by multiple agile teams. The best way to visualize this product backlog is with a <em>treemap</em>. Treemaps were invented in the 1990s by Dr. Ben Shneiderman as a way of visualizing hierarchical (that is, tree-structured) data. </p>
<p>The following is a simple treemap of a two-story house:</p>
<p><a href='http://blog.mountaingoatsoftware.com/wp-content/uploads/house_treemap.jpg'><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/house_treemap.jpg" alt="treemap of two floors of a house" title="house_treemap" width="450" height="320" class="aligncenter size-full wp-image-37" /></a></p>
<p>In this treemap, each rectangle is sized to represent the relative area of the room. From it you can see that the master bedroom is about twice the size of either kid&#8217;s room and a little larger than the downstairs family room. The combined green area of the downstairs rooms is slightly larger than the area of blue upstairs rooms. From this very simple treemap you can get a feel of certain aspects of this house.</p>
<p>To visualize a product backlog with a treemap we need to conceptualize it as hierarchical data. We can do this a couple of different ways. For example,</p>
<p>Rental Car Theme</p>
<ul>
<li>As a traveler, I can rent a car</li>
<li>As a traveler, I can get collision insurance on a car rental policy.</li>
<li>As a traveler, I can request a baby car seat be inside my car.</li>
</ul>
<p>Airplane Theme</p>
<ul>
<li>As a traveler, I can request an aisle seat.</li>
<li>As a frequent flyer, I can request an upgrade to first class.</li>
</ul>
<p>Or we could create a product backlog as a tree with levels for</p>
<ul>
<li>Team</li>
<ul>
<li>Product Backlog Items Being Worked On By That Team</li>
</ul>
</ul>
<p>The following figure shows a product backlog as a treemap. There are five themes in the treemap. (Theme 4 is in the top left; Theme 1 is in the bottom right. You can click on it to enlarge it but be sure t come back.) Each theme is made up of a number of individual user stories. Story 4-28 (indicating the 28th story of theme 4) is in the top left. I&#8217;ve used this &#8220;theme-dash-story&#8221; notation for simplicity only for this example. I wouldn&#8217;t do that on a real project, of course.</p>
<p><a href='http://blog.mountaingoatsoftware.com/wp-content/uploads/fulltreemap.jpg'><br />
    <img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/fulltreemap_inline.jpg" alt="a treemap" title="fulltreemap_inline" width="450" height="351" class="aligncenter size-full wp-image-36" /><br />
</a></p>
<p>The size of each story in the preceding figure represents the number of story points that the story was assigned when estimated. Colors can be used on a treemap to represent an additional attribute of the data. On agile projects I&#8217;ve used colors to represent whether a user story has been developed or not. One color coding we used was:</p>
<ol>
<li>Done</li>
<li>Started but not done</li>
<li>Not started but not planned to have been started yet</li>
<li>Not started but it should have been started by now</li>
<li>Blocked</li>
</ol>
<p>I&#8217;ve also used color to indicate which team would work on a user story / product backlog item or whether the item was ready for development or not. Treemaps are very flexible in this regard. Check out the link to the stock market as a treemap at the end to see a great example of using color.</p>
<p>A good treemap is interactive&#8211;you can mouse over, click on regions of it, and so on. For example, in the treemap above you&#8217;ll notice that some of the user stories of Theme 4 are so small you can&#8217;t read them. Clicking on a part of Theme 4 should zoom the treemap in so it displays only Theme 4, meaning more room is available and more detail can be shown as below: </p>
<p><a href='http://blog.mountaingoatsoftware.com/wp-content/uploads/theme4zoomed.jpg'><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/theme4zoomed_small.jpg" alt="Zoomed in on Theme 4" title="theme4zoomed_small" width="450" height="240" class="aligncenter size-full wp-image-40" /></a></p>
<p>Sometimes zooming isn&#8217;t enough. A good treemap implementation will also display additional detail when mousing over part of it as shown in this example:</p>
<p><a href='http://blog.mountaingoatsoftware.com/wp-content/uploads/popup.jpg'><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/popup_small.jpg" alt="A treemap with an active popup" title="popup_small" width="450" height="239" class="aligncenter size-full wp-image-41" /></a></p>
<p>Treemaps are an excellent way of visualizing large product backlogs. To date, I&#8217;ve made use of various open source or relatively inexpensive general treemapping tools to create these on my projects or for my clients. Hopefully now some of the leading agile tool vendors begin to incorporate this type of visualization technique into their products. I would love to be able to visualize a large product backlog and interact with directly from within some of those tools. Until then, check out some of the links below for useful ways to create treemaps. The ones in this posting were created with IBM&#8217;s free <a href="http://services.alphaworks.ibm.com/manyeyes/">Many Eyes</a> tool.</p>
<p>Useful links:</p>
<ol>
<li><a href="http://www.smartmoney.com/map-of-the-market/">The stock market as a treemap</a></li>
<li><a href="http://services.alphaworks.ibm.com/manyeyes/page/Treemap.html">IBM&#8217;s Free Many Eyes tool</a></li>
<li><a href="http://download.macrofocus.com/treemap/">A good interactive example of a treemap</a></li>
<li><a href="http://marumushi.com/apps/newsmap/newsmap.cfm">Read news headlines as a treemap</a></li>
<li><a href="http://js-treemap.sourceforge.net/">A simple JavaScript implementation you could add to your project homepage</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/visualizing-a-large-product-backlog-with-a-treemap/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Improving On Traditional Release Burndown Charts</title>
		<link>http://blog.mountaingoatsoftware.com/improving-on-traditional-release-burndown-charts</link>
		<comments>http://blog.mountaingoatsoftware.com/improving-on-traditional-release-burndown-charts#comments</comments>
		<pubDate>Wed, 18 Jun 2008 00:09:26 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[agile release planning]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[sprint burndown chart]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=30</guid>
		<description><![CDATA[I want to use this month&#8217;s blog posting to introduce a type of burndown (and burnup) chart that I find useful. I&#8217;ve been drawing this style of burndown chart for years and have coached many of my clients to do the same. Unfortunately, we&#8217;ve had to draw it either by hand or in tools like [...]]]></description>
			<content:encoded><![CDATA[<p>I want to use this month&#8217;s blog posting to introduce a type of burndown (and burnup) chart that I find useful. I&#8217;ve been drawing this style of burndown chart for  years and have coached many of my clients to do the same. Unfortunately, we&#8217;ve had to draw it either by hand or in tools like Visio and OmniGraffle because the agile tool vendors haven&#8217;t (to my knowledge) hit on this idea yet. I&#8217;m hopeful that some of them will see this posting, decide this is a good visualization, and incorporate it into their products.</p>
<p>The classic Scrum release burndown chart is good at showing whether a team will finish &#8220;on time&#8221; as can be seen in the following example burndown chart:</p>
<p><a href="http://www.mountaingoatsoftware.com/system/asset/file/64/ReleaseBurndownChart.jpg"><br />
<img src="http://www.mountaingoatsoftware.com/system/asset/file/64/ReleaseBurndownChart.jpg" alt="A traditional release burndown chart" /><br />
</a></p>
<p>A release burndown chart such as this one shows sprints on the horizontal axis and can show story points or ideal days on the vertical. It is updated once per sprint to show the team&#8217;s net progress that sprint. A team&#8217;s net progress is the amount of work they finished net of any changes in scope. So a team that completes 30 points of work but that has 10 points added to their product backlog will show net progress of 20.</p>
<p>But while a traditional release burndown chart excels at showing whether a team is on pace to finishing on time, it is not very good at showing what will be included in that &#8220;on time&#8221; delivery. To see this, imagine two teams that each start with 200 story points of work. The first team finishes twenty points of work for each of ten sprints. The second team is incompetent and rather than completing twenty points each sprint they drop twenty points of scope each sprint. The two burndown charts will be identical&#8211;perfect lines descending over ten sprints from 200 to 0.</p>
<p>At one level this is OK: the burndown chart shows whether a team will be finished (or by when the will be finished). The simplicity of the standard release burndown chart has much in its favor.</p>
<p>It isn&#8217;t hard, though, to extend a release burndown chart to also show what will be in the product by the final sprint. Look at the next figure, which is a hypothetical example of an eCommerce product.</p>
<p><a href="http://www.mountaingoatsoftware.com/system/asset/file/65/PredictiveBurndownChart.jpg"><br />
<img src="http://www.mountaingoatsoftware.com/system/asset/file/65/PredictiveBurndownChart.jpg" alt="A predictive release burndown chart" /><br />
</a></p>
<p>In this figure, you can see the burndown is tracked in the normal way through the end of the current sprint, the seventh. The company desires to release this product after the fourteenth two-week sprint. The right side of the burndown chart shows the team&#8217;s product backlog with the highest priority theme (&#8220;Returns&#8221;) at the top. This top block represents some &#8220;must-have&#8221; user stories related to returning purchased items. Below that is a theme for gift wrapping purchased items, followed by some &#8220;nice to have&#8221; aspects of returning items. At the bottom right is the Coupons theme.</p>
<p>Extending out from the team&#8217;s current position at the end of the seventh sprint are four lines. These lines represent the following:</p>
<ol>
<li>The team&#8217;s current position, drawn as a horizontal line from the current burndown position over to the product backlog. This tells us what is in the product so far. We can see that the mandatory return user stories and the gift wrap user stories are finished and that the team is partially into the nice-to-have return user stories.</li>
<li>A black, dashed line showing the team&#8217;s most likely finish. This is the first of three trend lines meant to show the likely range of work the team might deliver. To draw a team&#8217;s most likely finish use the team&#8217;s long-term average velocity. You can define &#8220;long-term average velocity&#8221; in whatever way you want but my preference is to use the average velocity of the last 8-12 sprints. Pick the number of historical sprints that is most suitable for your team based on how long the sprints are and how long the team stays together.
</li>
<li>A pessimistic forecast of the amount of functionality that may be delivered. I recommend forecasting this based on a team&#8217;s worst-case but likely velocity. Calculate this by averaging the worst three or so velocities chosen among the same 8-12 iterations you looked back at to determine the team&#8217;s long-term average velocity.
</li>
<li>An optimistic forecast of the amount of functionality that may be delivered. Calculate this in the same was as in the pessimistic case but use the three (or so) best velocities of the team.
</li>
</ol>
<p>The figures in this blog are static images I&#8217;ve cut from a presentation. If you apply this technique for your team, the backlog items on the right should be clickable, allowing users to drill down into a product backlog theme to see specifically which items (typically user stories) make up the backlog. </p>
<p>By producing a single chart that shows both a team&#8217;s rate of progress (its burndown) and the product backlog, we have a single visualization that shows both when a team is likely to finish and what features will be in the product by that time. This makes is easier for product owners to make scope vs. schedule tradeoff decisions.</p>
<p>Check back in a few weeks when I&#8217;ll show an even more powerful technique for visualizing large product backlogs.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/improving-on-traditional-release-burndown-charts/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

