<?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>Agile Bob on Making Agile a Reality &#187; Development</title>
	<atom:link href="http://www.agileforall.com/category/agile/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agileforall.com</link>
	<description>Agile For All</description>
	<lastBuildDate>Sun, 05 Feb 2012 04:36:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Agile antipattern: Sizing or estimating bug fixes</title>
		<link>http://www.agileforall.com/2010/05/05/agile-antipattern-sizing-or-estimating-bug-fixes/</link>
		<comments>http://www.agileforall.com/2010/05/05/agile-antipattern-sizing-or-estimating-bug-fixes/#comments</comments>
		<pubDate>Wed, 05 May 2010 16:45:06 +0000</pubDate>
		<dc:creator>Bob Hartman</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Antipattern]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Estimation]]></category>
		<category><![CDATA[Product Owner]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.agileforall.com/?p=1573</guid>
		<description><![CDATA[Is the bug to the left a large bug or a small bug?  It looks HUGE to me!  Well, in reality it is probably between .5 and .75 inches long.  Not really a very big bug at all.  Why do we care? Because trying to size the fixing of software &#8220;bugs&#8221; is at least as hard [...]
<strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2008/11/08/testing-to-find-defects-is-waste/' rel='bookmark' title='Testing to find defects is waste'>Testing to find defects is waste</a> <small>Have you ever heard someone say that testing to find defects is...</small></li>
<li><a href='http://www.agileforall.com/2009/04/23/agile-antipattern-code-freezes-during-each-iteration/' rel='bookmark' title='Agile antipattern: Code freezes during each iteration'>Agile antipattern: Code freezes during each iteration</a> <small>Over the past 18 months I&#8217;ve encountered a number of teams where...</small></li>
<li><a href='http://www.agileforall.com/2009/12/14/agile-antipattern-burndown-wall/' rel='bookmark' title='Agile antipattern: Burndown &#8220;wall&#8221;'>Agile antipattern: Burndown &#8220;wall&#8221;</a> <small>Does your team have an iteration burndown chart (giving credit only for...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p><img class="alignleft size-full wp-image-1574" title="Microsoft Word - Squash Bug Network Article.docx" src="http://www.agileforall.com/wp-content/uploads/2010/05/sqbug.jpg" alt="" width="288" height="359" />Is the bug to the left a large bug or a small bug?  It looks HUGE to me!  Well, in reality it is probably between .5 and .75 inches long.  Not really a very big bug at all.  Why do we care? Because trying to size the fixing of software &#8220;bugs&#8221; is at least as hard as figuring out how big this bug is!</p>
<p>When I teach an Agile or Scrum course someone will almost always ask a question like &#8220;How do you handle bug fixes in iterations or sprints?&#8221;  When I ask &#8220;How do you want to handle them?&#8221; we get into a pretty interesting discussion.  Most people say something similar to &#8220;We should prioritize them with the user stories, size them like we do user stories and then see what fits into each iteration.&#8221;  I usually smile and ask any developers if they know ahead of time how long it will take to fix a defect.  They ALWAYS say &#8220;Sometimes.&#8221;  And THAT is the problem!<span id="more-1573"></span></p>
<p>How can you actually determine the size of fixing something which is broken in an unknown way?  I tell people in my classes I only know two sizes for defect fixes: 1) Trivial because I already know what&#8217;s broken and how to fix it, or 2) Infinite because I have no idea what&#8217;s broken or how to fix it!  If those are the only two sizes available to us how can we possibly put them into iterations effectively?</p>
<p>I have found one effective solution to be the use of Kanban techniques for defect fixing.  I don&#8217;t want to get into what Kanban is or isn&#8217;t and when it should or shouldn&#8217;t be used, so I&#8217;ll just lay out what I have seen be effective for a number of teams:</p>
<ol>
<li>Prioritize the defect list.  This is NOT done in the context of user stories, but separately.  The list is prioritized however the Product Owner says it should be prioritized.</li>
<li>The team and Product Owner decide on how much effort (time) should be used each iteration to work on defects.  Hopefully this is not a large amount, but it might be for teams which have large numbers of defects in a legacy system.</li>
<li>The team determines when the defect fixing time occurs and how they do it. Most effective is to put a gate or two in place on the defects.  For example, gate 1 may say the developer needs to know within 2 hours if the defect is going to take more than a day to fix.  If so, then put it off until a discussion can take place with the Product Owner.  Gate 2 may be after a day if the defect is not fixed perhaps another discussion needs to take place.  However the gates are set up (if they are)  the defects are worked in priority order.</li>
<li>Limit the number of bug fixes being worked at one time to a very small number.  If you don&#8217;t do this you will have each developer working on at least one defect and run the serious risk of none of them getting fixed before the iteration or sprint ends!</li>
</ol>
<p>This 3 step approach allows the team to work on defects in priority order while allowing a set amount of time to be spent on the defects.  The amount of time spent can be changed as needed to address the business needs of the organization at any point in time.</p>
<p>The downside of this is no one can tell a stakeholder something like &#8220;that bug will be fixed by date X&#8221; or &#8220;we&#8217;ll knock out X bugs this iteration.&#8221;  Saying anything like that is a lie anyway, so this shouldn&#8217;t be a big issue.  I say these statements are lies under the assumption the defects are non-trivial.</p>
<p>How else have you managed a defect backlog that has been effective?  I&#8217;d love to have more proven techniques for people to experiment with!</p>
<p>Until next time my clients will be Making Agile a Reality<sup>®</sup> by using sizing only when appropriate!
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F05%2F05%2Fagile-antipattern-sizing-or-estimating-bug-fixes%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F05%2F05%2Fagile-antipattern-sizing-or-estimating-bug-fixes%2F&amp;source=AgileForAll&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F05%2F05%2Fagile-antipattern-sizing-or-estimating-bug-fixes%2F&amp;title=Agile%20antipattern%3A%20Sizing%20or%20estimating%20bug%20fixes" id="wpa2a_2"><img src="http://www.agileforall.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><br /><p><strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2008/11/08/testing-to-find-defects-is-waste/' rel='bookmark' title='Testing to find defects is waste'>Testing to find defects is waste</a> <small>Have you ever heard someone say that testing to find defects is...</small></li>
<li><a href='http://www.agileforall.com/2009/04/23/agile-antipattern-code-freezes-during-each-iteration/' rel='bookmark' title='Agile antipattern: Code freezes during each iteration'>Agile antipattern: Code freezes during each iteration</a> <small>Over the past 18 months I&#8217;ve encountered a number of teams where...</small></li>
<li><a href='http://www.agileforall.com/2009/12/14/agile-antipattern-burndown-wall/' rel='bookmark' title='Agile antipattern: Burndown &#8220;wall&#8221;'>Agile antipattern: Burndown &#8220;wall&#8221;</a> <small>Does your team have an iteration burndown chart (giving credit only for...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileforall.com/2010/05/05/agile-antipattern-sizing-or-estimating-bug-fixes/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>New to agile? Remember a user story is more than a card!</title>
		<link>http://www.agileforall.com/2010/05/03/new-to-agile-remember-a-user-story-is-more-than-a-card/</link>
		<comments>http://www.agileforall.com/2010/05/03/new-to-agile-remember-a-user-story-is-more-than-a-card/#comments</comments>
		<pubDate>Mon, 03 May 2010 17:20:09 +0000</pubDate>
		<dc:creator>Bob Hartman</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Newbie]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Product Owner]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.agileforall.com/?p=1018</guid>
		<description><![CDATA[What&#8217;s wrong with the user story on the card?  It seems to have everything we need: a) short title, b) a size (in this case 2), and c) a well-written story using the standard &#8220;As a &#8230; I want &#8230; so that &#8230;&#8221; format.  So what&#8217;s wrong? Nothing!  Well, almost nothing.  The user story card [...]
<strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2009/05/14/new-to-agile-invest-in-good-user-stories/' rel='bookmark' title='New to agile?  INVEST in good user stories'>New to agile?  INVEST in good user stories</a> <small>As a &lt;user&gt; I want &lt;function&gt; so that&lt;value&gt;. Above is a very...</small></li>
<li><a href='http://www.agileforall.com/2009/02/23/new-to-agile-remember-one-thing-just-enough-just-in-time/' rel='bookmark' title='New to agile?  Remember one thing: Just enough, just in time'>New to agile?  Remember one thing: Just enough, just in time</a> <small>If you lived through the past few decades you have undoubtedly heard...</small></li>
<li><a href='http://www.agileforall.com/2009/02/20/when-in-doubt-ask-how-will-i-know-ive-done-that/' rel='bookmark' title='When in Doubt Ask &#8220;How Will I Know I&#8217;ve Done That?&#8221;'>When in Doubt Ask &#8220;How Will I Know I&#8217;ve Done That?&#8221;</a> <small>Tired of not knowing exactly what to create or test? Get in...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p><img class="alignleft size-full wp-image-1565" title="us" src="http://www.agileforall.com/wp-content/uploads/2010/05/us.png" alt="" width="336" height="232" />What&#8217;s wrong with the user story on the card?  It seems to have everything we need: a) short title, b) a size (in this case 2), and c) a well-written story using the standard &#8220;As a &#8230; I want &#8230; so that &#8230;&#8221; format.  So what&#8217;s wrong? Nothing!  Well, almost nothing.  The user story card is a great <em>STARTING POINT</em>, but it is not sufficient by itself.</p>
<p>In coaching Agile and Scrum teams I see many of them starting out with the assumption that the user story card contains all the information they need in order to create a high quality piece of software.  Forgive me for being harsh, but how stupid is that?  Assuming a single sentence can fully describe something which might take a few days to analyze, design, code and test seems pretty ambitious.  No, let me take that back.  It&#8217;s more than pretty ambitious, it is just not possible. So I ask again, what&#8217;s wrong with this story card?<span id="more-1018"></span></p>
<p>And again I&#8217;ll answer that there is nothing wrong with it, but it is a <em>STARTING POINT</em>.  Many people are familiar with the phrase &#8220;INVEST in good user stories&#8221; which is an easy way to remember to use the INVEST acronym for guidance when creating user stories.  I wrote a blog entry about that titled &#8220;<a href="http://www.agileforall.com/2009/05/14/new-to-agile-invest-in-good-user-stories/">New to agile? INVEST in good user stories</a>&#8220;  Web searches lead people to that blog entry many times every day.  But it isn&#8217;t sufficient!  If you read agile literature for any period of time you will eventually see the phrase &#8220;A user story is an invitation to a conversation.&#8221;  This is vitally important to success!  A conversation allows more description than a single sentence.  It can clarify many aspects of the user story.  Taking this a step further we also need to be able to confirm the user story is completed.</p>
<p>Taking all of this together we end up with the 3 C&#8217;s of good user stories: <strong>Card, Conversation, Confirmation</strong>.  Ron Jeffries <a href="http://xprogramming.com/articles/expcardconversationconfirmation/">wrote about this</a> all the way back in 2001 and his advice is still good today.  Agile and Scrum teams need to remember the card is the starting point.  It leads to a conversation where more specifics are given and negotiation (the N in INVEST) can occur.  All of that leads to confirmation in the form of tests (the T in INVEST).  A good story card will likely end up with a back side covered with results of the conversation(s) and confirmation tests.</p>
<p><img class="alignright size-medium wp-image-1569" title="smeeting" src="http://www.agileforall.com/wp-content/uploads/2010/05/smeeting-300x225.jpg" alt="" width="300" height="225" />Next time you see a user story card don&#8217;t ask yourself if you need to have a conversation about it.  Instead just assume you need to have a conversation and have it!  Go to the Product Owner or customer or customer proxy and ask to discuss the story.  Make notes for yourself.  In fact it is even better (vital in my mind) to have the conversation involve a developer, tester and product person.  I call them 3-headed conversations.  This allows everyone to be on the same page so later there is no disagreement about what was really meant by the story.  This avoids one of my least favorite conversations which happens when the tester and developer disagree about what the requirement means AFTER the code is written.</p>
<p>If you are using an agile lifecycle management tool rather than physical cards, record the decisions made during the conversation and any resulting confirmation tests in various fields in the tool.  You must make sure the information is captured in case someone else who was not part of the original 3-headed conversation ends up doing some work on the story.</p>
<p>Try using the 3 C&#8217;s and see if your results improve.  I&#8217;m sure they will.</p>
<p>Until next time I&#8217;ll be Making Agile a Reality<sup>®</sup> for my clients by continuing to train and coach them to use the 3 C&#8217;s effectively.
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F05%2F03%2Fnew-to-agile-remember-a-user-story-is-more-than-a-card%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F05%2F03%2Fnew-to-agile-remember-a-user-story-is-more-than-a-card%2F&amp;source=AgileForAll&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.agileforall.com%2F2010%2F05%2F03%2Fnew-to-agile-remember-a-user-story-is-more-than-a-card%2F&amp;title=New%20to%20agile%3F%20Remember%20a%20user%20story%20is%20more%20than%20a%20card%21" id="wpa2a_4"><img src="http://www.agileforall.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><br /><p><strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2009/05/14/new-to-agile-invest-in-good-user-stories/' rel='bookmark' title='New to agile?  INVEST in good user stories'>New to agile?  INVEST in good user stories</a> <small>As a &lt;user&gt; I want &lt;function&gt; so that&lt;value&gt;. Above is a very...</small></li>
<li><a href='http://www.agileforall.com/2009/02/23/new-to-agile-remember-one-thing-just-enough-just-in-time/' rel='bookmark' title='New to agile?  Remember one thing: Just enough, just in time'>New to agile?  Remember one thing: Just enough, just in time</a> <small>If you lived through the past few decades you have undoubtedly heard...</small></li>
<li><a href='http://www.agileforall.com/2009/02/20/when-in-doubt-ask-how-will-i-know-ive-done-that/' rel='bookmark' title='When in Doubt Ask &#8220;How Will I Know I&#8217;ve Done That?&#8221;'>When in Doubt Ask &#8220;How Will I Know I&#8217;ve Done That?&#8221;</a> <small>Tired of not knowing exactly what to create or test? Get in...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileforall.com/2010/05/03/new-to-agile-remember-a-user-story-is-more-than-a-card/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New to agile? Learn how to split stories</title>
		<link>http://www.agileforall.com/2009/12/10/new-to-agile-learn-how-to-split-stories/</link>
		<comments>http://www.agileforall.com/2009/12/10/new-to-agile-learn-how-to-split-stories/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 20:00:55 +0000</pubDate>
		<dc:creator>Bob Hartman</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.agileforall.com/?p=1079</guid>
		<description><![CDATA[In my last blog Agile antipattern: Taking on large stories I said I would give you some tips on how to split stories.  First though, it is important to understand WHY splitting a story well can be helpful.  It is about much more than just making smaller stories.  In fact, making smaller stories may be the least [...]
<strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2009/05/14/new-to-agile-invest-in-good-user-stories/' rel='bookmark' title='New to agile?  INVEST in good user stories'>New to agile?  INVEST in good user stories</a> <small>As a &lt;user&gt; I want &lt;function&gt; so that&lt;value&gt;. Above is a very...</small></li>
<li><a href='http://www.agileforall.com/2009/12/09/agile-antipattern-taking-on-large-stories/' rel='bookmark' title='Agile antipattern: Taking on large stories'>Agile antipattern: Taking on large stories</a> <small>Earlier this week I posted a blog entry &#8220;Agile antipattern: Burndown charts...</small></li>
<li><a href='http://www.agileforall.com/2009/12/29/agile-antipattern-dysfunctional-burndown-charts-roundup-post/' rel='bookmark' title='Agile antipatterns: Agile burn-down chart roundup post'>Agile antipatterns: Agile burn-down chart roundup post</a> <small>Do you want to see several different ways agile and scrum burn-down charts...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.agileforall.com/wp-content/uploads/2009/12/story.jpg"><img class="alignleft size-full wp-image-1131" title="story" src="http://www.agileforall.com/wp-content/uploads/2009/12/story.jpg" alt="story" width="180" height="180" /></a>In my last blog <a href="http://bit.ly/4XsfJc">Agile antipattern: Taking on large stories</a> I said I would give you some tips on how to split stories.  First though, it is important to understand WHY splitting a story well can be helpful.  It is about much more than just making smaller stories.  In fact, making smaller stories may be the least important part of splitting stories.  The most important aspect of splitting user stories is to help make sure the team can be successful.  However, that statement has a lot implied in it.  We need to dig a lot deeper to expose the real reasons for splitting user stories and not just do it as a good practice (we must <a href="http://bit.ly/80Yfrr">BE agile vs. DOING agile</a>).  Not that it isn&#8217;t a good practice, just that there are more reasons for doing it!<span id="more-1079"></span></p>
<p>How can the team be more successful by splitting large stories?  Well, my last blog entry on <a href="http://bit.ly/4XsfJc">taking on large stories</a> makes it clear one advantage is stories will fit better into an iteration when they are smaller.  But I said making them smaller was not very important, so there must be more to this than meets the eye, right?  Yes, there is!  Below is a list of 10 reasons why splitting large user stories will help teams be more successful.</p>
<ol>
<li>It may be possible to split a story so some of the work on the original story doesn&#8217;t have to be done.  Ding, ding!  Huge productivity improvement!  Lean principle alert &#8211; eliminate waste!  This reason is good in some many ways you can&#8217;t even begin to count them.  Any time work can be eliminated without affecting the overall value of the product it is a good thing.  Oh, and if after splitting the story we see we don&#8217;t need to do any of it, well that&#8217;s just AWESOME!</li>
<li>Stories can be split to expose more personas.  Sometimes teams see a story as large because there are many different types of personas which must be taken into account.  The story becomes easier to deal with, and we gain clarity, when we see the personas split out separately.</li>
<li>Stories can be split to help expose risk.  We may have user stories which have elements of risk in them.  If we can split the user story to isolate the risk we may be able to avoid the risk altogether.</li>
<li>It may be possible to split a story to ease a transition.  When we upgrade existing functionality we often give users a bit of a shock.  Sometimes we can split stories to give a smaller shock up front and postpone other work until a later release.</li>
<li>A split story may be able to have more people work on it at once (swarming).  If a story is large and requires primarily one type of expertise we tend to let a single person do all of that type of work.  However, a split story may enable others to chip in because some portions of the large chunk of work can be handled by people with less expertise.</li>
<li>Splitting a story may give us more visibility into its true size.  I have seen many teams split a size 13 story into 3 pieces and end up with 3 stories each of size 8!  In fact it isn&#8217;t even that uncommon.  When we have an upper bound on our story size we tend to use that size for anything &#8220;big.&#8221;  This leads to large under-estimating for truly large stories.</li>
<li>A story split may allow us to use a different quality standard for the new stories.  A simple example in a reporting system may be two of the same type of report, but one is run hourly and one is run yearly.  The hourly report may need higher quality than the one run yearly.  This may be a bad example, but I think it gets the concept across.</li>
<li>When a story is split correctly it can help with testing.  Some portions of the story may require full end-to-end testing, while other portions may be able to be tested in a mock environment.</li>
<li>A split story may isolate performance factors.  One portion of the original story may affect performance while another does not.  This may affect prioritization as well as performance testing time.</li>
<li>Of course, splitting stories may just make the original story be in more digestible chunks so they fit better into iterations.</li>
</ol>
<p>Those are all good reasons for splitting user stories, but I haven&#8217;t really told you how to do it.  That&#8217;s because I don&#8217;t have to.  My good friend and fellow founder of the <a href="http://www.agilecooperative.com">Agile Cooperative</a>, <a href="http://www.richardlawrence.info">Richard Lawrence</a>, recently had a blog entry on <a href="http://bit.ly/77ov6J">Patterns for Splitting User Stories</a>.  He explains it much better than I ever could!  In fact, he explains it so well that Dean Leffingwell is going to be using Richard&#8217;s work in his next book.  High praise indeed.</p>
<p>Until next time keep Making Agile a Reality<sup>®</sup> by splitting those large stories!
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileforall.com%2F2009%2F12%2F10%2Fnew-to-agile-learn-how-to-split-stories%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileforall.com%2F2009%2F12%2F10%2Fnew-to-agile-learn-how-to-split-stories%2F&amp;source=AgileForAll&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.agileforall.com%2F2009%2F12%2F10%2Fnew-to-agile-learn-how-to-split-stories%2F&amp;title=New%20to%20agile%3F%20Learn%20how%20to%20split%20stories" id="wpa2a_6"><img src="http://www.agileforall.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><br /><p><strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2009/05/14/new-to-agile-invest-in-good-user-stories/' rel='bookmark' title='New to agile?  INVEST in good user stories'>New to agile?  INVEST in good user stories</a> <small>As a &lt;user&gt; I want &lt;function&gt; so that&lt;value&gt;. Above is a very...</small></li>
<li><a href='http://www.agileforall.com/2009/12/09/agile-antipattern-taking-on-large-stories/' rel='bookmark' title='Agile antipattern: Taking on large stories'>Agile antipattern: Taking on large stories</a> <small>Earlier this week I posted a blog entry &#8220;Agile antipattern: Burndown charts...</small></li>
<li><a href='http://www.agileforall.com/2009/12/29/agile-antipattern-dysfunctional-burndown-charts-roundup-post/' rel='bookmark' title='Agile antipatterns: Agile burn-down chart roundup post'>Agile antipatterns: Agile burn-down chart roundup post</a> <small>Do you want to see several different ways agile and scrum burn-down charts...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileforall.com/2009/12/10/new-to-agile-learn-how-to-split-stories/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Agile antipattern: Code freezes during each iteration</title>
		<link>http://www.agileforall.com/2009/04/23/agile-antipattern-code-freezes-during-each-iteration/</link>
		<comments>http://www.agileforall.com/2009/04/23/agile-antipattern-code-freezes-during-each-iteration/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 17:38:09 +0000</pubDate>
		<dc:creator>Bob Hartman</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Antipattern]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Product Owner]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.agileforall.com/blog/?p=143</guid>
		<description><![CDATA[Over the past 18 months I&#8217;ve encountered a number of teams where it is standard practice to have a code freeze late in the iteration.  The reason given for this was &#8220;to allow QA to test what we created during the iteration.&#8221; I&#8217;m sorry, but I have to be blunt here &#8211; this isn&#8217;t agile! [...]
<strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2009/12/14/agile-antipattern-burndown-wall/' rel='bookmark' title='Agile antipattern: Burndown &#8220;wall&#8221;'>Agile antipattern: Burndown &#8220;wall&#8221;</a> <small>Does your team have an iteration burndown chart (giving credit only for...</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='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/04/09/agile-antipattern-extending-an-iteration/' rel='bookmark' title='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>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Over the past 18 months I&#8217;ve encountered a number of teams where it is standard practice to have a code freeze late in the iteration.  The reason given for this was &#8220;to allow QA to test what we created during the iteration.&#8221; I&#8217;m sorry, but I have to be blunt here &#8211; this isn&#8217;t agile! It leads to 3 main questions:</p>
<ol>
<li>What are the developers doing after the code freeze?</li>
<li>What happens if defects are uncovered after the code freeze?</li>
<li>Why could testing not be done earlier in the iteration?</li>
</ol>
<p>The answers to these questions are often enlightening.  Let&#8217;s take them one at a time:<span id="more-143"></span></p>
<p><strong>1.  What are developers doing after the code freeze?</strong></p>
<p>I&#8217;ve heard two primary answers to this.  The first is that developers are fixing defects during that time.  When pressed, I usually find out these are defects from earlier iterations (although this isn&#8217;t always the case &#8211; more on that later).  If we are fixing defects from previous iterations while QA is working on testing the current iteration, how do we ever get caught up?  Maybe I&#8217;m being a bit dense, but I just don&#8217;t see the math working on this one.</p>
<p>The second most common answer is developers are working ahead on things for the next iteration.  Said a different way, developers are creating yet more untested code before the commitment for the current iteration has been met.  Let&#8217;s think about this model for just a minute.  Let&#8217;s assume we are in iteration 1 and the team does a code freeze on day 7.  Coding occurred for 7 days and testing will go for 3 days.  But the developers start stuff from the next iteration on day 7, so for the next iteration they get 3 days from this iteration and 7 from the following iteration for a total of 10 coding days, followed by 3 testing days.  This cycle continues until the project completes.  Anyone feeling sick yet?  Again, being blunt, this is not agile, it is mini-waterfall or what I prefer to call &#8220;wagile.&#8221;</p>
<p><strong>2.  What happens if defects are discovered after the code freeze?</strong></p>
<p>Again, in Family Feud style, the most common answer is the defects are fixed in the following iteration.  This is a continuation of the first half of the previous answer.  How can the math ever work?</p>
<p>However, this isn&#8217;t always the answer.  Sometimes the answer is developers fix them as they are found.  This answer is MUCH less common, but does exist.  The problem with this answer is very simple: if it is possible for developers to fix defects in real time after the code freeze, why could this not be done earlier in the iteration?  Which leads to question 3&#8230;</p>
<p><strong>3.  Why could testing not be done earlier in the iteration?</strong></p>
<p>Two answers here are equally common.  The first I&#8217;ll cover is the &#8220;it takes too much time/effort to move the code to our QA environment so we only do it once per iteration.&#8221;  I understand the need for a QA environment for testing, but is it necessary for ALL testing?  In most of the cases I&#8217;ve seen it is possible to do a tremendous amount of testing in a development environment to make sure everything is basically working before promotion to a QA environment.  The QA environment should be renamed the Verification environment.  Ideally we want to use it to verify everything works in the stable environment and passes all tests just like it did in the development environment.  So step one is to do more testing in the development environment.  Step two is to use some automation tools to build a stable environment quickly.  When pressed, most teams can create an automated process to do a bare-metal environment build within a short period of time.  It is worth the effort.  If this exists, a new build could be deployed at any time, but at least nightly.  Combine it with <a href="http://www.agileforall.com/2009/04/16/agile-antipattern-using-manual-tests/" target="_blank">automated regression testing</a> and really get some value from it!</p>
<p>The second answer I usually hear is &#8220;we don&#8217;t know what to test until the code is done anyway.&#8221;  Uh oh, can anyone even count how many ways this statement isn&#8217;t agile in nature???  Let&#8217;s remember the agile process:</p>
<ol>
<li>Product Owner (or similar role) creates stories and some basic acceptance criteria.</li>
<li>During iteration planning more acceptance criteria are created based on conversations between tester, developer and Product Owner.</li>
<li>During iteration the developer and tester collaborate on their understanding so the code can be written and acceptance criteria can be turned into tests.</li>
<li>During development the developer can (and should) access any acceptance tests already written to see how their code is doing.</li>
<li>The developer isn&#8217;t &#8220;done&#8221; until the code passes all unit tests and acceptance tests.  Remember the <a href="http://www.scrumalliance.org/articles/106-definition-of-done-a-reference" target="_blank">definition of done</a>!</li>
</ol>
<p>When things are done in this manner the tester ALWAYS knows what to test because they are in close communication with the developer.  Collaboration is vital to agile success.  This is just one example driving it home.</p>
<p>The bottom line for me is there is no legitimate reason for having a code freeze during an iteration.  Teams need to either invest the time/effort to put together a system which doesn&#8217;t require a code freeze, or stop calling themselves agile.  This is a nasty antipattern which will cause confusion or worse.</p>
<p>Thank you for reading.  Until next time I&#8217;ll be Making Agile a Reality™ for my clients by helping them avoid code freezes during iterations.
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileforall.com%2F2009%2F04%2F23%2Fagile-antipattern-code-freezes-during-each-iteration%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileforall.com%2F2009%2F04%2F23%2Fagile-antipattern-code-freezes-during-each-iteration%2F&amp;source=AgileForAll&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.agileforall.com%2F2009%2F04%2F23%2Fagile-antipattern-code-freezes-during-each-iteration%2F&amp;title=Agile%20antipattern%3A%20Code%20freezes%20during%20each%20iteration" id="wpa2a_8"><img src="http://www.agileforall.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><br /><p><strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2009/12/14/agile-antipattern-burndown-wall/' rel='bookmark' title='Agile antipattern: Burndown &#8220;wall&#8221;'>Agile antipattern: Burndown &#8220;wall&#8221;</a> <small>Does your team have an iteration burndown chart (giving credit only for...</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='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/04/09/agile-antipattern-extending-an-iteration/' rel='bookmark' title='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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileforall.com/2009/04/23/agile-antipattern-code-freezes-during-each-iteration/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Agile Architecture &#8211; It is NOT an Oxymoron!</title>
		<link>http://www.agileforall.com/2009/04/06/agile-architecture-it-is-not-an-oxymoron/</link>
		<comments>http://www.agileforall.com/2009/04/06/agile-architecture-it-is-not-an-oxymoron/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 16:31:02 +0000</pubDate>
		<dc:creator>Bob Hartman</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[agile architecture]]></category>
		<category><![CDATA[agile design]]></category>
		<category><![CDATA[architects]]></category>
		<category><![CDATA[developers]]></category>

		<guid isPermaLink="false">http://www.agileforall.com/blog/?p=86</guid>
		<description><![CDATA[Many companies adopting agile have a hard time with the architecture and design of their large systems.  They like the concept of agile, but can&#8217;t understand how to emerge and meet architectural requirements just in time for the team to be able to proceed.  They get to the point where they believe &#8220;agile architecture&#8221; is [...]
<strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2008/11/25/agile-architecture-and-agile-testing-new-courses-on-the-horizon/' rel='bookmark' title='Agile Architecture and Agile Testing &#8211; New Courses on the horizon'>Agile Architecture and Agile Testing &#8211; New Courses on the horizon</a> <small>Exciting news!  Some associates of mine are currently completing work on some...</small></li>
<li><a href='http://www.agileforall.com/2009/02/23/new-to-agile-remember-one-thing-just-enough-just-in-time/' rel='bookmark' title='New to agile?  Remember one thing: Just enough, just in time'>New to agile?  Remember one thing: Just enough, just in time</a> <small>If you lived through the past few decades you have undoubtedly heard...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p><img class="alignleft" title="agile architecture map" src="http://www.agileforall.com/images/AgileArchitectureSteps.gif" alt="" width="137" height="208" />Many companies adopting agile have a hard time with the architecture and design of their large systems.  They like the concept of agile, but can&#8217;t understand how to emerge and meet architectural requirements just in time for the team to be able to proceed.  They get to the point where they believe &#8220;agile architecture&#8221; is an oxymoron like &#8220;jumbo shrimp&#8221; or &#8220;deafening silence.&#8221;  It just doesn&#8217;t make sense to them.</p>
<p>The good news is there is finally starting to be some good information available about agile architecture.  The image on the left is one of many which can be found on the Internet when looking for information about this concept.  Finally, the agile community is putting some effort into answering the question which almost always arises during an agile transformation &#8220;What about the system architecture?&#8221;</p>
<p><span id="more-86"></span></p>
<p>First of all, teams need to change a lot of their thinking about architecture.  Instead of &#8220;how do all of these pieces and parts fit together nicely&#8221;, the thought process needs to revolve around minimizing the cost of change and delivering customer value.  So a good first step is thinking &#8220;how do I separate all of these pieces so change is easy&#8221; and following that up with &#8220;what value can be delivered with small pieces of the overall architecture in place?&#8221;  David Bernstein has an excellent post <a href="http://blog.techniquesofdesign.com/2009/01/01/who-needs-architecture-and-design/" target="_blank">&#8220;Who Needs Architecture and Design?&#8221;</a> on <a href="http://techniquesofdesign.com" target="_blank">his blog</a>.  In it he points out 6 major differences between agile projects and traditional projects when it comes to architecture and design:</p>
<ol>
<li>Defer making decisions until they are needed</li>
<li>Constantly strive to provide value to the customer from day 1</li>
<li>Drive development from acceptance tests and unit tests</li>
<li>Use TDD to create “living specifications”</li>
<li>Seek to encapsulate as much as possible</li>
<li>Know what decisions cannot be easily encapsulated and therefore must be made up front.</li>
</ol>
<p>It is interesting that all 6 of these items involve more than just an architect.  They involve developers and in some cases testers.  Everyone is involved in making sure the system functions properly as a whole, not just the architects!  All of this is covered in David&#8217;s <a href="http://www.agileforall.com/single-course/?coursename=agilearch" target="_blank">Agile Architecture and Development &#8211; Essential Patterns and Practices</a> course.  He is giving the course on June 16-17 in Seattle.  The early-bird discount expires on May 15.  This course WILL sell out, so be sure to sign up early at <a href="http://agilearchitecture-agileforall.eventbrite.com/" target="_blank">http://agilearchitecture-agileforall.eventbrite.com/</a>.  Remember, this is a course for more than just architects.  Developers will get a tremendous amount out of this course &#8211; in fact, many developers say the course is a defining moment for them in their careers because they finally understand how to efficiently emerge code and designs to meet customer requirements rather than just coding to the requirement of the day.</p>
<p>The point of all this is to explain to everyone the concept of agile architecture is valid and not an oxymoron.  It requires different techniques and skills in order to be done properly.  You are not likely to just &#8220;fall into&#8221; doing it correctly.  I have done a bit of research on this topic and there are very few courses available to effectively teach these skills and techniques.  That is one of the reasons I recommend David&#8217;s course to my clients and now publicly on my blog.</p>
<p>Too many companies are starting down the agile path and ask the difficult question &#8220;What about the system architecture?&#8221;  The answer recently got a lot simpler: take David&#8217;s course and find out what to do and how to do it!  OK, if you can&#8217;t do that, then keep a few thoughts in mind and see how far you can get:</p>
<ol>
<li>What can be encapsulated and decided later?</li>
<li>How can things be separated to reduce dependencies and the cost of change?</li>
<li>How can architecture and design decisions be driven by concentrating on delivering value?  In other words, don&#8217;t build architecture or design except as needed to deliver something with tangible value.</li>
<li>Which decisions truly need to be made up front in order to drastically reduce waste later?</li>
</ol>
<p>Numbers 1 and 4 in the list really are two parts of the same thing in many cases.  If you can defer the decision you will likely have to encapsulate it.  If you can&#8217;t encapsulate it then you may have to pay a price later for deferring it.  This isn&#8217;t always true, but it sometimes helps to think of it this way.  However you think about it, you really need to concentrate on <a href="http://www.agileforall.com/2009/02/23/new-to-agile-remember-one-thing-just-enough-just-in-time/" target="_blank">&#8220;just enough, just in time&#8221;</a> or you will overbuild the architecture or design &#8211; which costs extra time and money (and in this economy both are in short supply!).  Number 3 is a key driver for success.  Don&#8217;t just build infrastructure, build it only in the context of delivering value.  The infrastructure will then emerge over time and have exactly the right amount to support the state of the delivered system.  Refactoring will be cheaper than overbuilding as long as the cost of change is kept low.  It seems like more work, but will actually be faster in the end!</p>
<p>Until next time I&#8217;ll be my clients will emerge their architecture and designs in agile ways in order to be Making Agile a Reality™ for their organizations.
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agileforall.com%2F2009%2F04%2F06%2Fagile-architecture-it-is-not-an-oxymoron%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agileforall.com%2F2009%2F04%2F06%2Fagile-architecture-it-is-not-an-oxymoron%2F&amp;source=AgileForAll&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.agileforall.com%2F2009%2F04%2F06%2Fagile-architecture-it-is-not-an-oxymoron%2F&amp;title=Agile%20Architecture%20%26%238211%3B%20It%20is%20NOT%20an%20Oxymoron%21" id="wpa2a_10"><img src="http://www.agileforall.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><br /><p><strong>Related posts:</strong><ol>
<li><a href='http://www.agileforall.com/2008/11/25/agile-architecture-and-agile-testing-new-courses-on-the-horizon/' rel='bookmark' title='Agile Architecture and Agile Testing &#8211; New Courses on the horizon'>Agile Architecture and Agile Testing &#8211; New Courses on the horizon</a> <small>Exciting news!  Some associates of mine are currently completing work on some...</small></li>
<li><a href='http://www.agileforall.com/2009/02/23/new-to-agile-remember-one-thing-just-enough-just-in-time/' rel='bookmark' title='New to agile?  Remember one thing: Just enough, just in time'>New to agile?  Remember one thing: Just enough, just in time</a> <small>If you lived through the past few decades you have undoubtedly heard...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.agileforall.com/2009/04/06/agile-architecture-it-is-not-an-oxymoron/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

