<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
  <channel>
    <title>
      James Shore
      
    </title>
    <link>http://jamesshore.com</link>
    <description>Successful Software</description>
    <language>en</language>
    <copyright>Copyright 2000-2006, James Shore</copyright>
    <generator>Blosxom v2.0</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    
<item>
  <title>An Approximate Measure of Technical Debt</title>
  <link>http://jamesshore.com/Blog/An-Approximate-Measure-of-Technical-Debt.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;19 Nov 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;&lt;a href=&quot;http://jamesshore.com/Articles/Business/Software%20Profitability%20Newsletter/Design%20Debt.html&quot;&gt;Technical debt&lt;/a&gt; sucks, and it's a particularly common problem for the teams I work with.  Technical debt affects everything they do.  It disrupts plans, kills productivity, and creates defects.  There is much wailing and gnashing of teeth, but strangely, these teams put very little effort into &lt;em&gt;paying off&lt;/em&gt; the debt.  (That's probably why they got into this mess in the first place.)&lt;/p&gt;

&lt;p&gt;Part of the problem is that technical debt is, well, technical, so only programmers can see it.  Managers and stakeholders can see the &lt;em&gt;effects&lt;/em&gt; of the debt (the aforementioned wailing and gnashing of teeth), but they can't see the &lt;em&gt;cause&lt;/em&gt;.  So when programmers complain about the quality of the code, they often ignore them.  &quot;We're behind schedule already!&quot; they cry, brandishing their whips.  &quot;Row faster!&quot;  And the poor programmers work as hard they can, taking more shortcuts, incurring more debt, and making things even worse.&lt;/p&gt;

&lt;p&gt;Not that programmers are perfect.  There are plenty of programmers who haven't a clue about good design, and they merrily rack up technical debt without even realizing they're doing it.&lt;/p&gt;

&lt;h3&gt;Measuring Technical Debt&lt;/h3&gt;

&lt;p&gt;I've been searching for a measure of technical debt (or its inverse, &lt;a href=&quot;http://jamesshore.com/Articles/Quality-With-a-Name.html&quot;&gt;design quality&lt;/a&gt;) to help address this problem.  Now, no measure is going to turn bad programmers into good programmers.  Design quality is a human problem, and compilers eat spaghetti code just as easily as they eat clean code.  But I think it would help if people could at least tell when they were making things worse.  Unfortunately, traditional measures such as McCabe's &lt;a href=&quot;http://en.wikipedia.org/wiki/Cyclomatic_complexity&quot;&gt;cyclomatic complexity&lt;/a&gt; don't do a great job of exposing the large-scale technical debt I see most often.&lt;/p&gt;

&lt;p&gt;I think I've finally found the right metric.  It's a good one.  Years of research has shown that this metric correlates closely with cost, effort, and bugs.  I'm surprised nobody thought of it before now.&lt;/p&gt;

&lt;p&gt;Ready?&lt;/p&gt;

&lt;p&gt;It's lines of code.&lt;/p&gt;

&lt;h3&gt;The Case For SLOC&lt;/h3&gt;

&lt;p&gt;I'm not kidding.  SLOC isn't a perfect metric, but I think (source) lines of code approximates technical debt.  (And in case anyone is confused, I mean that more lines of code represent more technical debt.  More lines of code, &lt;em&gt;more&lt;/em&gt; technical debt, &lt;em&gt;worse&lt;/em&gt; code quality.  SLOC = bad, got it?)&lt;/p&gt;

&lt;p&gt;Think about it. If we define technical debt as high cost of change, then SLOC fits the bill perfectly.  Estimation gurus have long known that lines of code are correlated to effort and defects. In fact, many estimation tools work by taking a size estimate (either in lines of code or its language-neutral equivalent, function points), then running it through an algorithm that estimates project length, effort, and cost.&lt;/p&gt;

&lt;p&gt;If that isn't enough, what's the most common form of technical debt?  Duplication!  Duplication!  Duplication!  Either the blatant duplication of cut-and-paste coding (leading to duplicated lines of code) or the subtle duplication of poor abstractions (leading to repeated concepts and algorithms).  Cut duplication and you improve code quality.  As &lt;a href=&quot;http://martinfowler.com/ieeeSoftware/repetition.pdf&quot;&gt;Martin Fowler said in 2001&lt;/a&gt;, &quot;I have an increasing sense that pig-headed determination to remove all repetition can lead you a long way toward a good design.&quot;&lt;/p&gt;

&lt;p&gt;And then there's Carter's Compass, coined by John Carter: &quot;I know I'm on the right track when by deleting code I'm adding functionality.&quot;  Who hasn't had the wonderful experience of adding features while reducing the overall size of the codebase?  It's a great feeling.  You just know you're doing good work.&lt;/p&gt;

&lt;h3&gt;Nothing's Perfect&lt;/h3&gt;

&lt;p&gt;SLOC is an imperfect metric, and one objection is that adding features increases lines of code.  Although you can offset that increase by reducing technical debt elsewhere, a perfect programs will have no technical debt to reduce.&lt;/p&gt;

&lt;p&gt;I don't think this is a real-world problem, and perfect people won't need this metric.  (Mostly because they don't exist.)  Real, non-trivial systems have plenty of opportunities to reduce size even as features are added.  Even if nearly all of those are worked out--and I'll believe it when I see it--then you can use the metric to check that the rate of increase says low.&lt;/p&gt;

&lt;p&gt;Another failure case of SLOC as a metric of technical debt is that it could encourage other types of bad code: people creating monstrous one-liners, for example, or refusing to make small methods because of a language's boilerplate.&lt;/p&gt;

&lt;p&gt;We can work around this problem by counting executable statements rather than actual lines of code.  For example, the following Java code counts as one statement:

&lt;blockquote class=&quot;code&quot;&gt;
	public class HelloWorld {
		&lt;br /&gt;&amp;nbsp;&amp;nbsp;public static void main() {
			&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&quot;Hello, World!&quot;);
		&lt;br /&gt;&amp;nbsp;&amp;nbsp;}
	&lt;br /&gt;}
&lt;/blockquote&gt;


&lt;h3&gt;The Spag&lt;/h3&gt;

&lt;p&gt;So here's my proposal.  The unit of technical debt is the &quot;Spag (Sg),&quot; from &quot;spaghetti.&quot;  You can pronounce it &quot;Spag&quot; (rhymes with &quot;gag&quot;) or &quot;Spug&quot; (rhymes with &quot;bug&quot;) depending on your preference.  (I almost went with the &quot;Foote,&quot; in homage to Brian Foote's and Joseph Yoder's awesome &lt;a href=&quot;http://www.laputan.org/mud/&quot;&gt;Big Ball of Mud&lt;/a&gt; design pattern, but I wasn't sure if Brian would appreciate having a measure of code crap named after him.  So Spag it is.)&lt;/p&gt;

&lt;p&gt;To keep the numbers sensible, and to prevent obsessing over micro-optimizations, one spag equals 1,000 statements, and spags are never calculated to more than one decimal place.  So the Java &quot;Hello World&quot; program above has 0.0 spags of technical debt, and a program with a million statements has a kilospag.&lt;/p&gt;

