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

<channel>
	<title>From Zero to Agile &#187; Agile</title>
	<atom:link href="http://www.agilar.org/blog/tag/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agilar.org/blog</link>
	<description>The Agilar Blog</description>
	<pubDate>Tue, 10 Jun 2008 22:21:52 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>No Waterfall Trap</title>
		<link>http://www.agilar.org/blog/2008/04/no-waterfall-trap/</link>
		<comments>http://www.agilar.org/blog/2008/04/no-waterfall-trap/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 21:55:47 +0000</pubDate>
		<dc:creator>Xavier Quesada Allue</dc:creator>
		
		<category><![CDATA[Agile]]></category>

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

		<guid isPermaLink="false">http://www.agilar.org/blog/?p=4</guid>
		<description><![CDATA[Discussion of risks and merits of iterative vs. incremental approaches to Agile Software Development.]]></description>
			<content:encoded><![CDATA[<p>I was referred to a post about a keynote speech Jeff Paton gave at XP Days London 2007. It’s called “The waterfall trap for Agile projects” by Gojko Adzik. The initial argument of the post is that iterative is not the same as incremental, something I will not argue. Gojko gives some nice Mona Lisa examples to illustrate the difference. Unfortunately, he goes on to develop some ideas and conclusions that I strongly disagree with and thus this article, in which I have developed my own “Van Gogh” counterexamples.</p>
<p>We will discuss three strategies to non-waterfall software development:</p>
<ul>
<li>Pure incremental</li>
<li>Pure iterative</li>
<li>Iterative <em>and</em> incremental</li>
</ul>
<h3><span id="more-4"></span>Missing the big picture: the “pure incremental” approach</h3>
<p>In this approach to agile software development, it seems that you literally only look at the first story in your backlog, implement it fully, and then scratch your head and ask yourself what comes next. This would imply no analysis and design up front, not even the slightest hint of it (sounds like no Product Backlog and no Product Owner). This is clearly risky in the sense that nobody - nor the development team nor the customer- has any idea on what they are doing or where they are going. They might be moving fast, but in a (potentially) random direction.</p>
<p>Analysis &amp; Design      Delivery 1             Delivery 2             Delivery 3</p>
<p><img src="http://www.agilar.org/blog/images/qm.jpg" alt="" /> <img style="vertical-align: top;" src="http://www.agilar.org/blog/images/vg-inc1.jpg" alt="" /> <img style="vertical-align: top;" src="http://www.agilar.org/blog/images/vg-inc2.jpg" alt="" /> <img src="http://www.agilar.org/blog/images/vg-full.jpg" alt="" /></p>
<p><em>Pure Incremental</em></p>
<p>Honestly I have never heard of any team doing this except for pseudo-Agile teams that think that Agile means no documentation and cowboy coding. In large projects, you normally tend to have  the <em>opposite</em> problem (too much analysis and design up front). In any case, I believe that if this is a serious risk the root cause of the problem lies in the lack of a strong Product Owner. Remember the Product Owner (not the team) is responsible for achieving ROI, so if the team ends up making the sunflowers instead of the self-portrait, it&#8217;s the PO&#8217;s call. I talk more about this at the end of the article.</p>
<h3>Never finished: the “pure iterative” approach</h3>
<p>Which brings us to the opposite tactic: to go pure iterative. Paton and Adzik seem to defend this approach as the best way to minimize the risk of not delivering anything, and this is where I strongly disagree. I actually see the risk of not delivering “anything” as even larger than in the first case.</p>
<p>In pure iterative (or &#8220;spiral development&#8221;), you start with an outline of your application and you iteratively refine it until the customer is satisfied. This would seem to bring the advantage that if the customer is happy with a lower level of detail (a.k.a. “quality”), you would finish your project faster and with full coverage of all the scope. Sounds nice in theory.</p>
<p>Analysis &amp; Design         Delivery 1           Delivery 2         Delivery 3</p>
<p><img style="vertical-align: top;" src="http://www.agilar.org/blog/images/vg-it1.jpg" alt="" /> <img src="http://www.agilar.org/blog/images/vg-it2.jpg" alt="" width="107" height="136" /> <img src="http://www.agilar.org/blog/images/vg-it3.jpg" alt="" /> <img src="http://www.agilar.org/blog/images/vg-full.jpg" alt="" width="107" height="136" /></p>
<p><em> Pure Iterative</em></p>
<p>What’s wrong with this? In my experience, two very dangerous things.</p>
<p>First, you are still in a “big bang” mentality. Until you reach the minimum level of quality that the customer needs, you basically have nothing usable. Taking the example above, if the customer would run out of budget after Delivery 2 but this would prove to be not good enough to go live, he is left with nothing.</p>
<p>Second, by taking a breadth-first approach, you are investing precious development effort on medium and low priority features that might otherwise never be implemented. You are basically distributing your budget among high and low ROI work equally. You are potentially wasting the customer’s money, since if he later decides to scope cut the lower half of the picture, he will already have paid for a large part of it.</p>
<p>In large projects, these are two very realistic risks. If you were to underestimate and run out of budget, it is much safer strategy to deliver 50% of the scope 100% done than to deliver 100% of the scope 50% done. The first scenario will probably get your 50% approved and this might buy you more budget. The second situation will probably make you fail your Phase 1 UAT and get your project cancelled.</p>
<p>So, what’s the ideal approach to reduce risk?</p>
<h3>Iterative and incremental</h3>
<p>I believe the ideal approach much closer to scenario one, but with a catch: some analysis and design up front. This is what is normally referred to as iterative <em>and</em> incremental, a mix of both tactics, but I would heavily bias it towards the incremental.</p>
<p>Analysis &amp; Design     Delivery 1              Delivery 2             Delivery 3</p>
<p><img src="http://www.agilar.org/blog/images/vg-it1.jpg" alt="" /> <img src="http://www.agilar.org/blog/images/vg-incit1.jpg" alt="" /> <img src="http://www.agilar.org/blog/images/vg-incit2.jpg" alt="" /> <img src="http://www.agilar.org/blog/images/vg-full.jpg" alt="" width="107" height="136" /></p>
<p><em>Agile: Iterative &amp; Incremental</em></p>
<p>By first taking a high level approach to defining both the scope and the architecture of your application you eliminate the risk of not knowing where you are going or how to get there.</p>
<p>With this mixed strategy, you get the full benefits of an incremental approach: allowing the customer to leave stories open until the moment they are about to be implemented, maximum ROI, possibility to scope cut or even stop the project at any moment and still get quality working software. And all without any risks of missing the big picture or not being able to evolve the architecture accordingly as the application grows.</p>
<h3>Not converging</h3>
<p>The risk for the team of not converging to a working application is zero, because it is not their job. This is the responsibility of the Product Owner. A well maintained backlog and burndown will clearly show the project planning and thus where it converges. Any change in requirements will be immediately reflected in the backlog, and any new stories will push the delivery date further ahead. As long as all this is decided by the customer, this is fine. The original XP Days keynote speaks of clueless customers who continuously change direction for lack of an understanding of what they want or need. If this were to happen, the most you can do is detect it early on and try to help take corrective actions. In any case, this is a business risk and not so much a software development risk. It is the cost the customer pays for not having a good Product Owner.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilar.org/blog/2008/04/no-waterfall-trap/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
