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

<channel>
	<title>Richard Lawrence &#187; Definition of Done</title>
	<atom:link href="http://www.richardlawrence.info/tag/definition-of-done/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.richardlawrence.info</link>
	<description>On making software teams happier and more productive</description>
	<lastBuildDate>Fri, 27 Jan 2012 18:41:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Want Productivity? Focus on Predictability Instead</title>
		<link>http://www.richardlawrence.info/2010/09/23/want-productivity-focus-on-predictability-instead/</link>
		<comments>http://www.richardlawrence.info/2010/09/23/want-productivity-focus-on-predictability-instead/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 16:07:54 +0000</pubDate>
		<dc:creator>Richard Lawrence</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Definition of Done]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://www.richardlawrence.info/?p=315</guid>
		<description><![CDATA[Focus your team on predictability, and productivity will come. Focus on productivity, and you&#8217;ll get neither productivity nor predictability. Focusing on predictability drives a team to: Small user stories that can be completed in a day or two Working on a small number of stories at once A strong story definition of done with little [...]


Related posts:<ol><li><a href='http://www.richardlawrence.info/2008/10/09/the-most-useful-release-burn-up-ive-seen-yet/' rel='bookmark' title='Permanent Link: The Most Useful Release Burn-up I&#8217;ve Seen Yet'>The Most Useful Release Burn-up I&#8217;ve Seen Yet</a></li>
<li><a href='http://www.richardlawrence.info/2008/11/14/motivated-individuals/' rel='bookmark' title='Permanent Link: Motivated Individuals'>Motivated Individuals</a></li>
<li><a href='http://www.richardlawrence.info/2008/07/11/one-word-can-change-your-daily-scrum/' rel='bookmark' title='Permanent Link: One Word Can Change Your Daily Scrum'>One Word Can Change Your Daily Scrum</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Focus your team on predictability, and productivity will come. Focus on productivity, and you&#8217;ll get neither productivity nor predictability. <span id="more-315"></span></p>
<p>Focusing on predictability drives a team to:</p>
<ul>
<li> Small user stories that can be completed in a day or two</li>
<li>Working on a small number of stories at once</li>
<li> A strong story definition of done with little or no gap between it and <a title="Growing DONE—How to Make the Definition of Done Work for Your Team" href="/2009/12/21/growing-done-how-to-make-the-definition-of-done-work-for-your-team/">the release definition of done</a></li>
<li>Individuals crossing disciplines to get things done without unpredictable wait times</li>
<li> Making achievable commitments based on past results</li>
</ul>
<p>On the other hand, focusing on productivity—usually leads to:</p>
<ul>
<li>Individuals optimizing for their own productivity (i.e. lots of tasks getting done)</li>
<li>Over-committing</li>
<li>Starting stories without necessarily believing they&#8217;ll get done (&#8220;If we&#8217;re going to get all these stories done in this sprint, we&#8217;d better start them as soon as possible!&#8221;)</li>
<li>Sacrificing quality for speed (i.e. taking on technical debt—&#8221;Just get it done; we&#8217;ll clean it up later.&#8221;)</li>
<li>Communicating and collaborating less (&#8220;All that conversation slows me down. I need to focus on my work.&#8221;)</li>
</ul>
<p>The (ostensibly) productivity-focused behaviors may show a velocity increase in the short term. But you&#8217;ll pay for it later. More likely, you&#8217;ll see an erratic velocity, sometimes high, sometimes zero. And there is likely to be some nebulous chunk of work between the last story and the release.</p>
<p>Over and over again, I&#8217;ve seen the predictability-focused behaviors lead to a stable or, more often, a slowly increasing velocity. Small stories are easier to estimate and to get done right. Building quality in keeps the system easy to maintain and extend. And when done really means done, the Product Owner can make meaningful predictions and commitments around delivery. &#8220;<a title="Principles behind the Agile Manifesto" href="http://agilemanifesto.org/principles.html">Working software is the primary measure of progress</a>,&#8221; after all.</p>
<p>Note: This assumes <a title="The Art of Agile Development: Energized Work" href="http://jamesshore.com/Agile-Book/energized_work.html">energized work</a>. If your team doesn&#8217;t care about getting anything done, they could predictably deliver nothing, which isn&#8217;t particularly satisfying. With this team, focus on motivation, then predictability. As <a title="Principles behind the Agile Manifesto" href="http://agilemanifesto.org/principles.html">the Manifesto</a> also says, &#8220;Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.&#8221; Motivation comes first.</p>


<p>Related posts:<ol><li><a href='http://www.richardlawrence.info/2008/10/09/the-most-useful-release-burn-up-ive-seen-yet/' rel='bookmark' title='Permanent Link: The Most Useful Release Burn-up I&#8217;ve Seen Yet'>The Most Useful Release Burn-up I&#8217;ve Seen Yet</a></li>
<li><a href='http://www.richardlawrence.info/2008/11/14/motivated-individuals/' rel='bookmark' title='Permanent Link: Motivated Individuals'>Motivated Individuals</a></li>
<li><a href='http://www.richardlawrence.info/2008/07/11/one-word-can-change-your-daily-scrum/' rel='bookmark' title='Permanent Link: One Word Can Change Your Daily Scrum'>One Word Can Change Your Daily Scrum</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.richardlawrence.info/2010/09/23/want-productivity-focus-on-predictability-instead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Growing DONE—How to Make the Definition of Done Work for Your Team</title>
		<link>http://www.richardlawrence.info/2009/12/21/growing-done-how-to-make-the-definition-of-done-work-for-your-team/</link>
		<comments>http://www.richardlawrence.info/2009/12/21/growing-done-how-to-make-the-definition-of-done-work-for-your-team/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 23:34:37 +0000</pubDate>
		<dc:creator>Richard Lawrence</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Definition of Done]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.richardlawrence.info/?p=234</guid>
		<description><![CDATA[Effective agile teams get things done. They build software day after day that&#8217;s not just &#8220;code complete&#8221; but really shippable. And when their product owner says, &#8220;ship it,&#8221; they can get their shippable software into production at the drop of a hat. The Definition of Done can be a powerful tool to make these things [...]


Related posts:<ol><li><a href='http://www.richardlawrence.info/2009/01/19/web-testing-for-net-teams-watin-or-watir/' rel='bookmark' title='Permanent Link: Web Testing for .NET Teams: WatiN or Watir?'>Web Testing for .NET Teams: WatiN or Watir?</a></li>
<li><a href='http://www.richardlawrence.info/2008/09/08/surviving-rewrites/' rel='bookmark' title='Permanent Link: Surviving Rewrites'>Surviving Rewrites</a></li>
<li><a href='http://www.richardlawrence.info/2008/10/30/free-agile-product-management-seminar-nov-11-denver/' rel='bookmark' title='Permanent Link: Free Agile Product Management Seminar &#8211; Nov 11, Denver'>Free Agile Product Management Seminar &#8211; Nov 11, Denver</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p><img src="http://www.richardlawrence.info/wp-content/uploads/2009/12/finish_banner.jpg" alt="Finish banner" title="Finish banner" width="200" height="133" class="alignright size-full wp-image-241" />Effective agile teams get things done. They build software day after day that&#8217;s not just &#8220;code complete&#8221; but really shippable. And when their product owner says, &#8220;ship it,&#8221; they can get their shippable software into production at the drop of a hat.</p>
<p>The Definition of Done can be a powerful tool to make these things happen&#8230;If it&#8217;s used right.</p>
<p>Most agile teams I see have one of four relationships with a Definition of Done:</p>
<ol>
<li>They don&#8217;t have one</li>
<li>They have one but don&#8217;t really use it</li>
<li>They have one but can never satisfy it</li>
<li>They have one, satisfy it for each story, but still have lots to do at the end of a release</li>
</ol>
<p>I rarely come across teams who use the Definition of Done to good effect day after day, sprint after sprint. <span id="more-234"></span></p>
<p>The reason why, I think, is that if a team uses a Definition of Done at all, they try to use a single one before they&#8217;re ready. I&#8217;ve discovered that most teams really need two definitions of done. For a new agile team, there&#8217;s more to do to get software ready for production than can be accomplished a story at a time. Teams that fall into #3 above probably put everything on the Definition of Done. Teams in #4 probably put just those things they could do a story at a time on the Definition of Done and left everything else for later.</p>
<p><strong>The answer is two Definitions of Done. The Story Definition of Done captures what the team can do today to make each story as shippable as possible in each sprint. The Release Definition of Done captures the gap between the Story Definition of Done and what&#8217;s actually required to ship. Together these tools provide a way to visualize what done means and to make it happen as early as possible.</strong></p>
<p>Here&#8217;s how to build effective Story and Release Definitions of Done&#8230;</p>
<h2>Building The Two Definitions of Done</h2>
<h3>1. Brainstorm the List</h3>
<p>List all the things required to move a set of features in your product to production. Engage release management, operations, help desk, and other stakeholders at this point—it&#8217;s easier to build what they need into the software than to bolt it on at the end. This list typically includes things like:</p>
<ul>
<li>user documentation</li>
<li>operations documentation</li>
<li>monitoring and logging</li>
<li>performance testing</li>
<li>regression tested in a clean QA environment</li>
</ul>
<p>Now, list anything required to deliver software at a consistently fast pace from iteration to iteration. For example:</p>
<ul>
<li>automated unit tests covering 80% of code</li>
<li>automated story tests covering 90% of acceptance criteria</li>
<li>adherence to coding standards</li>
<li>code reviewed by another developer</li>
<li>all production code developed by a pair</li>
</ul>
<p>Finally, list non-functional requirements such as:</p>
<ul>
<li>all pages load in under a second</li>
<li>all pages can support 300 simultaneous user sessions</li>
</ul>
<p>Merge these lists into one, changing the language where necessary so that each bullet reads as a continuation of the sentence beginning: &#8220;In order for a set of features to be released to production&#8230;&#8221;</p>
<h3>2. Challenge the List</h3>
<p>For each item on the list, ask &#8220;why?&#8221; Keep asking &#8220;why?&#8221; until it&#8217;s clear that the item is the simplest, cheapest, most repeatable way to achieve some desired goal in the release. If it&#8217;s not, change it.</p>
<p>This is where you challenge the existing rules around releases. Maybe your release readiness guidelines today require a complete installation guide. Could you replace that with an automated installation script?</p>
<h3>3. Build Release Readiness In</h3>
<p>Now you have a list of the minimal set of things a group of features must have to be released—your Release Definition of Done. Bolting those things onto an otherwise complete set of features could impose a fixed cost of weeks to the end of any release. One of our goals in agile is to allow the product owner to be able to say at any point, &#8220;This is enough, I want to start making money off of this software now—ship it.&#8221; An expensive release gets in the way.</p>
<p>Look at each item on the list and ask, &#8220;Could we satisfy this as we build each story instead of all at once at the end of a release?&#8221; Yes? Then move it to your Story Definition of Done. No? Could you do part of it or do something that would reduce the time at the end? Yes? Then put that on your Story Definition of Done. No? Then leave it on the Release Definition of Done.</p>
<p>Very few items can&#8217;t be satisfied a story at a time. The most common ones I see are performance testing in a production-like environment shared with other products and beta testing with a set of real users. But you can get a head start on even these. Maybe your test environment isn&#8217;t exactly like production, but can you make the performance constraints similar enough to at least profile for likely performance issues? Maybe you can&#8217;t beta test on a large scale, but could you get a small set of users to volunteer to use stories as they&#8217;re built and provide early feedback to make the beta test shorter and more predictable? Think hard about anything you&#8217;re tempted to leave on the Release Definition of Done.</p>
<h3>4. Use Your Definitions of Done</h3>
<p>You now have two definitions of done, one for every story you build and one for a collection of stories you want to release. The Story Definition of Done will inform your acceptance criteria for every story. If page load time matters, a story isn&#8217;t done until all the related pages load fast enough. Test for this. Automate these tests and run them on every build if you can.</p>
<p>You won&#8217;t satisfy the items on your Release Definition of Done until the end of a release. But this doesn&#8217;t mean you can forget about them until then. Keep the Release Definition of Done visible, and look for ways to test early for release readiness.</p>
<h3>5. Grow Your Story Definition of Done</h3>
<p>The Definitions of Done are a starting place, a statement of what your team can accomplish today. Over time, your Release Definition of Done should get smaller and your Story Definition of Done should grow. If you have 3 weeks of manual regression testing at the end of each release, come up with a plan to grow automated regression tests as you build new stories. Maybe you can reduce those 3 weeks of testing to one. If you have a tech writer spend a month writing documentation at the end of a release today, find ways to integrate her into the team to grow the documentation as you grow the software. Maybe you can reduce that month of writing to 3 days of editing and polishing.</p>
<h2>The Bottom Line</h2>
<p>Use two definitions of done. In every retrospective, look for ways to grow your Story Definition of Done so you can consistently build and release software quickly. If you get to a point where you can throw away the Release Definition of Done, congratulations! But don&#8217;t start there.</p>


<p>Related posts:<ol><li><a href='http://www.richardlawrence.info/2009/01/19/web-testing-for-net-teams-watin-or-watir/' rel='bookmark' title='Permanent Link: Web Testing for .NET Teams: WatiN or Watir?'>Web Testing for .NET Teams: WatiN or Watir?</a></li>
<li><a href='http://www.richardlawrence.info/2008/09/08/surviving-rewrites/' rel='bookmark' title='Permanent Link: Surviving Rewrites'>Surviving Rewrites</a></li>
<li><a href='http://www.richardlawrence.info/2008/10/30/free-agile-product-management-seminar-nov-11-denver/' rel='bookmark' title='Permanent Link: Free Agile Product Management Seminar &#8211; Nov 11, Denver'>Free Agile Product Management Seminar &#8211; Nov 11, Denver</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.richardlawrence.info/2009/12/21/growing-done-how-to-make-the-definition-of-done-work-for-your-team/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

