<?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; Xavier Quesada Allue</title>
	<atom:link href="http://www.agilar.org/blog/author/xavier/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>Unplanned Retrospectives</title>
		<link>http://www.agilar.org/blog/2008/05/unplanned-retrospectives/</link>
		<comments>http://www.agilar.org/blog/2008/05/unplanned-retrospectives/#comments</comments>
		<pubDate>Sun, 11 May 2008 00:41:32 +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=6</guid>
		<description><![CDATA[In Scrum, you&#8217;re expected to do a retrospective at the end of every sprint. The retrospective is the moment where the team is reflects and improves their way of working. This is one of the fundamental inspect and adapt checkpoints of Scrum that makes it so great. But should retrospectives always happen at a fixed [...]]]></description>
			<content:encoded><![CDATA[<p>In Scrum, you&#8217;re expected to do a retrospective at the end of every sprint. The retrospective is the moment where the team is reflects and improves their way of working. This is one of the fundamental inspect and adapt checkpoints of Scrum that makes it so great. But should retrospectives always happen at a fixed time, at the end of the sprint?</p>
<p><span id="more-6"></span></p>
<p>The problem I&#8217;ve noticed is that people don&#8217;t feel comfortable being asked to think about how to improve their way of working at a certain fixed point in time. It&#8217;s not natural. So what about being more flexible? Doing retrospectives whenever and wherever the team bumps into problems and improvement opportunities?</p>
<p>The result of forced retrospectives is low interest in the activity, lack of participation, maybe even absenteeism; this results in low quality feedback coming out of the session. Some people don&#8217;t talk, some people talk about stuff that has nothing to do with the way of working but with the product itself (&#8221;the problem we have is that our code base sucks, we need to refactor&#8221;), and in general you as ScrumMaster get the feeling that -even though it was valuable- you could&#8217;ve done much more with your team&#8217;s time. Like going for a beer.</p>
<p>My initial approach to the problem was to think that my retrospectives sucked. I took it up as my responsibility: I put up a Post-it saying &#8220;Organize better retrospectives&#8221; and I undusted Esther Derby and Diana Larsen&#8217;s book and put it in my to-read pile. Alas, I never got around to doing anything (maybe because we were doing &#8220;good enough&#8221; or maybe because I had other priorities). The project went on to succeed without any improvements in the retrospectives, so nobody complained too much.</p>
<p>Then I moved to a new project and a new team. Now, when you start coaching an implementation of Agile in a large team, during the first month or two it doesn&#8217;t really make a lot of sense to organize a retrospective. Why? Because you are in the middle of changing so many things, that the question &#8220;how can we improve&#8221; doesn&#8217;t make much sense. You (as Agile Coach) have a pretty good idea of what has to be done next, the team is busy doing it, and basically everything is improving so fast already and there is so little experience with the new way of working that most of the questions you would get at a forced retrospective are things that you still haven&#8217;t gotten around to implementing yet. Retrospectives make most sense in two situations: when the methodology is relatively stable and teams are seeking ways to improve, and when things are going wrong and people want to be heard out. When a team is at the &#8220;Shu&#8221; level and you are coaching them, and you are doing a good job, most questions that arise tend to be &#8220;coming up&#8221; items in your checklist.</p>
<p>But then something happened. During meetings that had other purposes, I noticed that issues would come up and people would start complaining about things. If you think about it, this tends to happen a lot: someone tells a joke about how things work at the company and everyone laughs, or someone complains about something, or gives an excuse and you hear mumbled agreements in the crowd. People were talking about real problems that are not being solved.</p>
<p>My antennas went up. This is the type of feedback you want at your retrospectives! Why wait? My proposal: interrupt the meeting and start discussing the issue. This is the perfect time to do it: you have a person that has openly put it forward, you have a crowd that supports him, and nobody is forcing anybody to talk about this. Leave the original purpose of the meeting aside for a moment, and switch to retrospective mode! The feedback and openness you get from the team at this moment is invaluable. As long as you are there to coach the impromptu retrospective, it should be possible to come up with concrete actions in a short time and still keep the original purpose of the meeting within sight.</p>
<p>And the best thing is that as long as these situations happen often enough, you don&#8217;t have to organize a formal retrospective at the end of the sprint&#8230; and you can go for a beer with your team instead!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilar.org/blog/2008/05/unplanned-retrospectives/feed/</wfw:commentRss>
		</item>
		<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>