&lt;p&gt;(A kilospag is spagload of technical debt, and if you've ever worked on one of those programs, you know just how bad it is.)&lt;/p&gt;

&lt;p&gt;I think the best way to use the spag is to track trends in your codebase. It's particularly appropriate when you know you have problems and you want to see your progress, or if you need a visual way to show managers and stakeholders that you've been accumulating technical debt.  (&quot;Since you told us to 'meet the deadline or else,' our rate of spag accumulation has quadrupled.  We need to start paying more attention to design quality and paying off this debt, or we're going to have serious productivity and quality problems.&quot;)&lt;/p&gt;

&lt;p&gt;It's a fun idea with a silly name, but I also think it's got real potential. Try it out on your projects and let me know how it works for you.&lt;/p&gt;

    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Blog/An-Approximate-Measure-of-Technical-Debt.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Blog</category>
  <guid isPermaLink="true">http://jamesshore.com/Blog/An-Approximate-Measure-of-Technical-Debt.html</guid>
</item>
<item>
  <title>The Decline and Fall of Agile</title>
  <link>http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;14 Nov 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p&gt;It's odd to talk about the decline and fall of the agile movement, especially now that it's so popular, but I actually think the agile movement has been in decline for several years now.&lt;/p&gt;

&lt;h3&gt;The State of the Art&lt;/h3&gt;

&lt;p&gt;I've seen a shift in my business over the last few years. In the beginning, people would call me to help them introduce Agile, and I would sell them a complete package that included agile planning, cross-functional teams, and agile engineering practices.&lt;/p&gt;

&lt;p&gt;Now many people who call me already have Agile in place (they say), but they're struggling. They're having trouble meeting their iteration commitments, they're experiencing a lot of technical debt, and testing takes too long.  So they hire me to help them with one of these things.  When I go visit, I see a team that is nominally agile, but is suffering huge numbers of problems and is anything but the joyful, settled, smooth-running workplace I expect from an agile organization.&lt;/p&gt;

&lt;p&gt;Other consultants I've talked to report the same experience.  &quot;Rescuing Scrum teams keeps me in business,&quot; joked one colleague.  It's funny because it's true.&lt;/p&gt;

&lt;h3&gt;The Role of Scrum&lt;/h3&gt;

&lt;p&gt;Scrum is undeniably the winner of the agile method wars.  Thanks to the Scrum Alliance's vast (and lucrative) network of Certified Scrum Trainers and Certified ScrumMaster courses, when people say &quot;Agile,&quot; they usually mean Scrum.  So when &quot;Agile&quot; fails, it's generally Scrum that's failing. And Scrum is incomplete, purposefully so.  &quot;Scrum is like your mother-in-law,&quot; Ken Schwaber said at the recent Agile Vancouver conference. &quot;It's constantly pointing out your shortcomings.&quot;  The trick is that you're supposed to learn from that feedback and fix your problems.&lt;/p&gt;

&lt;p&gt;But because Scrum works in short cycles and doesn't include any engineering practices, it's very easy for teams using Scrum to throw out design. Up-front design doesn't work when you're using short cycles, and Scrum doesn't provide a replacement. Without continuous, incremental design, Scrum teams quickly dig themselves a gigantic hole of technical debt.  Two or three years later, I get a call--or one of my colleagues does.  &quot;Changes take too long and cost too much!&quot; I hear.  &quot;Teach us about test-driven development, or pairing, or acceptance testing!&quot;  By that time, fixing the real problems requires paying back a lot of technical debt, and could take years.&lt;/p&gt;

&lt;p&gt;What frustrates me the most is that this situation is entirely avoidable. In a green-field environment, the solid agile engineering practices included in Extreme Programming pay for themselves within the first few months. Without XP's agile engineering practices, code quality and productivity asymptotically decreases over time.  With them, productivity starts lower, but then it asymptotically &lt;em&gt;increases&lt;/em&gt;.  I can't prove it, but my sense is that the two curves cross at about the eight-week mark.  Maybe sooner.  Agile engineering practices aren't only important--they pay for themselves!  Doing anything else is pure negligence... if you understand your options.  Scrum is silent on the matter.&lt;/p&gt;

&lt;h3&gt;Scrum, Misapplied&lt;/h3&gt;

&lt;p&gt;It's not entirely Scrum's fault. Agile development isn't just about good engineering practices. It's also about acknowledging the importance of people in software development, forming cross-functional teams, obtaining high-bandwidth communication, constantly reflecting and improving, delivering value, and changing plans to take advantage of opportunities.&lt;/p&gt;

&lt;p&gt;Scrum includes these other points. It says that the team should be cross-functional and recommends collocating the team in a shared workspace. It says the team should deliver a valuable, shippable product at the end of every Sprint, and that the team should self-organize, discover impediments, and remove them.&lt;/p&gt;

&lt;p&gt;Oh, and it also has a few mechanical things about a monthly Sprint and daily Scrum.  Trivial stuff compared to the rest.  But guess which part people adopt?  That's right--Sprints and Scrums. Rapid cycles, but none of the good stuff that makes rapid cycles &lt;em&gt;sustainable&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;You're Doing It Wrong&lt;/h3&gt;

&lt;p&gt;There are a lot of teams right now failing with Agile. These teams are working in short cycles. The increased planning frequency has given them more control over their work and they're discovering and fixing some problems. They feel good, and they really are seeing more success than they were before.&lt;/p&gt;

&lt;p&gt;But they aren't working in shared workspaces or emphasizing high-bandwidth communication. They're don't have on-site customers or work in cross-functional teams. They don't even finish all of their stories by the end of each Sprint, let alone deliver releasable software, and they certainly don't use good engineering practices.&lt;/p&gt;

&lt;p&gt;These teams say they're Agile, but they're just planning (and replanning) frequently. Short cycles and the ability to re-plan are the &lt;em&gt;benefit&lt;/em&gt; that Agile gives you. It's the &lt;em&gt;reward&lt;/em&gt;, not the &lt;em&gt;method&lt;/em&gt;. These psuedo-Agile teams are having dessert every night and skipping their vegetables. By leaving out all the other stuff--the stuff that's really Agile--they're setting themselves up for rotten teeth, an oversized waistline, and ultimate failure. They feel good now, but it won't last.&lt;/p&gt;

&lt;h3&gt;Failures in the Midst&lt;/h3&gt;

&lt;p&gt;It's human nature to only do the stuff that's familiar and fun, and that's what has happened with Agile. People look at agile methods as a chinese menu of practices, choose the few that look cool, and ditch the rest.  Unfortunately, the parts they leave out are the parts that make Agile work.  Scrum makes it worse by ignoring important (but hard) agile engineering practices, and the Scrum Alliance makes it worse still with their armies of trainers--some good, some not--issuing dubious &quot;ScrumMaster&quot; certificates to people who demonstrated competence in connecting butt to chair for two days.&lt;/p&gt;

&lt;p&gt;So, unfortunately, a lot of self-described Agile projects are going to fail.  They're failing right now. And eventually Agile will take the blame, and it will pass, as all fads eventually do.&lt;/p&gt;

&lt;p&gt;It's too bad. The good Agile--the real Agile--it really works. I've seen it. My colleagues have seen it. It's been repeated hundreds of times, and some of those projects have succeeded for years. But those hundreds of successes will be drowned out by the thousands of failures.&lt;/p&gt;

&lt;p&gt;Can we prevent this trend? I don't know. Perhaps we should start by giving up on the &quot;Agile&quot; brand name. It's never been clearly defined, which has allowed a lot of dysfunctional projects to call themselves &quot;Agile.&quot; &lt;/p&gt;

&lt;p&gt;Or maybe we need to stop selling Agile. Maybe we need to say, &quot;Agile is hard, and you can't master it by sitting through a two-day course.&quot; Maybe we need to be firm and say, &quot;Sorry, if you don't use agile engineering practices, if you don't have high-bandwidth communication, and if you don't include a strong customer voice, you're not going to succeed. Try something else instead.&quot; Scrum is popular because it's easy--and that's part of the problem.&lt;/p&gt;

&lt;p&gt;Whatever we do, we need to do it soon. Agile is failing all around us, and I'd hate for the failure of the fad to take down the truly useful ideas that we started with.&lt;/p&gt;

    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Blog</category>
  <guid isPermaLink="true">http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html</guid>
</item>
<item>
  <title>The Art of Agile Development: Iteration Planning</title>
  <link>http://jamesshore.com/Agile-Book/iteration_planning.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;15 Oct 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Agile-Book/"&gt;James Shore/Agile-Book&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;h3&gt;in 99 words&lt;/h3&gt;

&lt;blockquote class=&quot;ninetynine_words&quot;&gt;
	
	&lt;p&gt;Iterations are timeboxed to one week and follow a strict schedule:&lt;/p&gt;
	
	&lt;ol&gt;
		&lt;li&gt;Plan iteration&lt;/li&gt;
		&lt;li&gt;Commit to delivering stories&lt;/li&gt;
		&lt;li&gt;Develop stories&lt;/li&gt;
		&lt;li&gt;Prepare release&lt;/li&gt;
		&lt;li&gt;Demonstrate release&lt;/li&gt;
		&lt;li&gt;Hold retrospective&lt;/li&gt;
	&lt;/ol&gt;
	
	&lt;p&gt;To plan, measure the velocity of the previous iteration (total the estimates of &quot;done done&quot; stories). Select stories from the release plan that match the velocity. It shouldn't take long.&lt;/p&gt;
	
	&lt;p&gt;Assuming programmers are your constraint, they brainstorm and estimate engineering tasks. Ask the on-site customer about detailed requirements when necessary. Compare the task estimates to last iteration's to confirm the plan's feasability.&lt;/p&gt;
	
	&lt;p&gt;Post the stories and tasks prominently and mark them when complete.&lt;/p&gt;
	
&lt;/blockquote&gt;

&lt;h3&gt;New Information&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://jamesshore.com/Blog/Kanban-Systems.html&quot;&gt;Kanban Systems&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;Inside the Book&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Iteration Planning&lt;/li&gt;
	&lt;li&gt;The Iteration Timebox&lt;/li&gt;
	&lt;li&gt;The Iteration Schedule&lt;/li&gt;
	&lt;li&gt;How to Plan an Iteration&lt;/li&gt;
	&lt;li&gt;The Commitment Ceremony&lt;/li&gt;
	&lt;li&gt;After the Planning Session&lt;/li&gt;
	&lt;li&gt;Dealing with Long Planning Sessions&lt;/li&gt;
	&lt;li&gt;Tracking the Iteration&lt;/li&gt;
	&lt;li&gt;When Things Go Wrong&lt;/li&gt;
	&lt;li&gt;Partially Done Work&lt;/li&gt;
	&lt;li&gt;Emergency Requests&lt;/li&gt;
	&lt;li&gt;The Batman&lt;/li&gt;
	&lt;li&gt;Sidebar: Daily Iterations&lt;/li&gt;
	&lt;li&gt;Questions
		&lt;ul&gt;
			&lt;li&gt;How should we schedule time for fixing bugs?&lt;/li&gt;
			&lt;li&gt;If we don't estimate stories during iteration planning, when do we estimate stories?&lt;/li&gt;
			&lt;li&gt;All the available tasks depend on tasks that other pairs are working on right now. What should I work on?&lt;/li&gt;
			&lt;li&gt;What should the batman do when there are no outstanding support requests?&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Results&lt;/li&gt;
	&lt;li&gt;Contraindications&lt;/li&gt;
	&lt;li&gt;Alternatives
		&lt;ul&gt;
			&lt;li&gt;Iteration Length&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Further Reading&lt;/li&gt;
&lt;/ul&gt;

    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Agile-Book/iteration_planning.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Agile-Book</category>
  <guid isPermaLink="true">http://jamesshore.com/Agile-Book/iteration_planning.html</guid>
</item>
<item>
  <title>Kanban Systems</title>
  <link>http://jamesshore.com/Blog/Kanban-Systems.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;15 Oct 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p class=&quot;series&quot;&gt;Commentary on &lt;cite&gt;&lt;a href=&quot;http://jamesshore.com/Agile-Book/&quot;&gt;The Art of Agile Development's&lt;/a&gt;&lt;/cite&gt; &lt;a href=&quot;http://jamesshore.com/Agile-Book/iteration_planning.html&quot;&gt;Iteration Planning&lt;/a&gt; practice.&lt;/p&gt;

&lt;p&gt;In the last few years, &lt;em&gt;Kanban Systems&lt;/em&gt; have become an increasingly hot topic in the Agile community, thanks in part to the &lt;a href=&quot;http://www.poppendieck.com/&quot;&gt;Poppendiecks'&lt;/a&gt; wonderful introduction of Lean Manufacturing principles.  Three people who have been working on Kanban systems in the Agile space are &lt;a href=&quot;http://www.agilemanagement.net/Articles/Weblog/KanbaninAction.html&quot;&gt;David Anderson&lt;/a&gt;, &lt;a href=&quot;http://aaron.sanders.name/agile/naked-planning-explained-kanban-in-the-small&quot;&gt;Arlo Belshee&lt;/a&gt; (&lt;a href=&quot;http://jumpcut.com/view/?id=4898204ADB2311DCA8C6000423CF037A&quot;&gt;video&lt;/a&gt;), and &lt;a href=&quot;http://www.infoq.com/articles/hiranabe-lean-agile-kanban&quot;&gt;Kenji Hiranabe&lt;/a&gt;.&lt;/p&gt;
&lt;/p&gt;

&lt;p&gt;Despite the interest, I haven't seen any good overviews of Kanban systems.  In this essay, I'll try to fill the gap.  I'll describe what Kanban systems are, why they work, and when you should use them.&lt;/p&gt;


&lt;h3&gt;Kanban Described&lt;/h3&gt;

&lt;p&gt;Kanban systems are an approach to scheduling work.  Typical Agile projects use time-boxed iterations.  At the beginning of the iteration, the team meets and chooses stories from their backlog that can be done by the end of the iteration.  Over the course of the iteration, they develop those stories, and at the end of the iteration, they ship them.&lt;/p&gt;

&lt;p&gt;Kanban systems are different.  Instead of using time-boxed iterations, Kanban systems focus on a continuous flow of work.  The team takes a story from the backlog, develops it, and ships it as soon as it is done.  Then they take the next story from the backlog, develop it, and ship that story.  Work is shipped as soon as it's ready, and the team only works on one story at a time.&lt;/p&gt;

&lt;p&gt;That's the ideal, anyway.  Approaches differ.  My favorite approach is based on Arlo Belshee's, and that's what I'll describe here.  (Arlo, with his usual flair for names, calls it &quot;Naked Planning.&quot;)&lt;/p&gt;

&lt;div class=&quot;figure&quot;&gt;
	&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/kanban.jpg&quot; alt=&quot;Figure&quot; /&gt;
	&lt;p class=&quot;caption&quot;&gt;Sketch of a kanban planning board&lt;/p&gt;
&lt;/div&gt;


&lt;h4&gt;MMFs and the Backlog Queue&lt;/h4&gt;

&lt;p&gt;The primary work unit for the team is the &quot;minimum marketable feature,&quot; or MMF.  An MMF is the smallest feature that has value to the market.  As Arlo puts it, MMFs are &quot;the smallest features we can sell.&quot;&lt;/p&gt;

&lt;p&gt;The team maintains a backlog of MMFs in a queue.  This queue is strictly limited in size.  Arlo allows seven MMFs in his backlog; I usually prefer two or three.  A small backlog is good because it limits the amount of time an MMF can wait, which prevents them from getting stale.&lt;/p&gt;

&lt;p&gt;The team only works on the top MMF in the queue.  Stakeholders can add, remove, and move the other MMFs in the queue as much as they want, so long as they don't exceed the queue's size limit.&lt;/p&gt;


&lt;h4&gt;Work in Progress&lt;/h4&gt;

&lt;p&gt;The team works on the top MMF in the backlog queue until it's done.  They use &lt;a href=&quot;http://jamesshore.com/Agile-Book/the_xp_lifecycle.html&quot;&gt;simultaneous phases&lt;/a&gt;, so there's only three classifications: waiting, in progress, and done.  MMFs are either in production (&quot;done&quot;), at the top of the backlog queue (&quot;in progress&quot;), or waiting.

&lt;blockquote class=&quot;notetip&quot;&gt;The use of simultaneous phases is probably the biggest difference between Arlo's approach and David Anderson's.  David Anderson doesn't use simultaneous phases, so his MMF-equivalents have to travel through multiple stages: Engineering Ready Queue, Systems Analysis, Development, Build, Test, Release Ready, and In Production.  This means that his team works on multiple MMFs at a time, which leads to a need for complex configuration management, and I'm sure it lengthens his cycle time.&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;The team brainstorms and tracks the tasks required to complete the current MMF only.  As tasks are completed, they're removed from the board; as new tasks are discovered, they're added.  When all the tasks are done, either the MMF is done or the team has forgotten something.&lt;/p&gt;

&lt;p&gt;Once the MMF is done and the on-site customers have approved it, the software is released.  The MMF is taken off the queue and development starts on the next MMF.&lt;/p&gt;


&lt;h4&gt;Tracking and Estimating&lt;/h4&gt;

&lt;p&gt;There's no estimating of tasks or MMFs in this approach.  Instead, you use what Arlo calls &quot;Disney Line Planning&quot;: &quot;Your wait from this point will be XXX days.&quot;  In other words, you measure the typical time it takes to complete an MMF, from start to finish, and extrapolate to various points in the queue.  Since MMFs can vary in size, this is a rough projection, not a commitment.&lt;/p&gt;

&lt;p&gt;MMFs and tasks are tracked on index cards stuck to a large whiteboard.  You could use an electronic tool if you wished, but for a colocated team, I recommend the low-tech approach.  A big whiteboard is constantly visible and encourages discussion and collaboration in a way a computer can't.&lt;/p&gt;


&lt;h4&gt;Urgent Work&lt;/h4&gt;

&lt;p&gt;If there's an emergency, a support request, or some other urgent need, there's an empty slot on the board marked &quot;Urgent.&quot;  The team can put an MMF in that slot at any time without having to go through the regular backlog queue.  The team strives to finish urgent items quickly, and they try to keep the slot empty and available at all times.&lt;/p&gt;

&lt;p&gt;If the &quot;Urgent&quot; slot is full and &lt;em&gt;another&lt;/em&gt; urgent item appears, it has to be added to the backlog queue.&lt;/p&gt;


&lt;h4&gt;Bugs&lt;/h4&gt;

&lt;p&gt;As with other Agile approaches, the team is expected to fix bugs before the MMF is done.  If bugs are found afterwards, the fixes are scheduled with a new MMF.  If a bug needs to be fixed immediately, the team uses the &quot;Urgent&quot; slot.


&lt;h3&gt;Understanding Kanban&lt;/h3&gt;

&lt;p&gt;The name &quot;Kanban&quot; is really a misnomer.  &quot;Kanban&quot; means &quot;sign&quot; in Japanese.  In Toyota's Kanban system, when a station on the manufacturing line ran out of inventory, they would place a sign in an empty box and send it up the line to indicate that they needed more inventory.&lt;/p&gt;

&lt;p&gt;But despite the name, the sign is not the most important part of the Kanban system.  What Toyota was really trying to accomplish was &quot;one-piece flow.&quot;  One-piece flow means manufacturing items one at a time rather than in batches.  It creates flexibility, improves productivity, eliminates waste, increases throughput, cuts time to market, reduces the impact of error, and reduces the cost of inventory.  It's a Good Thing.&lt;/p&gt;

&lt;blockquote class=&quot;coach&quot;&gt;Kanban is a hack around the limitations of the physical world.&lt;/blockquote&gt;

&lt;p&gt;In manufacturing, one-piece flow is hard to achieve.  Sometimes efficency requires that you build up inventory, like when you truck items from one location to another.  Kanban is a hack around this limitation.  It's a way of controlling the amount of inventory in the system.  But the ideal is still one-piece flow: working on just one item at a time, with no inventory waiting.  Lean coaches will actually &lt;em&gt;remove&lt;/em&gt; Kanban cards to shake things up and spark further improvement to the system.  As Jeffrey Liker says in &lt;a href=&quot;http://www.amazon.com/Toyota-Way-Jeffrey-Liker/dp/0071392319&quot;&gt;&lt;cite&gt;The Toyota Way&lt;/cite&gt;&lt;/a&gt; (emphasis his):&lt;/p&gt;

&lt;blockquote&gt;
	&lt;p&gt;...TPS experts get very impatient and even irritated when they hear people rave and focus on &lt;em&gt;kanban&lt;/em&gt; as if it is the Toyota Production System.  &lt;em&gt;Kanban&lt;/em&gt; is a fascinating concept and it is fun to watch... When is the &lt;em&gt;kanban&lt;/em&gt; triggered? How are the quantities calculated? What do you do if a &lt;en&gt;kanban&lt;/en&gt; gets lost? But that is not the point... &lt;em&gt;The challenge is to develop a learning organization that will find ways to reduce the number of&lt;/em&gt; kanban &lt;em&gt;and thereby reduce and finally eliminate the inventory buffer&lt;/em&gt;... So &lt;em&gt;kanban&lt;/em&gt; is something you strive to get rid of, not to be proud of.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So when you hear &quot;Kanban System,&quot; don't think of little cards pulling work from upstream stations.  The ideal of the Kanban system is to eliminate inventory and achieve one-piece flow.  And in software, we can.  We aren't subject to the same physical limitations that a manufacturing plant is.&lt;/p&gt;

&lt;p&gt;That's why I prefer Arlo's approach to David Anderson's.  By using the Extreme Programming approach of simultaneous phases, everyone on the team works on one MMF and gets it to done, then they work on the next.  Work-in-progress inventory is reduced to the absolute, bare minimum: just one MMF.  (Beat that, Toyota!)  By doing this, we create flexibility, improve productivity, eliminate waste, increase throughput, and do all of the other wonderful things that one-piece flow gets you.


&lt;h3&gt;When to Use a Kanban System&lt;/h3&gt;

&lt;p&gt;I like the idea of Kanban systems, but I'm not sure they're appropriate for everyone.  This might just be unfamiliarity: I have a lot more experience with the old-fashioned iteration-based approach.&lt;/p&gt;

&lt;p&gt;The good thing about Kanban systems is that they really do a great job of eliminating waste.  They eliminate iteration planning, they react extremely well to changing needs, and they work well in chaotic environments.  The theory behind them is sound, and if you are a fan of Lean ideas, then using a Kanban system will seem like a no-brainer.&lt;/p&gt;

&lt;p&gt;On the flip-side, one of the biggest problems I see with agile teams is &quot;Agile thrashing.&quot;  In Agile thrashing, the team flails about, making progress on a lot of disparate ideas, but never really creating anything significant.  I worry that Kanban systems, with their limited backlog, will exacerbate this problem.&lt;/p&gt;

&lt;p&gt;I'm also concerned that Kanban will be too advanced for teams new to Agile planning.  One of the great things about iterations is that they're timeboxed.  At the end of the week (or month), time's up!  You're done.  Many teams struggle with this.  They have trouble getting to &lt;a href=&quot;http://jamesshore.com/Agile-Book/done_done.html&quot;&gt;&quot;done done&quot;&lt;/a&gt; and the timebox helps them recognize and eventually fix the problem.  Timeboxes also prevent scope creep and they also force important trade-off decisions to be made.  Overall, they're an excellent tool for improving the team's self-discipline, and Kanban systems don't seem like they'll provide those benefits.&lt;/p&gt;

&lt;p&gt;In the field, I've seen Kanban work best in chaotic environments where upcoming features don't have much in common.  I don't think it's a coincidence that the initial examples of Kanban come from those sorts of environments.  David Anderson's team was responding to change requests.  Arlo Belshee's team worked in a start-up, where frequent, entrepreneurial shifts in direction are commonplace.  One team I worked with used a Kanban system to respond to post-release change requests, but plans to switch back to iterations once they start planning their next release.&lt;/p&gt;

&lt;p&gt;So, should your team use iterations or a Kanban system?  Here's my criteria:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;p&gt;If your team is new to Agile planning, use iterations.  Be super-disciplined about getting everything &lt;a href=&quot;http://jamesshore.com/Agile-Book/done_done.html&quot;&gt;&quot;done done&quot;&lt;/a&gt; each iteration, using &lt;a href=&quot;http://jamesshore.com/Agile-Book/slack.html&quot;&gt;slack&lt;/a&gt;, and achieving a stable velocity so you can consistently make and meet iteration commitments.  This will force your team to learn important lessons about how Agile works.&lt;/p&gt;&lt;/li&gt;

	&lt;li&gt;&lt;p&gt;If you're producing a new product or a significant new release of an existing product, use iterations.  Create a &lt;a href=&quot;http://jamesshore.com/Agile-Book/vision.html&quot;&gt;vision&lt;/a&gt;, do &lt;a href=&quot;http://jamesshore.com/Agile-Book/release_planning.html&quot;&gt;release planning&lt;/a&gt;, get a good product manager, and make sure he's &lt;a href=&quot;http://jamesshore.com/Blog/The-Case-of-the-Missing-Visionary.html&quot;&gt;heavily involved&lt;/a&gt;.  Your goal is to create a compelling product with significant value, and you'll benefit from a gestalt view of the product and the &lt;a href=&quot;http://jamesshore.com/Blog/Use-Risk-Management-to-Make-Solid-Commitments.html&quot;&gt;predictability&lt;/a&gt; iterations provide.&lt;/p&gt;&lt;/li&gt;
	
	&lt;li&gt;&lt;p&gt;If you're in an environment where the feature backlog is constantly in flux or hard to predict, particularly if you can release the software on a whim, try the Kanban system.  Entrepreneurial environments, maintenance of mature products, and recent releases are all examples of environments with unpredictable backlogs.  The Kanban system will convert that chaos into a smooth, constant flow.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if none of these categories seem to fit, go ahead and give the Kanban approach a try.  You'll learn something new and hopefully have fun doing it.  There's a lot of potential here, and I don't think we've explored all of the options.  Try it!  Let us know how it works out.&lt;/p&gt;
	

    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Blog/Kanban-Systems.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Blog</category>
  <guid isPermaLink="true">http://jamesshore.com/Blog/Kanban-Systems.html</guid>
</item>
<item>
  <title>The Art of Agile Development: Risk Management</title>
  <link>http://jamesshore.com/Agile-Book/risk_management.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;10 Oct 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Agile-Book/"&gt;James Shore/Agile-Book&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;h3&gt;in 99 words&lt;/h3&gt;

&lt;blockquote class=&quot;ninetynine_words&quot;&gt;
	
	&lt;p&gt;Risk management allows you to make and meet commitments.&lt;/p&gt;
	
	&lt;p&gt;Manage common risks with risk multipliers. Manage project-specific risks by brainstorming disasters and their causes. Create mitigation and contingency plans for serious risks and define unambiguous triggers for taking action.&lt;/p&gt;
	
	&lt;p&gt;Combine risk multipliers with project-specific risks to project your chances of meeting commitments, and report those probabilties as &quot;commitments&quot; and &quot;stretch goals.&quot; Lower your risk and improve projections by including slack in every iteration and getting stories &quot;done done&quot;.&lt;/p&gt;
	
	&lt;p&gt;Remember that success is more than meeting commitments. Sometimes it's better to delay delivery and create a better product.&lt;/p&gt;
	
&lt;/blockquote&gt;

&lt;h3&gt;Examples&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://jamesshore.com/Blog/Use-Risk-Management-to-Make-Solid-Commitments.html&quot;&gt;Use Risk Management to Make Solid Commitments&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://jamesshore.com/Blog/Estimate-Inflation-A-Cautionary-Tale.html&quot;&gt;Estimate Inflation: A Cautionary Tale&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Inside the Book&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Risk Management&lt;/li&gt;
	&lt;li&gt;A Generic Risk-Management Plan&lt;/li&gt;
	&lt;li&gt;Project-Specific Risks&lt;/li&gt;
	&lt;li&gt;Sidebar: Monitoring Risks&lt;/li&gt;
	&lt;li&gt;How to Make a Release Commitment&lt;/li&gt;
	&lt;li&gt;Sidebar: Predicting Release Dates&lt;/li&gt;
	&lt;li&gt;Success over Schedule&lt;/li&gt;
	&lt;li&gt;When Your Commitment Isn't Good Enough&lt;/li&gt;
	&lt;li&gt;Questions
		&lt;ul&gt;
			&lt;li&gt;What should we tell our stakeholders about risks?&lt;/li&gt;
			&lt;li&gt;Your risk multipliers are too high. Can I use a lower multiplier?&lt;/li&gt;
			&lt;li&gt;We're using a scopeboxed plan, and our stakeholders want a single delivery date rather than a risk-based range. What should we do?&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Results&lt;/li&gt;
	&lt;li&gt;Contraindications&lt;/li&gt;
	&lt;li&gt;Alternatives&lt;/li&gt;
	&lt;li&gt;Further Reading&lt;/li&gt;
&lt;/ul&gt;

    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Agile-Book/risk_management.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Agile-Book</category>
  <guid isPermaLink="true">http://jamesshore.com/Agile-Book/risk_management.html</guid>
</item>
<item>
  <title>Estimate Inflation: A Cautionary Tale</title>
  <link>http://jamesshore.com/Blog/Estimate-Inflation-A-Cautionary-Tale.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;09 Oct 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p class=&quot;series&quot;&gt;Commentary on &lt;cite&gt;&lt;a href=&quot;http://jamesshore.com/Agile-Book/&quot;&gt;The Art of Agile Development's&lt;/a&gt;&lt;/cite&gt; &lt;a href=&quot;http://jamesshore.com/Agile-Book/risk_management.html&quot;&gt;Risk Management&lt;/a&gt; practice.&lt;/p&gt;

&lt;p&gt;I liked my example of &lt;a href=&quot;http://jamesshore.com/Blog/Use-Risk-Management-to-Make-Solid-Commitments.html&quot;&gt;using risk management&lt;/a&gt; to make commitments, so I made a longer example that was pulled directly from many projects I've seen.&lt;/p&gt;

&lt;p&gt;Unfortunately, I made it a little &lt;em&gt;too&lt;/em&gt; real.  There's scope creep, pushy stakeholders, and poor decisions.  (The poor decisions are the killer.)  It's a lousy example of risk management, but it's a great cautionary tale.  I present: What Not To Do.&lt;/p&gt;

&lt;p&gt;(If you haven't read my other essay yet, &lt;a href=&quot;http://jamesshore.com/Blog/Use-Risk-Management-to-Make-Solid-Commitments.html&quot;&gt;read it first&lt;/a&gt;.)

&lt;h3&gt;Prior to Iteration 1&lt;/h3&gt;

&lt;p&gt;The team has just been formed in order to work on an important new initiative for the company.  They're experienced Agile practitioners, but they've never worked together before, so they don't know what their velocity is going to be.  They start by playing &lt;a href=&quot;http://jamesshore.com/Agile-Book/the_planning_game.html&quot;&gt;the planning game&lt;/a&gt;, coming up with stories, and grouping them into &lt;a href=&quot;http://jamesshore.com/Agile-Book/release_planning.html&quot;&gt;minimum marketable features&lt;/a&gt;.&lt;/p&gt;

&lt;table class=&quot;list&quot;&gt;
	&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Cost&lt;/th&gt;&lt;th&gt;Total&lt;/th&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;41&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;C&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;54&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;D&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;56&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;E&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;62&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;F&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;88&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;G&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;105&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;H&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;114&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;I&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;125&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;J&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;130&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;They also settle on a release date.  It's 12 weeks from now.  They don't know their velocity, but they take a guess by dividing their man-days by pi &lt;span class=&quot;aside&quot;&gt;(8 devs &amp;times; 5 days per iteration &amp;divide; &amp;pi;)&lt;/span&gt;.  They get a velocity of 13.&lt;/p&gt;

&lt;p&gt;Because their velocity is a wild-ass guess, they use the &quot;risky&quot; column in the risk table.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 156 &lt;span class=&quot;aside&quot;&gt;(13 velocity &amp;times; 12 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 78 &lt;span class=&quot;aside&quot;&gt;(13 velocity &amp;times; 12 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 39 &lt;span class=&quot;aside&quot;&gt;(13 velocity &amp;times; 12 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&quot;We can commit to delivering feature A and we'll work on features B, C, D, and E as stretch goals.&quot;&lt;/p&gt;

&lt;p&gt;The on-site customers are quite unhappy with this result--they can't go to market unless features A, B, C, and D are done.  They pressure the team to increase the estimate.  Dividing by pi is ridiculous, they say; why should it take the team more than three days to do one day's worth of work?  They say that the velocity should be 32 &lt;span class=&quot;aside&quot;&gt;(8 devs &amp;times; 5 days per iteration &amp;times; 80% effectiveness)&lt;/span&gt;.  The team eventually splits the difference and predicts that the velocity will be 23.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 276 &lt;span class=&quot;aside&quot;&gt;(23 velocity &amp;times; 12 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 138 &lt;span class=&quot;aside&quot;&gt;(23 velocity &amp;times; 12 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 69 &lt;span class=&quot;aside&quot;&gt;(23 velocity &amp;times; 12 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&quot;We're not comfortable with the velocity estimate, but if it's accurate we can commit to delivering features A, B, C, D, and E.  The remaining features will be our stretch goal.&quot;&lt;/p&gt;

&lt;blockquote class=&quot;notetip&quot;&gt;&lt;p&gt;The best thing the team could have done was to delay making estimates; they have zero data and nothing to make commitments with.  But customers demand estimates.  It's a tricky situation, but I would have tried to get the customers to wait.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-0.jpg&quot; alt=&quot;Burn-up chart before iteration 1&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 1&lt;/h3&gt;

&lt;p&gt;The team makes makes a commitment to deliver 23 story points in the first iteration, and they do.  Everyone is impressed, although a few people are concerned that things didn't really get done.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 276 &lt;span class=&quot;aside&quot;&gt;(23 finished + 23 velocity &amp;times; 11 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 150 &lt;span class=&quot;aside&quot;&gt;(23 finished + 23 velocity &amp;times; 11 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 86 &lt;span class=&quot;aside&quot;&gt;(23 finished + 23 velocity &amp;times; 11 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-1.jpg&quot; alt=&quot;Burn-up chart after iteration 1&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 2&lt;/h3&gt;

&lt;p&gt;The next iteration is a disaster.  There's a bit of work to finish up from iteration 1, and those take longer than expected.  They keep finding bugs.  They don't even start half of the stories that they planned on for this iteration, and they only finish one.  That one story gives them a velocity of two.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 45 &lt;span class=&quot;aside&quot;&gt;(25 finished + 2 velocity &amp;times; 10 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 35 &lt;span class=&quot;aside&quot;&gt;(25 finished + 2 velocity &amp;times; 10 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 30 &lt;span class=&quot;aside&quot;&gt;(25 finished + 2 velocity &amp;times; 10 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few people argue that two is a ridiculous velocity.  They should at least count the stories that were partially done.  After some arguing about how much of those stories were done, and how much work they did on the stories from iteration 1, they decide on a velocity of 15.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 188 &lt;span class=&quot;aside&quot;&gt;(38 finished + 15 velocity &amp;times; 10 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 113 &lt;span class=&quot;aside&quot;&gt;(38 finished + 15 velocity &amp;times; 10 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 76 &lt;span class=&quot;aside&quot;&gt;(38 finished + 15 velocity &amp;times; 10 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote class=&quot;notetip&quot;&gt;&lt;p&gt;The team is falling into a classic trap here: they don't like the projections, so they're making up numbers that they do like.  This is leading them to overcommit and do shoddy work that has to be revisited.  It's gonna bite 'em in the ass... it always does.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-2.jpg&quot; alt=&quot;Burn-up chart after iteration 2&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 3&lt;/h3&gt;

&lt;p&gt;The problems continue.  The team signs up for 15 points of new stories, but they have to work on the partially-finished stories from iteration 2 as well.  They only finish one new story (worth three points), but they decide that their velocity was 17 because they finished all the stories from iteration 2 and partially finished all of the stories from iteration 3.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 208 &lt;span class=&quot;aside&quot;&gt;(55 finished + 17 velocity &amp;times; 9 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 132 &lt;span class=&quot;aside&quot;&gt;(55 finished + 17 velocity &amp;times; 9 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 93 &lt;span class=&quot;aside&quot;&gt;(55 finished + 17 velocity &amp;times; 9 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-3.jpg&quot; alt=&quot;Burn-up chart after iteration 3&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 4&lt;/h3&gt;

&lt;p&gt;The problems have finally become too significant for the team to ignore.  They don't get any new stories completely done this iteration because they spent all of their time finishing stories from previous iterations.  If they've really done as much as they say they have, they should be halfway done by now... but they haven't even finished feature A.&lt;/p&gt;

&lt;p&gt;The team goes back to the original stories and estimates and discovers that they've really only finished 28 points.  They've been double-counting stories because they've been spreading the work out over multiple iterations.  If they only count stories they start and completely finish in a single iteration, their velocity over the last three iterations has been 2, 3, and 0.&lt;/p&gt;

&lt;p&gt;It's an &quot;oh shit&quot; moment for everyone.  They decide to quit gaming the system.  They reset their velocity to 2 and make a renewed commitment to only signing up for what they can get &quot;done done&quot; every iteration.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 44 &lt;span class=&quot;aside&quot;&gt;(28 finished + 2 velocity &amp;times; 8 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 36 &lt;span class=&quot;aside&quot;&gt;(28 finished + 2 velocity &amp;times; 8 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 32 &lt;span class=&quot;aside&quot;&gt;(28 finished + 2 velocity &amp;times; 8 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The numbers look terrible, and it tests the team's newly-found resolve.  They decide to warn stakeholders that something is going wrong, but not share the new numbers until they've had a few more iterations.  &quot;We've discovered a problem with our estimating approach and we probably won't be able to complete as many features as we thought,&quot; they say.  &quot;We'll have more information for you in two weeks, at the end of iteration 6.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-4.jpg&quot; alt=&quot;Burn-up chart after iteration 4&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 5&lt;/h3&gt;

&lt;p&gt;The team holds true to their promise not to do anything that they can't get to &lt;a href=&quot;http://jamesshore.com/Agile-Book/done_done.html&quot;&gt;&quot;done done&quot;&lt;/a&gt;.  They make sure all the existing stories are done and do some new stories, too.  They finish 8 points of new stories.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 92 &lt;span class=&quot;aside&quot;&gt;(36 finished + 8 velocity &amp;times; 7 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 64 &lt;span class=&quot;aside&quot;&gt;(36 finished + 8 velocity &amp;times; 7 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 50 &lt;span class=&quot;aside&quot;&gt;(36 finished + 8 velocity &amp;times; 7 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;figure&quot;&gt;
	&lt;table class=&quot;list&quot;&gt;
		&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Cost&lt;/th&gt;&lt;th&gt;Total&lt;/th&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;52&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;C&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;65&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;D&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;67&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;E&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;73&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;F&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;99&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;G&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;116&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;H&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;125&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;I&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;136&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;J&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;141&lt;/td&gt;&lt;/tr&gt;
	&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;The customers are busy, too.  They take a hard look at what's been done and realize that feature A needs some more polish.  They add 11 more points of stories to feature A.&lt;/p&gt;

&lt;p&gt;They look at the results and say, &quot;With the data we have right now, we can commit to delivering feature A and we can work on features B and C as a stretch goal.&quot;  The on-site customers are worried--they need features A, B, C, and D to go to market.  They reset their plan to include just features A, B, C, and D and start thinking about what to tell management next iteration.&lt;/p&gt;


&lt;h3&gt;Iteration 6&lt;/h3&gt;

&lt;p&gt;Great news!  The team finished feature A and has started on feature B.  The customers thought about adding a few more stories to feature A, but decided that there's too much risk of not going to market.  They're constraining scope until they know more.&lt;/p&gt;

&lt;p&gt;The other good news is that the team has finally cleared out the partially-done work.  They were able to spend the entire iteration focused on this iteration's stories, and as a consequence, their velocity went up!  Their new velocity is 10.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 106 &lt;span class=&quot;aside&quot;&gt;(46 finished + 10 velocity &amp;times; 6 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 76 &lt;span class=&quot;aside&quot;&gt;(46 finished + 10 velocity &amp;times; 6 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 61 &lt;span class=&quot;aside&quot;&gt;(46 finished + 10 velocity &amp;times; 6 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;figure&quot;&gt;
	&lt;table class=&quot;list&quot;&gt;
		&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Cost&lt;/th&gt;&lt;th&gt;Total&lt;/th&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;Done!&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;54&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;C&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;71&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;D&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;75&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;E&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;81&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;F&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;107&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;G&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;124&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;H&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;133&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;I&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;144&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;J&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;149&lt;/td&gt;&lt;/tr&gt;
	&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;It's not all good news, though.  The customers look at features B, C, and D and realize that they're going to have to make some changes.  They do their best to keep the changes small, but the scope still increases.&lt;/p&gt;

&lt;p&gt;The team has an uncomfortable conversation with their stakeholders.  &quot;We made some mistakes in the beginning--we were too aggressive in our estimates, and that caused us to overlook some serious problems.  We've corrected the situation, but we're still recovering.  The good news is that we've finished feature A and we're committed to delivering feature B.  We're working on features C and D as a stretch goal for the end of iteration 12.  Because we can't go to market without C and D, we might have to ship later than we wanted.  We'll keep you informed, and we won't make the same mistake again.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-6.jpg&quot; alt=&quot;Burn-up chart after iteration 6&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 7&lt;/h3&gt;

&lt;p&gt;The team continues to make good progress, completing 10 more points of stories, including feature B!  They're also cleaning up some of the design flaws that the first few iterations introduced into the codebase.  The programmers are starting to feel like things are under control.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 106 &lt;span class=&quot;aside&quot;&gt;(56 finished + 10 velocity &amp;times; 5 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 81 &lt;span class=&quot;aside&quot;&gt;(56 finished + 10 velocity &amp;times; 5 iterations &amp;divide; 2 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 69 &lt;span class=&quot;aside&quot;&gt;(56 finished + 10 velocity &amp;times; 5 iterations &amp;divide; 4 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&quot;We've finished feature B and we're on track to delivering features C and D.  If next week goes well, we may be able to eliminate the risk of shipping late.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-7.jpg&quot; alt=&quot;Burn-up chart after iteration 7&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 8&lt;/h3&gt;

&lt;p&gt;Another great iteration.  The team's velocity actually goes up, to 12.  They've had four solid iterations and the programmers are feeling confident in their ability to get things &quot;done done&quot;.  The team decides that they're ready to move to the &quot;rigorous&quot; column of the risk table.  This does wonderful things for their projections.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 116 &lt;span class=&quot;aside&quot;&gt;(68 finished + 12 velocity &amp;times; 4 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 102 &lt;span class=&quot;aside&quot;&gt;(68 finished + 12 velocity &amp;times; 4 iterations &amp;divide; 1.4 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 95 &lt;span class=&quot;aside&quot;&gt;(68 finished + 12 velocity &amp;times; 4 iterations &amp;divide; 1.8 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&quot;We're happy to report that we can now commit to delivering features C and D on time.  We're committing to shipping as scheduled.  We're also ready to commit to shipping feature E and we'll work on feature F as a stretch goal.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-8.jpg&quot; alt=&quot;Burn-up chart after iteration 8&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 9&lt;/h3&gt;

&lt;div class=&quot;figure&quot;&gt;
	&lt;table class=&quot;list&quot;&gt;
		&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Cost&lt;/th&gt;&lt;th&gt;Total&lt;/th&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;Done!&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;54&lt;/td&gt;&lt;td&gt;Done!&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;C&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;71&lt;/td&gt;&lt;td&gt;Done!&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;D&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;75&lt;/td&gt;&lt;td&gt;Done!&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;E&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;81&lt;/td&gt;&lt;td&gt;Done!&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;K&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;94&lt;/td&gt;&lt;td&gt;(new)&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;Polish&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;109&lt;/td&gt;&lt;td&gt;(new)&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;F&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;135&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;G&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;152&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;H&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;161&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;I&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;172&lt;/td&gt;&lt;/tr&gt;
		&lt;tr&gt;&lt;td&gt;J&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;177&lt;/td&gt;&lt;/tr&gt;
	&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;The team's velocity continues to go up, to 14.  They finish features C, D, and E.  The on-site customers have been demonstrating the product to users, though, and they discover that they're missing some features that end users need.  They also identify some further polish to features A, B, C, D, and E that's necessary to wow the market.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 124 &lt;span class=&quot;aside&quot;&gt;(82 finished + 14 velocity &amp;times; 3 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 112 &lt;span class=&quot;aside&quot;&gt;(82 finished + 14 velocity &amp;times; 3 iterations &amp;divide; 1.4 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 105 &lt;span class=&quot;aside&quot;&gt;(82 finished + 14 velocity &amp;times; 3 iterations &amp;divide; 1.8 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&quot;We've finished features C, D, and E.  They'll be in the release next month.  Our market research has also revealed a new feature, feature K, that's important for this release, so we're committing to putting that in.  We've also identified some additional polish and tweaks that will make our users happier, so we're working on those as a stretch goal.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-9.jpg&quot; alt=&quot;Burn-up chart after iteration 9&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 10&lt;/h3&gt;

&lt;p&gt;The team is on fire!  Their velocity goes up again, to 16.  They finish feature K and start working on the polish.  The customers go out on a limb and add feature F back into the schedule, although it's not supported by the projections... but they mitigate the risk by looking at how they can cut scope if they need to.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 130 &lt;span class=&quot;aside&quot;&gt;(98 finished + 16 velocity &amp;times; 2 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 121 &lt;span class=&quot;aside&quot;&gt;(98 finished + 16 velocity &amp;times; 2 iterations &amp;divide; 1.4 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 116 &lt;span class=&quot;aside&quot;&gt;(98 finished + 16 velocity &amp;times; 2 iterations &amp;divide; 1.8 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&quot;We've finished feature K and we're committed to finishing the additional release polish.  It looks like we'll have some extra time, so we're going to put feature F in as a stretch goal--we might have to cut parts of it, but we know what to cut if we do.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-10.jpg&quot; alt=&quot;Burn-up chart after iteration 10&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 11&lt;/h3&gt;

&lt;p&gt;The team's velocity is 16 again and they finish the release polish.  They're doing a great job of keeping the code clean, including slack in each iteration, and getting everything to &quot;done done,&quot; so they can sustain that velocity indefinitely.  The customers are a little disappointed that the velocity didn't keep going up, but they cut scope on feature F as planned.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 130 &lt;span class=&quot;aside&quot;&gt;(114 finished + 16 velocity &amp;times; 2 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 125 &lt;span class=&quot;aside&quot;&gt;(114 finished + 16 velocity &amp;times; 2 iterations &amp;divide; 1.4 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 123 &lt;span class=&quot;aside&quot;&gt;(114 finished + 16 velocity &amp;times; 2 iterations &amp;divide; 1.8 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&quot;Everything's on track.  We're going to have a great release next week.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-11.jpg&quot; alt=&quot;Burn-up chart after iteration 11&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Iteration 12&lt;/h3&gt;

&lt;p&gt;Another good iteration.  The team finishes 16 points of work and the customers adjust scope to match.  They perform their release (using their &lt;a href=&quot;http://jamesshore.com/Agile-Book/ten_minute_build.html&quot;&gt;automated script&lt;/a&gt;, of course) and spend the following week documenting their work, conducting a retrospective, learning from their experience, and having a well-earned party.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Extended-12.jpg&quot; alt=&quot;Burn-up chart after iteration 12&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Analysis&lt;/h3&gt;

&lt;p&gt;This was a made-up example, but it's based on the real experiences of teams I've worked with.  I often see teams that are struggling because they overcommit each iteration.  As a result, they have trouble meeting their commitments and--ironically--have much lower performance than they should.&lt;/p&gt;

&lt;p&gt;In the end, this team delivered 130 points of work, which was (purely coincidentally) the same amount they originally planned.  But they only did that well because they backed off of their aggressive, made-up estimates and let the team do their work properly.  You can see in iterations 2-4 how badly the team's real velocity dropped off.  Once the poor iteration planning was fixed, the team's velocity  improved, and steadily rose to its optimum value of 16&lt;sup&gt;*&lt;/sup&gt;... a value they could have reached much earlier if they hadn't wasted so much effort on trying to meet unrealistic commitments.&lt;/p&gt;

&lt;p class=&quot;postscript&quot;&gt;&lt;sup&gt;*&lt;/sup&gt;Optimum for this team, that is.  Every team's optimum velocity is different.&lt;/p&gt;

&lt;p&gt;When I work with teams like this one, the first thing I do is help them learn how to deliver on time every iteration.  This almost always involves reducing the team's velocity to what they can actually accomplish.  This takes the pressure off the team and allows them to do the important clean-up work that they've been postponing.  The result?  Their velocity steadily improves as they clear out the damage.&lt;/p&gt;

&lt;p&gt;The team in this example was lucky in that they discovered and fixed the problem themselves.  Most teams have trouble taking the drastic action they need.  As a result, their velocity never stabilizes.  They struggle to make accurate predictions and the constant pressure causes the team to make dumb mistakes.  They don't deliver on their commitments.&lt;/p&gt;

&lt;p&gt;You can avoid this mistake by only committing to what you actually deliver.  Only count stories that are totally, 100%, &lt;a href=&quot;http://jamesshore.com/Agile-Book/done_done.html&quot;&gt;&quot;done done&quot;&lt;/a&gt;.  You'll be happier, you'll get more done, and you'll be able to make meaningful projections and commitments.&lt;/p&gt;

    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Blog/Estimate-Inflation-A-Cautionary-Tale.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Blog</category>
  <guid isPermaLink="true">http://jamesshore.com/Blog/Estimate-Inflation-A-Cautionary-Tale.html</guid>
</item>
<item>
  <title>Use Risk Management to Make Solid Commitments</title>
  <link>http://jamesshore.com/Blog/Use-Risk-Management-to-Make-Solid-Commitments.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;08 Oct 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p class=&quot;series&quot;&gt;Commentary on &lt;cite&gt;&lt;a href=&quot;http://jamesshore.com/Agile-Book/&quot;&gt;The Art of Agile Development's&lt;/a&gt;&lt;/cite&gt; &lt;a href=&quot;http://jamesshore.com/Agile-Book/risk_management.html&quot;&gt;Risk Management&lt;/a&gt; practice.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Making&lt;/em&gt; and &lt;em&gt;meeting&lt;/em&gt; commitments.  Over and over, when I ask executives what they want from their teams, I've found this to be one of the top priorities.&lt;/p&gt;

&lt;p&gt;That's why the Risk Management practice in &lt;cite&gt;&lt;a href=&quot;http://jamesshore.com/Agile-Book/&quot;&gt;The Art of Agile Development&lt;/a&gt;&lt;/cite&gt; is one of my favorites.  It's all about being able to make and meet commitments, and we have three great tools in there: risk multipliers, risk-adjusted burn-up charts, and project-specific risks.  Today, I'll show you how to use the first two to make solid commitments to your executives.&lt;/p&gt;

&lt;h3&gt;Risk Multipliers&lt;/h3&gt;

&lt;p&gt;Risk multipliers account for common risks, such as turnover, changing requirements, work disruption, and so forth.  These risk multipliers allow you to set a date, estimate how many story points of work you'll get done, and be right.  It's a simpler version of the risk curves you'll see in good books on estimating and project management.&lt;/p&gt;

&lt;table class=&quot;list&quot;&gt;
	&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th colspan=&quot;2&quot; style=&quot;text-align: center&quot;&gt;Risk Multiplier&lt;/th&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;th&gt;Chance&lt;/th&gt;&lt;th&gt;Rigorous Process&lt;/th&gt;&lt;th&gt;Risky Process&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;10%&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Ignore--almost impossible&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;50%&lt;/td&gt;&lt;td&gt;1.4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Stretch goal--50/50 chance&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;90%&lt;/td&gt;&lt;td&gt;1.8&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Commitment--virtually certain&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p class=&quot;aside&quot;&gt;(As we explain in the book, these multipliers are estimates gleaned from DeMarco &amp; Lister's RISKOLOGY simulator and Todd Little's detailed analysis of hundreds of projects.  I'm guessing somewhat at how accurately they apply to XP.  The most accurate approach is to calculate your own risk multipliers from past project history, but most companies don't track that data.)&lt;/p&gt;

&lt;p&gt;The way this works is that you take your iteration velocity and extrapolate out to your delivery date.  That's the best estimate of how many story points you'll finish under ideal circumstances.  So if your velocity is 14 and you have ten iterations left, you predict that you'll finish 140 more story points before you release.&lt;/p&gt;

&lt;p&gt;Then you apply the risk multipliers according to the type of process you're using.  If you have a solid velocity and get everything &lt;a href=&quot;http://jamesshore.com/Agile-Book/done_done.html&quot;&gt;&quot;done done&quot;&lt;/a&gt; every iteration, you get to use the &quot;rigorous&quot; column.  Otherwise, you use the &quot;risky&quot; column.&lt;/p&gt;

&lt;p&gt;To continue the example, let's say your team has a rigorous approach.  To make a commitment, you apply the multipliers, like this:&lt;/p&gt;

&lt;table class=&quot;list&quot;&gt;
	&lt;tr&gt;&lt;th&gt;Chance&lt;/th&gt;&lt;th&gt;Story Points Finished&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;10%&lt;/td&gt;&lt;td&gt;140 &lt;span class=&quot;aside&quot;&gt;(140 &amp;divide; 1)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Ignore--almost impossible&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;50%&lt;/td&gt;&lt;td&gt;100 &lt;span class=&quot;aside&quot;&gt;(140 &amp;divide; 1.4)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Stretch goal--50/50 chance&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;90%&lt;/td&gt;&lt;td&gt;78 &lt;span class=&quot;aside&quot;&gt;(140 &amp;divide; 1.8)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Commitment--virtually certain&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;This allows you to make commitments to stakeholders and executives.  &quot;We are &lt;em&gt;virtually certain&lt;/em&gt; to finish 78 more points by our release date, so we're &lt;em&gt;committing&lt;/em&gt; to delivering features A, B, and C.  We have a &lt;em&gt;50-50 chance&lt;/em&gt; of completing 100 points, so we're planning on features X, Y, and Z as a &lt;em&gt;stretch goal&lt;/em&gt;.&quot;&lt;/p&gt;

&lt;h3&gt;The Risk-Adjusted Burn-Up Chart&lt;/h3&gt;

&lt;p&gt;The risk-adjusted burn-up chart allows you to track your commitments alongside your progress.  It's based on Phil Goodwin's burn-up chart, which is a variant of Scrum's burn-down chart.  Here's how it works.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/risk-adjusted-burn-up.jpg&quot; width=&quot;50%&quot; height=&quot;50%&quot;&gt;&lt;/p&gt;
	
&lt;p&gt;Start by drawing a chart with iterations on the bottom and story points on the left.  Mark the release date with a dashed line, as shown.&lt;/p&gt;

&lt;p&gt;At the start of every iteration (typically, every week), plot two points on the chart.  At the bottom of the chart, plot the number of story points that are &quot;done done&quot;.  At the top of the chart, plot the total story points--&quot;done done&quot; plus the number remaining in the plan.  This gives you a standard burn-up chart.&lt;/p&gt;

&lt;p&gt;Now add the risk numbers.  Calculate your probability of completing various numbers of story points using the risk multiplier approach described in the previous section, and then plot those numbers on a vertical line.  You can either draw the vertical line on the release date and change it every week (as shown in the figure above), or you can draw it on the current iteration (as I'll show in a moment).&lt;/p&gt;

&lt;p&gt;The result is an information-rich chart that shows you three trends:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Completion progress;&lt;/li&gt;
	&lt;li&gt;Changes to the plan; and&lt;/li&gt;
	&lt;li&gt;What you can commit to.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Example&lt;/h3&gt;

&lt;p&gt;Here's an extended example of these ideas in practice.  Imagine a team of six programmers.  They've been working together for a while now and have a solid velocity of 12.  They start a new project that's due in six weeks.  After playing &lt;a href=&quot;http://jamesshore.com/Agile-Book/the_planning_game.html&quot;&gt;the planning game&lt;/a&gt;, they have a prioritized list of &lt;a href=&quot;http://jamesshore.com/Agile-Book/release_planning.html&quot;&gt;minimum marketable features&lt;/a&gt; that looks like this:&lt;/p&gt;

&lt;table class=&quot;list&quot;&gt;
	&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Cost&lt;/th&gt;&lt;th&gt;Total&lt;/th&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;41&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;C&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;54&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;D&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;56&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;E&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;62&lt;/td&gt;&lt;/tr&gt;
	&lt;tr&gt;&lt;td&gt;F&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;88&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;Based on their past velocity of 12 and their history of getting iterations &quot;done done,&quot; the team calculates the following estimates:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 72 &lt;span class=&quot;aside&quot;&gt;(12 velocity &amp;times; 6 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 51 &lt;span class=&quot;aside&quot;&gt;(12 velocity &amp;times; 6 iterations &amp;divide; 1.4 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 40 &lt;span class=&quot;aside&quot;&gt;(12 velocity &amp;times; 6 iterations &amp;divide; 1.8 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They report this to their stakeholders by saying, &quot;We &lt;em&gt;commit&lt;/em&gt; to delivering features A and B, and we'll work on feature C as a &lt;em&gt;stretch goal&lt;/em&gt;.  Features D and E are unlikely to make it, and we almost certainly won't have time to do feature F.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Iteration-0.jpg&quot; alt=&quot;Burn-up chart before iteration 1&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;caption&quot;&gt;(Sorry about the image quality. Also, the 10% and 90% should be reversed.)&lt;/p&gt;

&lt;h4&gt;Iteration 1&lt;/h4&gt;

&lt;p&gt;The team signs up for 12 points and the iteration goes smoothly.  They deliver 12 points.  The customers leave the plan unchanged in hopes that the team's predictions are wrong.  The team recalculates their risk-based projections:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 72 &lt;span class=&quot;aside&quot;&gt;(12 finished + 12 velocity &amp;times; 5 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 55 &lt;span class=&quot;aside&quot;&gt;(12 finished + 12 velocity &amp;times; 5 iterations &amp;divide; 1.4 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 45 &lt;span class=&quot;aside&quot;&gt;(12 finished + 12 velocity &amp;times; 5 iterations &amp;divide; 1.8 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Iteration-1.jpg&quot; alt=&quot;Burn-up chart after iteration 1&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;caption&quot;&gt;(The 10% and 90% should be reversed in this picture.)&lt;/p&gt;

&lt;h4&gt;Iteration 2&lt;/h4&gt;

&lt;p&gt;It's a national holiday and most of the team is out for a few days this week.  The team uses all of their &lt;a href=&quot;http://jamesshore.com/Agile-Book/slack.html&quot;&gt;slack&lt;/a&gt; but is unable to get everything done.  They deliver 7 points, but they keep their projected velocity at 12, knowing that the holiday was an unusual event.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 67 &lt;span class=&quot;aside&quot;&gt;(19 finished + 12 velocity &amp;times; 4 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 53 &lt;span class=&quot;aside&quot;&gt;(19 finished + 12 velocity &amp;times; 4 iterations &amp;divide; 1.4 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 46 &lt;span class=&quot;aside&quot;&gt;(19 finished + 12 velocity &amp;times; 4 iterations &amp;divide; 1.8 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They report the news: &quot;We are still committed to delivering features A and B, and feature C remains a reasonable stretch goal.  Features E and F will definitely not be done and we're removing them from the plan.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Iteration-2.jpg&quot; alt=&quot;Burn-up chart after iteration 2&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;caption&quot;&gt;(The 10% and 90% are correct in this picture and all the remaining ones.)&lt;/p&gt;

&lt;h4&gt;Iteration 3 &amp; 4&lt;/h4&gt;

&lt;p&gt;Iterations three and four proceed without incident and the team delivers all 12 points each time.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 67 &lt;span class=&quot;aside&quot;&gt;(43 finished + 12 velocity &amp;times; 2 iterations &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 60 &lt;span class=&quot;aside&quot;&gt;(43 finished + 12 velocity &amp;times; 2 iterations &amp;divide; 1.4 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 56 &lt;span class=&quot;aside&quot;&gt;(43 finished + 12 velocity &amp;times; 2 iterations &amp;divide; 1.8 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The team reports, &quot;Great news!  The work's been proceeding smoothly and we've finished features A and B.  We're now working on features C and D, and we're adding feature E back in as a further stretch goal.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Iteration-4.jpg&quot; alt=&quot;Burn-up chart after iteration 4&quot; /&gt;&lt;/p&gt;

&lt;h4&gt;Iteration 5&lt;/h4&gt;

&lt;p&gt;Disaster strikes!  A critical database crashes and everyone is pulled to work on it.  The team only delivers 6 points this iteration.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;10%: 61 &lt;span class=&quot;aside&quot;&gt;(49 finished + 12 velocity &amp;times; 1 iteration &amp;divide; 1 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;50%: 56 &lt;span class=&quot;aside&quot;&gt;(49 finished + 12 velocity &amp;times; 1 iteration &amp;divide; 1.4 risk)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;90%: 55 &lt;span class=&quot;aside&quot;&gt;(49 finished + 12 velocity &amp;times; 1 iteration &amp;divide; 1.8 risk)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The team's report: &quot;Due to the unexpected problems this week, we're not going to get to feature E after all, and any problems on the scale of this week's will mean canceling feature D, too.  However, we're committed to delivering feature C and we're going to do our best to get feature D done for you.&quot;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Iteration-5.jpg&quot; alt=&quot;Burn-up chart after iteration 5&quot; /&gt;&lt;/p&gt;

&lt;h4&gt;Iteration 6&lt;/h4&gt;

&lt;p&gt;No problems arise and the team gets all 12 points done, for a grand total of 61 points completed.  They finish features C and D and spend the extra points adding polish to existing features and documenting their work.  Rather than being upset that the team didn't get the whole plan done, stakeholders are happy that their expectations were exceeded.  Everyone gets a big raise and they all live happily ever after.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://jamesshore.com/images/art-of-agile/burn-up-example/Iteration-6.jpg&quot; alt=&quot;Burn-up chart after iteration 6&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The end.&lt;/p&gt;

&lt;p&gt;PS: One of the cool things about this technique is that it automatically accounts for Steve McConnell's famous &lt;a href=&quot;http://www.construx.com/Page.aspx?hid=1648&quot;&gt;cone of uncertainty&lt;/a&gt;.  Look at the risk bars over time and you'll see how they become smaller and more certain as time progresses, just as McConnell predicts.

&lt;h3&gt;Further Reading&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://jamesshore.com/Blog/Estimate-Inflation-A-Cautionary-Tale.html&quot;&gt;Estimate Inflation: A Cautionary Tale&lt;/a&gt;.  A follow-up example that shows what not to do.&lt;/p&gt;

    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Blog/Use-Risk-Management-to-Make-Solid-Commitments.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Blog</category>
  <guid isPermaLink="true">http://jamesshore.com/Blog/Use-Risk-Management-to-Make-Solid-Commitments.html</guid>
</item>
<item>
  <title>The Art of Agile Development: The Planning Game</title>
  <link>http://jamesshore.com/Agile-Book/the_planning_game.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;01 Oct 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Agile-Book/"&gt;James Shore/Agile-Book&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;h3&gt;in 99 words&lt;/h3&gt;

&lt;blockquote class=&quot;ninetynine_words&quot;&gt;

&lt;p&gt;Customers have the most information about &lt;em&gt;value&lt;/em&gt;: what best serves the organization. Programmers have the most information about &lt;em&gt;cost&lt;/em&gt;: what it takes to implement and maintain those features. And remember, every decision to &lt;em&gt;do&lt;/em&gt; something is a decision to &lt;em&gt;not do&lt;/em&gt; something else.&lt;/p&gt;

&lt;p&gt;The planning game brings together customers and programmers so that they may maximize value while minimizing costs. Anybody may create stories. Programmers estimate the stories, and customers prioritize them. Programmers and customers may question each others' decisions, but each group has final say over its area of expertise.&lt;/p&gt;

&lt;p&gt;The end result is a single prioritized list.&lt;/p&gt;
	
&lt;/blockquote&gt;

&lt;h3&gt;Commentary&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://jamesshore.com/Blog/Coulda-Shoulda-Woulda.html&quot;&gt;Coulda, Shoulda, Woulda&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Inside the Book&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;The Planning Game&lt;/li&gt;
	&lt;li&gt;How to Play
		&lt;ul&gt;
			&lt;li&gt;Overcoming disagreements&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Sidebar: On Disappointment&lt;/li&gt;
	&lt;li&gt;How to Win&lt;/li&gt;
	&lt;li&gt;Questions
		&lt;ul&gt;
			&lt;li&gt;Won't programmers pad their estimates or slack off if they have this much control over the plan?&lt;/li&gt;
			&lt;li&gt;Won't customers neglect important technical issues if they have this much control over the plan?&lt;/li&gt;
			&lt;li&gt;Our product manager doesn't want to prioritize. He says everything is important. What can we do?&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Results&lt;/li&gt;
	&lt;li&gt;Contraindications&lt;/li&gt;
	&lt;li&gt;Alternatives&lt;/li&gt;
&lt;/ul&gt;

    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Agile-Book/the_planning_game.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Agile-Book</category>
  <guid isPermaLink="true">http://jamesshore.com/Agile-Book/the_planning_game.html</guid>
</item>
<item>
  <title>Coulda, Shoulda, Woulda</title>
  <link>http://jamesshore.com/Blog/Coulda-Shoulda-Woulda.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;01 Oct 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Blog/"&gt;James Shore/Blog&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    
    
      
&lt;p class=&quot;series&quot;&gt;Commentary on &lt;cite&gt;&lt;a href=&quot;http://jamesshore.com/Agile-Book/&quot;&gt;The Art of Agile Development's&lt;/a&gt;&lt;/cite&gt; &lt;a href=&quot;http://jamesshore.com/Agile-Book/the_planning_game.html&quot;&gt;The Planning Game&lt;/a&gt; practice.&lt;/p&gt;

&lt;p&gt;Prior to The Planning Game, the most popular approach to prioritization went by the name &quot;MoSCoW&quot;--for &quot;Must Have,&quot; &quot;Should Have,&quot; &quot;Could Have,&quot; and &quot;Won't Have.&quot;&lt;/p&gt;

&lt;p&gt;Actually, that's not quite true.  The &lt;em&gt;most&lt;/em&gt; popular approach, then and now, was to say, &quot;Everything's important.  Do it all.&quot;  Which obviously doesn't yield great results.&lt;/p&gt;

&lt;p&gt;And that's problem with MoSCoW, too.  People fear that MoSCoW actually stands for &quot;maybe,&quot; &quot;next time,&quot; &quot;never,&quot; and &quot;never ever.&quot;  So the savvy stakeholders mark their stuff as &quot;must have.&quot;  We end up with the &quot;do it all&quot; approach, except that now we get to spend our time arguing over how many items can go in each category and whether something is really a &quot;must&quot; or not.  Bleh.  No thanks.&lt;/p&gt;

&lt;p&gt;That's part of the genius of the planning game.  In the planning game, you don't argue about the priority of any individual story.  Everything is assumed to be important.  There's just one overriding question:&lt;/p&gt;

&lt;blockquote&gt;How does this story compare in importance to the other stories we have?&lt;/blockquote&gt;

&lt;p&gt;It's a surprisingly useful distinction.  You see, if you use something like MoSCoW, in order to prioritize &lt;em&gt;your&lt;/em&gt; story ahead of &lt;em&gt;Fred's&lt;/em&gt; story, you have to say, &quot;Well, Fred's story is nice, but it's clearly not a &lt;strong&gt;must&lt;/strong&gt; like mine is.&quot;  And Fred, being human, gets all defensive and has to protect his sacred honor by explaining how his story really is important or he wouldn't have bothered wasting everyone's time with it.&lt;/p&gt;

&lt;p&gt;In the planning game, there's only one list of stories, and the stuff at the top of the list gets done first.  No ties, no &quot;do them both at the same time&quot;--one list.  And so you end up with conversations like this: &quot;Fred's story is clearly very important, and much more important than these stories here.  But I think mine should be done first for reasons X, Y, and Z.&quot;  And now you're talking about how each story compares against the others rather than dealing with abstract categories.&lt;/p&gt;

&lt;p&gt;It's amazing how well this works. People have conversations and solve problems together rather than arguing about poorly-defined categories.  It achieves results surprisingly quickly.&lt;/p&gt;

&lt;p&gt;There are some preconditions to making this work. When I've seen the planning game fail, it's been for two reasons:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;p&gt;&lt;strong&gt;Failure #1: No decision-making authority.&lt;/strong&gt;  In other words, the people prioritizing are not the real decision makers. This often happens when the team is unwilling or unable to get stakeholders in the room. It kills prioritization discussions because nobody has the authority to compromise. Pissing matches result.&lt;/p&gt;&lt;/li&gt;
	
	&lt;li&gt;&lt;p&gt;&lt;strong&gt;Failure #2: Relying on electronic planning tools.&lt;/strong&gt;  Electronic planning tools have their place--they're useful for coordinating distributed teams, for example--but planning sessions, especially initial planning sessions, require disagreements to be exposed and worked through.  Face-to-face discussions are essential for this to go well.  (A big table makes it &lt;a href=&quot;http://jamesshore.com/Blog/Cards-Table-and-Whiteboard.html&quot;&gt;much easier&lt;/a&gt; to see the whole plan, too.)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ultimately, prioritization is about coming up with priorities that are going to make the most people happy.  Or, to be slightly more realistic, the priorities that will be least disappointing to your major stakeholders.  Since everybody has a different opinion about what's important, this requires getting together, talking about what you find important, working through disagreements with your peers, and finding common ground.  It's a very human process, and the planning game excels at making that process work.&lt;/p&gt;

    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Blog/Coulda-Shoulda-Woulda.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Blog</category>
  <guid isPermaLink="true">http://jamesshore.com/Blog/Coulda-Shoulda-Woulda.html</guid>
</item>
<item>
  <title>Software Development Experts James Shore and Diana Larsen to Teach Grant-Funded Training Courses on Agile Development Techniques</title>
  <link>http://jamesshore.com/Press-Releases/Experts-to-Teach-Grant-Funded-Courses-on-Agile.html</link>
  <description>

    

    &lt;table width="100%" border="0" padding="0" spacing="0"&gt;
      &lt;tr&gt;
        &lt;td align="left"&gt;
          &lt;b&gt;25 Sep 2008&lt;/b&gt;
        &lt;/td&gt;
        &lt;td align="right"&gt;
          &lt;i&gt; &lt;a href="http://jamesshore.com/Press-Releases/"&gt;James Shore/Press-Releases&lt;/a&gt; &lt;/i&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  
    &lt;p&gt;&lt;em&gt;Portland, Oregon, September 29, 2008&lt;/em&gt; - James Shore and Diana Larsen will teach two grant-funded courses on Agile development techniques in Portland in October. The courses are offered through the Software Association of Oregon (SAO) and Worksystems, Inc (WSI). This training is funded, in part, with Employer Workforce Training Funds, a Federal grant, administered by the Oregon Department of Community Colleges and Workforce Development.&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;a href='http://jamesshore.com/Press-Releases/Experts-to-Teach-Grant-Funded-Courses-on-Agile.html'&gt;Read More...&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
    
    
    &lt;p&gt;&lt;a href="http://jamesshore.com/Press-Releases/Experts-to-Teach-Grant-Funded-Courses-on-Agile.html#comments"&gt;Comments&lt;a&gt;&lt;p&gt;
  </description>
  <category>/Press-Releases</category>
  <guid isPermaLink="true">http://jamesshore.com/Press-Releases/Experts-to-Teach-Grant-Funded-Courses-on-Agile.html</guid>
</item>
  </channel>
</rss>