<?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/"
	>

<channel>
	<title>Agile Cooperative</title>
	<atom:link href="http://www.agilecooperative.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agilecooperative.com</link>
	<description></description>
	<pubDate>Tue, 27 Jul 2010 20:50:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>New to agile? Remember, sometimes things get crazy!</title>
		<link>http://www.agilecooperative.com/2010/07/new-to-agile-remember-sometimes-things-get-crazy/</link>
		<comments>http://www.agilecooperative.com/2010/07/new-to-agile-remember-sometimes-things-get-crazy/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 20:50:34 +0000</pubDate>
		<dc:creator>Bob Hartman</dc:creator>
		
		<category><![CDATA[Newbie]]></category>

		<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://www.agileforall.com/?p=1666</guid>
		<description><![CDATA[Do you ever get so frustrated you feel like pulling your hair out?  I do (although that is NOT a picture of me to the left!).  If you look at my pictures you will see that it would be difficult for me to pull my hair out because a) there isn&#8217;t a lot of it, [...]


<strong>Related posts:</strong><ol><li><a href='http://www.agileforall.com/2009/05/18/new-to-agile-remember-how-to-say-no/' rel='bookmark' title='Permanent Link: New to agile?  Remember how to say &#8220;No&#8221;'>New to agile?  Remember how to say &#8220;No&#8221;</a> No.  Only two letters.  Very simple word.  Yet for some reason, with...</li>
<li><a href='http://www.agileforall.com/2009/11/17/new-to-agile-remember-to-respect-people/' rel='bookmark' title='Permanent Link: New to agile? Remember to respect people'>New to agile? Remember to respect people</a> One of the Lean Principles is &#8220;Respect People.&#8221;  I think it may...</li>
<li><a href='http://www.agileforall.com/2009/12/01/new-to-agile-remember-the-power-of-automation/' rel='bookmark' title='Permanent Link: New to agile? Remember the power of automation'>New to agile? Remember the power of automation</a> As this blog entry is published I am teaching an agile/scrum course...</li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.agileforall.com/wp-content/uploads/2010/07/poh.jpg"><img class="alignleft size-medium wp-image-1667" title="poh" src="http://www.agileforall.com/wp-content/uploads/2010/07/poh-300x241.jpg" alt="" width="300" height="241" /></a>Do you ever get so frustrated you feel like pulling your hair out?  I do (although that is NOT a picture of me to the left!).  If you look at my pictures you will see that it would be difficult for me to pull my hair out because a) there isn&#8217;t a lot of it, and b) what little there is I have cut very short.  But, enough about me, back to the issue/craziness at hand.</p>
<p>I last updated my blog on June 14 and here it is July 27.  That is way too long between updates, so let me start by apologizing to all of you who look forward to reading entries when I post them.  Fortunately, during the time when I haven&#8217;t been updating the blog I recognized a problem which I often see on agile teams &#8211; CRAZINESS!  Yes, sometimes things get a little crazy, or in my case recently, a LOT crazy!<span id="more-1666"></span></p>
<p>My last month has been extremely busy.  Since June 14th I&#8217;ve been in San Diego (twice), Minneapolis (twice), and Philadelphia.  I&#8217;ve also sent out 8 training or coaching proposals, been on 18 conference calls, attended 3 major springboard diving meets with my son, one of my daughters had her gall bladder removed and my brother visited to do 10 days of handyman repairs around my house!  In my calendar I see that I did all those things, but it still amazes me that they all got done.  What didn&#8217;t get done?  Well, this blog for one thing!</p>
<p>Why is it important to point out my &#8220;lack of dedication&#8221; to the blog?  Because the answer is much more interesting than &#8220;lack of dedication.&#8221;  In fact, I love writing blog entries.  It isn&#8217;t lack of dedication at all, but rather lack of time.  I made a conscious decision to do other things rather than update the blog.  Why?  Because I work in an agile way, and when I prioritized my backlog of work it caused writing blog entries to fall near the bottom of the list.</p>
<p>I often see agile teams saying things like &#8220;we can&#8217;t get it all done&#8221; and then they try to do the impossible.  The result is usually ugly as they cut corners to try to make everything fit after saying it wouldn&#8217;t fit.  Instead what these teams need to remember is to continue to honor their prioritized product backlog.  Work on the important items and don&#8217;t spend any energy working on items that aren&#8217;t important.  For me, not writing this blog was a tough decision.  Writing here is a bit like therapy for me.  However, for the past 5 weeks I&#8217;ve had to put it on hold because other things were much more important.  Will I have dry spells like that again?  Probably, but when it occurs it will occur because I&#8217;ve made a decision to prioritize other things higher on my backlog.</p>
<p>Good agile teams need to remember that things WILL get crazy.  It is during the periods of craziness that the discipline of their approach works in their favor.  Don&#8217;t fall back into old habits when the pressure or craziness starts to get out of control.  Go back to basics and continue to work in priority order.  Working faster usually leads to more errors.  Working diligently in priority order will always outperform working &#8220;faster&#8221; on everything at once.</p>
<p>Until next time I&#8217;ll be Making Agile a Reality<sup>®</sup> for my clients by continuing to prioritize my work and personal life in a way which will lead to a balance where I can deliver maximum value to everyone.
<div class="tweetmeme_button" >
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F07%2F27%2Fnew-to-agile-remember-sometimes-things-get-crazy%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F07%2F27%2Fnew-to-agile-remember-sometimes-things-get-crazy%2F&amp;source=AgileForAll&amp; height="61" width="50" /><br />
			</a>
		</div>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.agileforall.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>

<br /><p><strong>Related posts:</strong><ol><li><a href='http://www.agileforall.com/2009/05/18/new-to-agile-remember-how-to-say-no/' rel='bookmark' title='Permanent Link: New to agile?  Remember how to say &#8220;No&#8221;'>New to agile?  Remember how to say &#8220;No&#8221;</a> <small>No.  Only two letters.  Very simple word.  Yet for some reason, with...</small></li>
<li><a href='http://www.agileforall.com/2009/11/17/new-to-agile-remember-to-respect-people/' rel='bookmark' title='Permanent Link: New to agile? Remember to respect people'>New to agile? Remember to respect people</a> <small>One of the Lean Principles is &#8220;Respect People.&#8221;  I think it may...</small></li>
<li><a href='http://www.agileforall.com/2009/12/01/new-to-agile-remember-the-power-of-automation/' rel='bookmark' title='Permanent Link: New to agile? Remember the power of automation'>New to agile? Remember the power of automation</a> <small>As this blog entry is published I am teaching an agile/scrum course...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/07/new-to-agile-remember-sometimes-things-get-crazy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Do You Believe in Coding Standards?</title>
		<link>http://www.agilecooperative.com/2010/07/do-you-believe-in-coding-standards/</link>
		<comments>http://www.agilecooperative.com/2010/07/do-you-believe-in-coding-standards/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 20:18:21 +0000</pubDate>
		<dc:creator>David Bernstein</dc:creator>
		
		<category><![CDATA[Rants]]></category>

		<guid isPermaLink="false">http://techniquesofdesign.com/?p=842</guid>
		<description><![CDATA[
			
				
			
		
I am told that some developers don’t like coding standards imposed on them. I do not have that experience. In working with thousands of developers I notice that they prefer following standards as long as it supports them in doing a good job. 
We all hate busy work or pointless activities. If your coding standard [...]]]></description>
			<content:encoded><![CDATA[<p></p><div class="tweetmeme_button" >
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftechniquesofdesign.com%2F2010%2F07%2F21%2Fdo-you-believe-in-coding-standards%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftechniquesofdesign.com%2F2010%2F07%2F21%2Fdo-you-believe-in-coding-standards%2F&amp; height="61" width="50" /><br />
			</a>
		</div>
<p>I am told that some developers don’t like coding standards imposed on them. I do not have that experience. In working with thousands of developers I notice that they prefer following standards as long as it supports them in doing a good job. </p>
<p>We all hate busy work or pointless activities. If your coding standard is to have a comment for every line of code, like it was for me when I worked at IBM 20 years ago then developers may not follow it because it is _stupid_. </p>
<p>But coding standards that support the team are often quickly assimilated if all the team members see the benefit. However, we may not see the benefit because it wasn’t described to us correctly. For example, one of the most valuable practices I teach is encapsulation of construction. Most developers are familiar with the concept but perhaps never saw the benefit of using it because it wasn’t explained to them well.</p>
<p>It seems like every time you turn around someone has a new tool or methodology or something that is supposed to revolutionize our industry. No wonder seasoned software developers have become jaded. We often find what works for us and stick to it. We resist the flavor-of-the-month methodology because we’ve seen too many come and go.</p>
<p>But since we work in such a fast changing industry we have to reevaluate our knowledge on occasion so we continue to learn new things. This is true for other fields as well. Most M.D.’s spend at least 12 hours per week reading journals. Even CPA’s are required to get several days of training each year in order to renew their license. We developers have to be even more vigilant.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/07/do-you-believe-in-coding-standards/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Just Enough Regular Expressions for Cucumber</title>
		<link>http://www.agilecooperative.com/2010/07/just-enough-regular-expressions-for-cucumber/</link>
		<comments>http://www.agilecooperative.com/2010/07/just-enough-regular-expressions-for-cucumber/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 21:38:50 +0000</pubDate>
		<dc:creator>Richard Lawrence</dc:creator>
		
		<category><![CDATA[ATDD]]></category>

		<category><![CDATA[BDD]]></category>

		<category><![CDATA[Cucumber]]></category>

		<category><![CDATA[Cuke4Nuke]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[regular expressions]]></category>

		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.richardlawrence.info/?p=261</guid>
		<description><![CDATA[Jon Archer wrote last week about how Cucumber makes knowledge of regular expressions important. He&#8217;s right: Regular expressions are the key to Cucumber&#8217;s flexibility. Well-crafted regular expressions let you reuse step definitions, avoiding duplication and keeping your tests maintainable. But even experienced developers find them mysterious and overwhelming. Fortunately, you don&#8217;t need regular expressions like [...]


Related posts:<ol><li><a href='http://www.richardlawrence.info/2009/09/19/cuke4nuke-cucumber-for-net-teams/' rel='bookmark' title='Permanent Link: Cuke4Nuke: Cucumber for .NET Teams'>Cuke4Nuke: Cucumber for .NET Teams</a></li>
<li><a href='http://www.richardlawrence.info/2010/01/12/debugging-cuke4nuke-step-definitions/' rel='bookmark' title='Permanent Link: Debugging Cuke4Nuke Step Definitions'>Debugging Cuke4Nuke Step Definitions</a></li>
<li><a href='http://www.richardlawrence.info/2010/01/04/how-to-remove-duplication-in-cucumber-tests-using-scenario-outlines/' rel='bookmark' title='Permanent Link: How to Remove Duplication in Cucumber Tests Using Scenario Outlines'>How to Remove Duplication in Cucumber Tests Using Scenario Outlines</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Jon Archer wrote last week about how <a href="http://www.jonarcher.com/2010/07/cucumbers-and-why-it-suddenly-matters.html">Cucumber makes knowledge of regular expressions important</a>. He&#8217;s right: Regular expressions are the key to Cucumber&#8217;s flexibility. Well-crafted regular expressions let you reuse step definitions, avoiding duplication and keeping your tests maintainable. But even experienced developers find them mysterious and overwhelming.</p>
<p>Fortunately, you don&#8217;t need regular expressions like this one to wield the power of Cucumber:</p>
<div class="codecolorer-container text default" ><table cellspacing="0" cellpadding="0"><tbody><tr><td ><div>1<br /></div></td><td><div class="text codecolorer" >(?:[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*|&quot;(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*&quot;)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])</div></td></tr></tbody></table></div>
<p>In fact, if you use regular expressions like this in your step definitions, you&#8217;ve gone too far. (This regular expression, in case you&#8217;re wondering, matches the official spec for valid email addresses.)</p>
<p>As with most things, the 80/20 rule applies. There are a handful of useful patterns that are sufficient to make you a Cucumber power user. <span id="more-261"></span></p>
<h3>Anchors</h3>
<p>The regular expression <code class="codecolorer text default"><span class="text">I'm logged in</span></code> matches <code class="codecolorer text default"><span class="text">I'm logged in</span></code> and <code class="codecolorer text default"><span class="text">I'm logged in as an admin</span></code>. To avoid ambiguous matches, use <code class="codecolorer text default"><span class="text">^I'm logged in$</span></code>.</p>
<p>The caret at the beginning anchors to the beginning of the string. The dollar at the end does the same with the end of the string. Use these with all your step definitions and you won&#8217;t have surprise matches.</p>
<h3>Wildcards and quantifiers</h3>
<p>Matching specific words is fine. But you often want flexibility to match a variety of strings. Here are some common patterns for non-exact matches.</p>
<table border="0">
<tr>
<td><code class="codecolorer text default"><span class="text">.*</span></code></td>
<td>matches anything (or nothing), literally &#8220;any character (except a newline) 0 or more times&#8221;</td>
</tr>
<tr>
<td><code class="codecolorer text default"><span class="text">.+</span></code></td>
<td>matches at least one of anything</td>
</tr>
<tr>
<td nowrap="true" ><code class="codecolorer text default"><span class="text">[0-9]*</span></code> or <code class="codecolorer text default"><span class="text">\d*</span></code></td>
<td>matches a series of digits (or nothing)</td>
</tr>
<tr>
<td><code class="codecolorer text default"><span class="text">[0-9]+</span></code> or <code class="codecolorer text default"><span class="text">\d+</span></code></td>
<td>matches one or more digits</td>
</tr>
<tr>
<td><code class="codecolorer text default"><span class="text">&quot;[^\&quot;]*&quot;</span></code></td>
<td>matches something (or nothing) in double quotes</td>
</tr>
<tr>
<td><code class="codecolorer text default"><span class="text">an?</span></code></td>
<td>matches <em>a</em> or <em>an</em> (the question mark makes the <em>n</em> optional)</td>
</tr>
</table>
<p>&nbsp;</p>
<h3>Capturing and not capturing</h3>
<p>When you put part of a regular expression in parentheses, whatever it matches gets captured for use later. This is known as a &#8220;capture group.&#8221; In Cucumber, captured strings become step definition parameters. Typically, if you&#8217;re using a wildcard, you probably want to capture the matching value for use in your step definition. Here&#8217;s a Cuke4Nuke example,</p>
<div class="codecolorer-container csharp default" ><table cellspacing="0" cellpadding="0"><tbody><tr><td ><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="csharp codecolorer" ><span >&#91;</span>Given<span >&#40;</span><span >@&quot;^I'm logged in as an? (.*)$&quot;</span><span >&#41;</span><span >&#93;</span><br />
<span >public</span> <span >void</span> ImLoggedInAsA<span >&#40;</span><span >string</span> role<span >&#41;</span><br />
<span >&#123;</span><br />
&nbsp; <span >// log in as the given role</span><br />
<span >&#125;</span></div></td></tr></tbody></table></div>
<p>If your step is <code class="codecolorer text default"><span class="text">Given I'm logged in as an admin</span></code>, then the step definition gets passed <code class="codecolorer csharp default"><span class="csharp"><span >&quot;admin&quot;</span></span></code> for <code class="codecolorer csharp default"><span class="csharp">role</span></code>.</p>
<p>Cuke4Nuke converts captured strings to the step definition parameter type, which is handy for step definitions like this:</p>
<div class="codecolorer-container csharp default" ><table cellspacing="0" cellpadding="0"><tbody><tr><td ><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="csharp codecolorer" ><span >&#91;</span>Given<span >&#40;</span><span >@&quot;^I have (\d+) cukes$&quot;</span><span >&#41;</span><span >&#93;</span><br />
<span >public</span> <span >void</span> IHaveNCukes<span >&#40;</span><span >int</span> cukeCount<span >&#41;</span><br />
<span >&#123;</span><br />
&nbsp; <span >// set up the given number of cukes</span><br />
<span >&#125;</span></div></td></tr></tbody></table></div>
<p>The step <code class="codecolorer text default"><span class="text">Given I have 42 cukes</span></code> means the step definition gets called with <code class="codecolorer csharp default"><span class="csharp"><span >42</span></span></code> (as an integer) for <code class="codecolorer csharp default"><span class="csharp">cukeCount</span></code>.</p>
<p>Sometimes, you have to use parentheses to get a regular expression to work, but you don&#8217;t want to capture the match.</p>
<p>For example, suppose I want to be able to match both <code class="codecolorer text default"><span class="text">When I log in as an admin</span></code> and <code class="codecolorer text default"><span class="text">Given I'm logged in as an admin</span></code>. After all, both step definitions do the same thing. There&#8217;s no reason to have duplicated automation code in my step definitions simply because one is a Given and one is a When.</p>
<p>I might write something like this:</p>
<div class="codecolorer-container csharp default" ><table cellspacing="0" cellpadding="0"><tbody><tr><td ><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="csharp codecolorer" ><span >&#91;</span>When<span >&#40;</span><span >@&quot;^(I'm logged|I log) in as an? (.*)$&quot;</span><span >&#41;</span><span >&#93;</span><br />
<span >public</span> <span >void</span> LogInAs<span >&#40;</span><span >string</span> role<span >&#41;</span><br />
<span >&#123;</span><br />
&nbsp; <span >// log in as the given role</span><br />
<span >&#125;</span></div></td></tr></tbody></table></div>
<p>The parentheses and pipe indicate a logical OR, just what I need to match two different strings.</p>
<p>This will fail to run, though. My regular expression is capturing two strings, but my step definition method only takes one. I need to designate the first group as non-capturing like this:</p>
<div class="codecolorer-container csharp default" ><table cellspacing="0" cellpadding="0"><tbody><tr><td ><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="csharp codecolorer" ><span >&#91;</span>When<span >&#40;</span><span >@&quot;^(?:I'm logged|I log) in as an? (.*)$&quot;</span><span >&#41;</span><span >&#93;</span><br />
<span >public</span> <span >void</span> LogInAs<span >&#40;</span><span >string</span> role<span >&#41;</span><br />
<span >&#123;</span><br />
&nbsp; <span >// log in as the given role</span><br />
<span >&#125;</span></div></td></tr></tbody></table></div>
<p>Now, with the addition of <code class="codecolorer text default"><span class="text">?:</span></code> at the beginning of the group, it will perform as I expect.</p>
<p>By the way: You may be wondering how the attribute can be When and still match <code class="codecolorer text default"><span class="text">Given I'm logged in as an admin</span></code>. It turns out that in Cuke4Nuke, just like in Cucumber for Ruby, it doesn&#8217;t matter whether you use Given, When, or Then to define a step definition. They&#8217;re all step definitions and are interchangeable. It&#8217;s fairly common for today&#8217;s When to be tomorrow&#8217;s Given, so this is a nice feature.</p>
<h3>Just enough</h3>
<p>This is only the tip of the regular expression iceberg. Here&#8217;s a <a href="http://www.amazon.com/exec/obidos/ASIN/0596520689">book</a> and <a href="http://www.regular-expressions.info/">website</a> if you&#8217;re interested in going deeper. But for day-to-day work with Cucumber, anchors, simple wildcards and quantifiers, and capturing and non-capturing groups are all you need.</p>


<p>Related posts:<ol><li><a href='http://www.richardlawrence.info/2009/09/19/cuke4nuke-cucumber-for-net-teams/' rel='bookmark' title='Permanent Link: Cuke4Nuke: Cucumber for .NET Teams'>Cuke4Nuke: Cucumber for .NET Teams</a></li>
<li><a href='http://www.richardlawrence.info/2010/01/12/debugging-cuke4nuke-step-definitions/' rel='bookmark' title='Permanent Link: Debugging Cuke4Nuke Step Definitions'>Debugging Cuke4Nuke Step Definitions</a></li>
<li><a href='http://www.richardlawrence.info/2010/01/04/how-to-remove-duplication-in-cucumber-tests-using-scenario-outlines/' rel='bookmark' title='Permanent Link: How to Remove Duplication in Cucumber Tests Using Scenario Outlines'>How to Remove Duplication in Cucumber Tests Using Scenario Outlines</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/07/just-enough-regular-expressions-for-cucumber/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Compromises on Quality</title>
		<link>http://www.agilecooperative.com/2010/06/compromises-on-quality/</link>
		<comments>http://www.agilecooperative.com/2010/06/compromises-on-quality/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 16:12:40 +0000</pubDate>
		<dc:creator>David Bernstein</dc:creator>
		
		<category><![CDATA[Bits and Pieces]]></category>

		<guid isPermaLink="false">http://techniquesofdesign.com/?p=839</guid>
		<description><![CDATA[
			
				
			
		
Far too often I hear managers say, “Just get it out the door.” I understand the perspective. We work in a world of constraints and the business needs to survive. 
Management often says this but really mean “I look to my developers to tell me what critical things must be there in order for the [...]]]></description>
			<content:encoded><![CDATA[<p></p><div class="tweetmeme_button" >
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftechniquesofdesign.com%2F2010%2F06%2F30%2Fcompromises-on-quality%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftechniquesofdesign.com%2F2010%2F06%2F30%2Fcompromises-on-quality%2F&amp; height="61" width="50" /><br />
			</a>
		</div>
<p>Far too often I hear managers say, “Just get it out the door.” I understand the perspective. We work in a world of constraints and the business needs to survive. </p>
<p>Management often says this but really mean “I look to my developers to tell me what critical things must be there in order for the business to derive benefit.” If we are being asked to deliver something with such low quality that the customer or the team will pay for it later then we must help management understand the cost of their decisions.</p>
<p>We are not looking for perfect code. Building software is a series of compromises and the developers who are writing it are the best informed to make the wisest decisions on which compromises to make. </p>
<p>We all want to be proud of our work but we also realize that being a perfectionist is often not desirable and we must find a middle ground. Sometimes we have to ship code with serious flaws but we should be aware when we do and make a case for cleaning it up later as good for the business’s ongoing investment in their software assets.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/06/compromises-on-quality/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New to agile? Learn how to fail well</title>
		<link>http://www.agilecooperative.com/2010/06/new-to-agile-learn-how-to-fail-well/</link>
		<comments>http://www.agilecooperative.com/2010/06/new-to-agile-learn-how-to-fail-well/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 17:22:10 +0000</pubDate>
		<dc:creator>Bob Hartman</dc:creator>
		
		<category><![CDATA[Management]]></category>

		<category><![CDATA[Newbie]]></category>

		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.agileforall.com/?p=1610</guid>
		<description><![CDATA[Is success or failure really a choice?  I don&#8217;t think it is at all.  Pretty much no one chooses to fail.  Unfortunately, we can&#8217;t just choose to be successful either.  What we CAN choose is to try to make a success out of a failure!  The old saying &#8220;Make lemonade out of lemons&#8221; really is [...]


<strong>Related posts:</strong><ol><li><a href='http://www.agileforall.com/2009/12/28/agile-antipattern-another-burndown-chart-that-lies/' rel='bookmark' title='Permanent Link: Agile antipattern: Another burndown chart that lies!'>Agile antipattern: Another burndown chart that lies!</a> That burndown chart looks sweet doesn&#8217;t it?  The team finished the iteration...</li>
<li><a href='http://www.agileforall.com/2009/04/09/agile-antipattern-extending-an-iteration/' rel='bookmark' title='Permanent Link: Agile antipattern: Extending an iteration'>Agile antipattern: Extending an iteration</a> I had a previous blog post about stopping an iteration and how...</li>
<li><a href='http://www.agileforall.com/2009/03/16/agile-antipattern-moving-work-from-one-iteration-to-the-next/' rel='bookmark' title='Permanent Link: Agile antipattern: Moving work from one iteration to the next'>Agile antipattern: Moving work from one iteration to the next</a> All agile teams start at something less than the completely proficient level. ...</li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p><img class="alignleft size-medium wp-image-1652" title="fs" src="http://www.agileforall.com/wp-content/uploads/2010/05/fs-300x243.jpg" alt="" width="300" height="243" />Is success or failure really a choice?  I don&#8217;t think it is at all.  Pretty much no one chooses to fail.  Unfortunately, we can&#8217;t just choose to be successful either.  What we CAN choose is to try to make a success out of a failure!  The old saying &#8220;Make lemonade out of lemons&#8221; really is a good way of looking at things, especially for agile teams.</p>
<p>Agile teams will have times when they &#8220;fail.&#8221;  I know a lot of people dislike using the words &#8220;fail&#8221; and &#8220;failure&#8221; when talking about team results.  I&#8217;m actually pretty tired of that argument because I don&#8217;t think it helps anyone.  I&#8217;d rather call a &#8220;poor result&#8221; a &#8220;failure&#8221; and acknowledge we can and will strive to do better next time.  As I say during workshops I facilitate, &#8220;I am blunt and reality based. Sometimes that means I will say things which you won&#8217;t like to hear.&#8221;  I don&#8217;t call teams &#8220;failures&#8221; or anything like that.  That would be namecalling and that is never appropriate.  However, calling results a failure is correct and leaves no room for interpretation.  I find being blunt in those situations to be more useful because teams then must face the reality and not try to sugar coat it as &#8220;not being all that bad&#8230;&#8221;<span id="more-1610"></span></p>
<p>What comes out of failure is what I care about.  I don&#8217;t care so much how it happened, why it happened, who supposedly caused it to happen, or that it wasn&#8217;t all that bad really.  What I care about is acknowledging there is a problem that needs to be solved.  In my experience I find it easier to digest and solve if failures can be limited to happening only if 3 conditions can be met:</p>
<h3>Conditions for acceptable failure</h3>
<ol>
<li>Fail FAST!</li>
<li>Learn from it.</li>
<li>Don&#8217;t do it the same way again.</li>
</ol>
<p>Teams which keep these three simple conditions in mind when dealing with risk they often find themselves making better decisions and reacting more appropriately to the results of those decisions.  The areas of highest risk are where we are most likely to encounter failure, so how will we limit the timeframe to failure?  If we fail, what will we learn from it?  If we fail, how will we avoid failing in the same way again?  This is the heart of improvement.  Be open and honest about the result (failure).  Limit the damange (fail fast).  Examine the failure closely (learn from it).  Try a new way to solve the problem (don&#8217;t do it the same way again).</p>
<p>I see too many teams accepting failure time after time after time.  It is very frustrating to the organization and sometimes the team doesn&#8217;t even acknowledge there is a problem.  They keep saying they can&#8217;t do anything about it or it is an &#8220;acceptable failure.&#8221;  What does that even mean?  Acceptable to who?  Last time I checked, none of my clients were particularly pleased about failures.  This is where it gets dangerous to call a failing result anything but failure.  Calling it something else makes it somehow more palatable and easier to ignore.  Getting past difficult failures is the time of greatest learning and improvement for teams.  It changes regular teams into high performing teams, and high performing teams can become hyper-productive teams.</p>
<p>Don&#8217;t blow failures out of proportion (it really isn&#8217;t the end of the world), but at the same time don&#8217;t ignore them either.  Teams must deal with failures and turn them into successes downstream.  If they don&#8217;t do this then the failures will continue to cascade and cause a loss of morale, loss of urgency and ultimately a project or organizational failure.  Not dealing with failure is leaving a fuse lit on a ticking time bomb &#8211; I hope you defuse it in time!</p>
<p>Until next time I&#8217;ll be Making Agile a Reality<sup>®</sup> with my clients by continuing to make sure they all understand the 3 conditions necessary for failure to turn into eventual success.
<div class="tweetmeme_button" >
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F06%2F14%2Fnew-to-agile-learn-how-to-fail-well%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F06%2F14%2Fnew-to-agile-learn-how-to-fail-well%2F&amp;source=AgileForAll&amp; height="61" width="50" /><br />
			</a>
		</div>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.agileforall.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>

<br /><p><strong>Related posts:</strong><ol><li><a href='http://www.agileforall.com/2009/12/28/agile-antipattern-another-burndown-chart-that-lies/' rel='bookmark' title='Permanent Link: Agile antipattern: Another burndown chart that lies!'>Agile antipattern: Another burndown chart that lies!</a> <small>That burndown chart looks sweet doesn&#8217;t it?  The team finished the iteration...</small></li>
<li><a href='http://www.agileforall.com/2009/04/09/agile-antipattern-extending-an-iteration/' rel='bookmark' title='Permanent Link: Agile antipattern: Extending an iteration'>Agile antipattern: Extending an iteration</a> <small>I had a previous blog post about stopping an iteration and how...</small></li>
<li><a href='http://www.agileforall.com/2009/03/16/agile-antipattern-moving-work-from-one-iteration-to-the-next/' rel='bookmark' title='Permanent Link: Agile antipattern: Moving work from one iteration to the next'>Agile antipattern: Moving work from one iteration to the next</a> <small>All agile teams start at something less than the completely proficient level. ...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/06/new-to-agile-learn-how-to-fail-well/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paul Rayner Joins The Agile Cooperative</title>
		<link>http://www.agilecooperative.com/2010/06/paul-rayner-joins-the-agile-cooperative/</link>
		<comments>http://www.agilecooperative.com/2010/06/paul-rayner-joins-the-agile-cooperative/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 11:17:02 +0000</pubDate>
		<dc:creator>Richard Lawrence</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.richardlawrence.info/?p=257</guid>
		<description><![CDATA[I&#8217;m excited to announce that Paul Rayner&#8217;s company, Virtual Genius, has joined The Agile Cooperative. Paul is the founder and president of the Denver chapter of the International Association of Software Architects (IASA). I&#8217;ve known him for the last couple years through IASA and Agile Denver. On top of a great Australian accent, Paul brings [...]


Related posts:<ol><li><a href='http://www.richardlawrence.info/2009/01/21/agile-product-management-boot-camp/' rel='bookmark' title='Permanent Link: Agile Product Management Boot Camp'>Agile Product Management Boot Camp</a></li>
<li><a href='http://www.richardlawrence.info/2007/04/17/im-presenting-at-agile-2007-2/' rel='bookmark' title='Permanent Link: I&#39;m presenting at Agile 2007!'>I&#39;m presenting at Agile 2007!</a></li>
<li><a href='http://www.richardlawrence.info/2007/04/17/im-presenting-at-agile-2007/' rel='bookmark' title='Permanent Link: I&#8217;m presenting at Agile 2007!'>I&#8217;m presenting at Agile 2007!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;m excited to announce that Paul Rayner&#8217;s company, <a href="http://www.virtual-genius.com/">Virtual Genius</a>, has joined <a href="http://www.agilecooperative.com/">The Agile Cooperative</a>. Paul is the founder and president of <a href="http://www.iasahome.org/web/denver/home">the Denver chapter of the International Association of Software Architects</a> (IASA). I&#8217;ve known him for the last couple years through IASA and Agile Denver.</p>
<p>On top of a great Australian accent, Paul brings to the Cooperative expertise in agile architecture and engineering practices. Earlier this year, Paul and I co-taught and consulted on Acceptance Test Driven Development with Cucumber. I&#8217;m very pleased to formalize what is already a great partnership.</p>
<p>Learn more about Paul on the <a href="http://www.virtual-genius.com/blog/">Virtual Genius blog</a>. Or subscribe to the <a href="http://www.agilecooperative.com/feed/">combined Agile Cooperative feed</a> to get new blog posts from all the Cooperative members.</p>


<p>Related posts:<ol><li><a href='http://www.richardlawrence.info/2009/01/21/agile-product-management-boot-camp/' rel='bookmark' title='Permanent Link: Agile Product Management Boot Camp'>Agile Product Management Boot Camp</a></li>
<li><a href='http://www.richardlawrence.info/2007/04/17/im-presenting-at-agile-2007-2/' rel='bookmark' title='Permanent Link: I&#039;m presenting at Agile 2007!'>I&#039;m presenting at Agile 2007!</a></li>
<li><a href='http://www.richardlawrence.info/2007/04/17/im-presenting-at-agile-2007/' rel='bookmark' title='Permanent Link: I&#8217;m presenting at Agile 2007!'>I&#8217;m presenting at Agile 2007!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/06/paul-rayner-joins-the-agile-cooperative/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Slides from Portland Code Camp 2010</title>
		<link>http://www.agilecooperative.com/2010/05/slides-from-portland-code-camp-2010/</link>
		<comments>http://www.agilecooperative.com/2010/05/slides-from-portland-code-camp-2010/#comments</comments>
		<pubDate>Fri, 28 May 2010 17:20:09 +0000</pubDate>
		<dc:creator>Rod Claar</dc:creator>
		
		<category><![CDATA[Code Quality]]></category>

		<category><![CDATA[Events]]></category>

		<category><![CDATA[teams]]></category>

		<guid isPermaLink="false">http://rod-claar.net/?p=240</guid>
		<description><![CDATA[Slides from Portland Code Camp 2010.


Related posts:<ol><li><a href='http://rod-claar.net/events/122/' rel='bookmark' title='Permanent Link: Two Seminars at Portland Code Camp 2009'>Two Seminars at Portland Code Camp 2009</a>     Two of our most faviorite talks have been...</li><li><a href='http://rod-claar.net/events/pdx-code-camp-2009/' rel='bookmark' title='Permanent Link: PDX Code Camp 2009'>PDX Code Camp 2009</a> This year was my first at the PDX Code Camp,...</li><li><a href='http://rod-claar.net/code-quality/professionalism-in-software-development/' rel='bookmark' title='Permanent Link: Professionalism in Software Development'>Professionalism in Software Development</a> Robert (Uncle Bob) Martin talks about Professionalism in Software Development...</li></ol>]]></description>
			<content:encoded><![CDATA[<p>I had another great time at the Portland Code Camp this year.  My first talk had about 35 attendees and then the second one was SRO at close to 50.</p>
<p>Here are links to my slides.</p>
<p><a href="http://rod-claar.net/wp-content/uploads/2010/05/agile-analysis.pdf">Agile Analysis for Developers</a></p>
<p><a href="http://rod-claar.net/wp-content/uploads/2010/05/agile-architecture.pdf">Agile Architecture for Developers</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Frod-claar.net%2Fevents%2Fslides-from-portland-code-camp-2010%2F&amp;linkname=Slides%20from%20Portland%20Code%20Camp%202010"><img src="http://rod-claar.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Save/Bookmark"/></a>

<p>Related posts:<ol><li><a href='http://rod-claar.net/events/122/' rel='bookmark' title='Permanent Link: Two Seminars at Portland Code Camp 2009'>Two Seminars at Portland Code Camp 2009</a> <small>    Two of our most faviorite talks have been...</small></li><li><a href='http://rod-claar.net/events/pdx-code-camp-2009/' rel='bookmark' title='Permanent Link: PDX Code Camp 2009'>PDX Code Camp 2009</a> <small>This year was my first at the PDX Code Camp,...</small></li><li><a href='http://rod-claar.net/code-quality/professionalism-in-software-development/' rel='bookmark' title='Permanent Link: Professionalism in Software Development'>Professionalism in Software Development</a> <small>Robert (Uncle Bob) Martin talks about Professionalism in Software Development...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/05/slides-from-portland-code-camp-2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Clearing the air on Scrum Alliance Registered Education Provider Program</title>
		<link>http://www.agilecooperative.com/2010/05/clearing-the-air-on-scrum-alliance-registered-education-provider-program/</link>
		<comments>http://www.agilecooperative.com/2010/05/clearing-the-air-on-scrum-alliance-registered-education-provider-program/#comments</comments>
		<pubDate>Fri, 28 May 2010 14:57:59 +0000</pubDate>
		<dc:creator>Rod Claar</dc:creator>
		
		<category><![CDATA[Add new tag]]></category>

		<category><![CDATA[Certified Scrum Developer]]></category>

		<category><![CDATA[Code Quality]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Scrum Alliance]]></category>

		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://rod-claar.net/?p=234</guid>
		<description><![CDATA[Certified Scrum Developer is the first training program in the new Scrum Alliance Registered Education Provider program (SA-REP) http://www.scrumalliance.org/SA-REP.  The Scrum Alliance is seeking applications from training organizations that have something to offer the Scrum community.


Related posts:<ol><li><a href='http://rod-claar.net/about-rod/industry-veteran-rod-claar-joins-ripplerock-to-lead-the-north-american-agile-practice/' rel='bookmark' title='Permanent Link: INDUSTRY VETERAN ROD CLAAR JOINS RIPPLEROCK TO LEAD THE NORTH AMERICAN AGILE PRACTICE'>INDUSTRY VETERAN ROD CLAAR JOINS RIPPLEROCK TO LEAD THE NORTH AMERICAN AGILE PRACTICE</a> RippleRock recently recruited industry veteran trainer and Agile Coach Rod...</li><li><a href='http://rod-claar.net/scrum/scrum-video/' rel='bookmark' title='Permanent Link: Scrum Video'>Scrum Video</a> Scrum Music Video!...</li><li><a href='http://rod-claar.net/scrum/scrum-is-a-flexible-process/' rel='bookmark' title='Permanent Link: Scrum is a flexible process!'>Scrum is a flexible process!</a> Most organizations reacquire a tool to help manage complex distributed...</li></ol>]]></description>
			<content:encoded><![CDATA[<p>There have been a lot of negative comments about the new Scrum Alliance Certified Developer program lately.  One web post referrs to the organizers of the program and presmuably the participants as  &#8220;festering money-grubbers&#8221; . </p>
<p>Let me clear a couple of things up about the CSD program.  For full disclosure, I&#8217;m on staff with the Scrum Alliance helping administer the program.</p>
<p>Firstly, focusing on the CSD is a little short sighted.  Certified Scrum Developer is the first training program in the new Scrum Alliance Registered Education Provider program (SA-REP) http://www.scrumalliance.org/SA-REP.  The Scrum Alliance is seeking applications from training organizations that have something to offer the Scrum community.  There are 10 organizations listed right now and several more are in the final stages of approval, including a branch of a major university.  These organizations are screened for experience and demonstrated expertise in developing and administering training programs.   The application process also reviews the resume of each course designer and trainer submitted by the applying organization.  Lastly each course is reviewed relative to the leaning objectives for the program.  Once a new SA-REP is approved and they have approved courses and trainers they are given the ability to list public courses on the Scrum Alliance site.</p>
<p>The SA-REP program is also setting up to assess and review the courses and trainers that deliver training in the program.   The details of how this will be administered is still under development, however the goal is to help improve the quality of training and give students they information they need to select training that is valuable to them.</p>
<p>The CSD program is an SA-REP program.  Every SA-REP that submits a course and trainers for CSD-Eligible status are reviewed as I described.  The program includes Scrum knowledge as well as an aggressive set of technical learning objectives for developers working on Scrum teams.  These include the practices of Test-First, Test Driven Development, Continuous Integration, Agile Analysis and Agile Architecture.</p>
<p>So far we have 2 Java based programs approved and one .NET.  We have applications currently being reviewed for Ruby and another Java program.   There are training opportunities currently available on four continents.</p>
<p>With the massive improvements in Visual Studio 2010 and the new Application Lifecycle Management abilities of the new Microsoft Tools the Scrum Alliance is seeking qualified and experienced trainers on the platform.  This why the application asks if the trainer is qualified in this area thought the programs listed.  The application process reviews the Scrum training ability and experience of all applicants and if any trainer does not have demonstrated experience in Scrum, the Scrum Alliance will work with the organization to partner with an experienced Scrum trainer to help them with that part of the program.</p>
<p>BTW, I don&#8217;t see any &#8220;festering money-grubbers&#8221; listed as SA-REPs.  Who are you referring to?    I see qualified, experienced training organizations offering much needed training for developers and other professionals working on Scrum teams.</p>
<p>If you have any other questions about the SA-REP or CSD programs, feel free to contact me directly.</p>
<p>Rod Claar<br />
SA-REP /CSD Program Community Liaison<br />
rclaar@scrumalliance.org</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?&amp;linkurl=http%3A%2F%2Frod-claar.net%2Fscrum%2Fscrum-alliance-registered-education-provider-program%2F&amp;linkname=Clearing%20the%20air%20on%20Scrum%20Alliance%20Registered%20Education%20Provider%20Program"><img src="http://rod-claar.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Save/Bookmark"/></a>

<p>Related posts:<ol><li><a href='http://rod-claar.net/about-rod/industry-veteran-rod-claar-joins-ripplerock-to-lead-the-north-american-agile-practice/' rel='bookmark' title='Permanent Link: INDUSTRY VETERAN ROD CLAAR JOINS RIPPLEROCK TO LEAD THE NORTH AMERICAN AGILE PRACTICE'>INDUSTRY VETERAN ROD CLAAR JOINS RIPPLEROCK TO LEAD THE NORTH AMERICAN AGILE PRACTICE</a> <small>RippleRock recently recruited industry veteran trainer and Agile Coach Rod...</small></li><li><a href='http://rod-claar.net/scrum/scrum-video/' rel='bookmark' title='Permanent Link: Scrum Video'>Scrum Video</a> <small>Scrum Music Video!...</small></li><li><a href='http://rod-claar.net/scrum/scrum-is-a-flexible-process/' rel='bookmark' title='Permanent Link: Scrum is a flexible process!'>Scrum is a flexible process!</a> <small>Most organizations reacquire a tool to help manage complex distributed...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/05/clearing-the-air-on-scrum-alliance-registered-education-provider-program/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Who is Our Customer?</title>
		<link>http://www.agilecooperative.com/2010/05/who-is-our-customer/</link>
		<comments>http://www.agilecooperative.com/2010/05/who-is-our-customer/#comments</comments>
		<pubDate>Wed, 19 May 2010 21:41:44 +0000</pubDate>
		<dc:creator>David Bernstein</dc:creator>
		
		<category><![CDATA[Bits and Pieces]]></category>

		<guid isPermaLink="false">http://techniquesofdesign.com/?p=815</guid>
		<description><![CDATA[
			
				
			
		
Have you ever stay up until three in the morning trying to track down a bug? Maybe it was code that you were charged with maintaining or maybe it&#8217;s something you just wrote. Remember how it felt trying to figure out what the author was doing? 
Who is our customer? You may think it is [...]]]></description>
			<content:encoded><![CDATA[<p></p><div class="tweetmeme_button" >
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftechniquesofdesign.com%2F2010%2F05%2F19%2Fwho-is-our-customer%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftechniquesofdesign.com%2F2010%2F05%2F19%2Fwho-is-our-customer%2F&amp; height="61" width="50" /><br />
			</a>
		</div>
<p>Have you ever stay up until three in the morning trying to track down a bug? Maybe it was code that you were charged with maintaining or maybe it&#8217;s something you just wrote. Remember how it felt trying to figure out what the author was doing? </p>
<p>Who is our customer? You may think it is the person who uses our software and they are very important but we have another customer we sometimes forget, you—that you that is trying to fix a bug at 3:00 am. The people who maintain our code are also our customers and we must write software for them as well. </p>
<p>When we consider that over 80% of the total cost of software happens after it is released we can see that maintainability of software is critical to success and that we must drive the cost of ownership down.</p>
<p>Our software must do the right thing but just correctness is no not enough. The code that we write must be easy to understand, maintain and extend. But how do we do this? What makes software easy to understand, maintain and extend? This is what we will look at in upcoming posts so stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/05/who-is-our-customer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile antipattern: Target fixation</title>
		<link>http://www.agilecooperative.com/2010/05/agile-antipattern-target-fixation/</link>
		<comments>http://www.agilecooperative.com/2010/05/agile-antipattern-target-fixation/#comments</comments>
		<pubDate>Tue, 18 May 2010 18:35:49 +0000</pubDate>
		<dc:creator>Bob Hartman</dc:creator>
		
		<category><![CDATA[Antipattern]]></category>

		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.agileforall.com/?p=1603</guid>
		<description><![CDATA[Have you ever been so focused on something that the rest of the world seemed to disappear for a while?  This can be great under certain circumstances, but in other cases it can be extremely harmful.  When someone focuses on a target and doesn&#8217;t see anything but the target we call it &#8220;target fixation.&#8221;  This [...]


<strong>Related posts:</strong><ol><li><a href='http://www.agileforall.com/2009/03/16/agile-antipattern-moving-work-from-one-iteration-to-the-next/' rel='bookmark' title='Permanent Link: Agile antipattern: Moving work from one iteration to the next'>Agile antipattern: Moving work from one iteration to the next</a> All agile teams start at something less than the completely proficient level. ...</li>
<li><a href='http://www.agileforall.com/2009/03/02/agile-antipattern-but-the-development-lead-said-it-would-take-way-less-time-than-that/' rel='bookmark' title='Permanent Link: Agile antipattern:  But the development lead said it would take way less time than that'>Agile antipattern:  But the development lead said it would take way less time than that</a> I&#8217;d be rich if I had a nickel for every time I&#8217;ve heard...</li>
<li><a href='http://www.agileforall.com/2009/05/13/agile-antipattern-treating-symptoms-not-causes/' rel='bookmark' title='Permanent Link: Agile antipattern: Treating symptoms not causes'>Agile antipattern: Treating symptoms not causes</a> Agile teams often get to a point where they have a number...</li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://en.wikipedia.org/wiki/Target_fixation"><img class="alignleft size-medium wp-image-1604" title="target" src="http://www.agileforall.com/wp-content/uploads/2010/05/target-300x300.png" alt="" width="300" height="300" /></a>Have you ever been so focused on something that the rest of the world seemed to disappear for a while?  This can be great under certain circumstances, but in other cases it can be extremely harmful.  When someone focuses on a target and doesn&#8217;t see anything but the target we call it &#8220;<a href="http://en.wikipedia.org/wiki/Target_fixation">target fixation</a>.&#8221;  This can have dire negative effects!  For example, a fighter pilot can become so fixated on a target that they forget to avoid the target and run right into it.  The same can happen as we go through a curve in a moving vehicle.</p>
<p>Unfortunately, a variation of this can also occur to agile teams!  When it starts happening to agile teams it can be very difficult to detect and correct because everyone thinks they are doing the right thing.  It isn&#8217;t until much later when most teams finally determine this was the problem.<span id="more-1603"></span>Let me start by giving a few things I think happen when agile teams are too fixated on the target:</p>
<ol>
<li>It becomes vital to &#8220;hit the date&#8221; or &#8220;hit the story point goal&#8221; or whatever other goal is laid out.  While this is not inherently bad, when combined with some of the other items below it may be indicative of a problem.</li>
<li>The team starts to cut corners on quality in order to hit the goal.  This is done subconciously in most cases.  Teams simply write fewer and fewer tests.  Especially automated tests.</li>
<li>Risks and impediments are no longer raised in meetings.  After all, dealing with them may cause the team to miss the goal.</li>
<li>Team members work more overtime hours &#8211; all in the interest of getting to the goal &#8220;just this once.&#8221;  If it happens more than once it is time to take notice.</li>
<li>Team members start to silo rather than collaborate and communicate openly.  &#8220;If I can just stay heads down I can finish this&#8221; becomes a pervasive attitude.</li>
<li>The team starts to think about dropping the daily stand-up meeting so they have more time to reach the goal.</li>
<li>Retrospectives turn into blamestorming sessions.</li>
<li>The team starts to miss obvious problems until it is too late in the iteration to do anything about them.</li>
</ol>
<p>If your team is starting to suffer from more than a couple of these items you should take a step back and see if the goal has become more important than doing the right thing.  I tell my classes &#8220;Do the right thing and trust that the right things will happen as a result.&#8221;  Starting to do the wrong thing will not magically make the right results appear &#8211; except as a mirage.  Sacrificing something good will always lead to an issue further downstream.  Don&#8217;t fall into the trap of thinking you can get away with it!</p>
<p>If a team is starting to overly focus on &#8220;the goal&#8221; to the detriment of doing the right thing then someone needs to step up and say it!  This is where the Scrum value of having courage comes into play.  If someone doesn&#8217;t have the courage to stand up and say it is broken then nothing will ever get fixed.  Teams can spin in this cycle for a long time if no one notices the problem.  On occasion a team in this mode will make all of their iteration commitments along the way and then have massive rework to do at the end.  No one ever traces it back to making the goal more important than doing the right thing.</p>
<p><img class="alignleft size-full wp-image-1606" title="rb" src="http://www.agileforall.com/wp-content/uploads/2010/05/rb.gif" alt="" width="288" height="326" />Focus on doing the right thing, inspecting the results and adapting.  This is the only way to improve and reach real goals in realistic timeframes.  Some good reference blog entries to read would be:</p>
<ul>
<li><a href="http://www.agileforall.com/2010/01/13/new-to-agile-lean-principles-can-help/">New to agile? Lean principles can help</a></li>
<li><a href="http://www.agileforall.com/2009/12/29/agile-antipattern-dysfunctional-burndown-charts-roundup-post/">Agile antipatterns: Agile burn-down chart roundup post</a></li>
<li><a href="http://www.agileforall.com/2009/12/10/new-to-agile-learn-how-to-split-stories/">New to agile? Learn how to split stories</a></li>
<li><a href="http://www.agileforall.com/2009/12/01/new-to-agile-remember-the-power-of-automation/">New to agile? Remember the power of automation</a></li>
<li><a href="http://www.agileforall.com/2009/10/06/new-to-agile-keep-it-very-simple/">New to agile? Keep it very simple</a></li>
<li><a href="http://www.agileforall.com/2009/09/22/agile-antipattern-working-overtime/">Agile antipattern: Working overtime</a></li>
</ul>
<p>Hopefully your team isn&#8217;t overly fixated on the target, but if they are, get it fixed ASAP!</p>
<p>Until next time I&#8217;ll be Making Agile a Reality<sup>®</sup> by pointing out to teams when they are too concerned about the wrong things (which all too often seem like the right things)!
<div class="tweetmeme_button" >
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F05%2F18%2Fagile-antipattern-target-fixation%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F05%2F18%2Fagile-antipattern-target-fixation%2F&amp;source=AgileForAll&amp; height="61" width="50" /><br />
			</a>
		</div>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.agileforall.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>

<br /><p><strong>Related posts:</strong><ol><li><a href='http://www.agileforall.com/2009/03/16/agile-antipattern-moving-work-from-one-iteration-to-the-next/' rel='bookmark' title='Permanent Link: Agile antipattern: Moving work from one iteration to the next'>Agile antipattern: Moving work from one iteration to the next</a> <small>All agile teams start at something less than the completely proficient level. ...</small></li>
<li><a href='http://www.agileforall.com/2009/03/02/agile-antipattern-but-the-development-lead-said-it-would-take-way-less-time-than-that/' rel='bookmark' title='Permanent Link: Agile antipattern:  But the development lead said it would take way less time than that'>Agile antipattern:  But the development lead said it would take way less time than that</a> <small>I&#8217;d be rich if I had a nickel for every time I&#8217;ve heard...</small></li>
<li><a href='http://www.agileforall.com/2009/05/13/agile-antipattern-treating-symptoms-not-causes/' rel='bookmark' title='Permanent Link: Agile antipattern: Treating symptoms not causes'>Agile antipattern: Treating symptoms not causes</a> <small>Agile teams often get to a point where they have a number...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agilecooperative.com/2010/05/agile-antipattern-target-fixation/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
