<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
  <title>L'Agilitateur - In English</title>
  <link>http://agilitateur.azeau.com/</link>
  
  <description>Développement logiciel et méthodes agiles</description>
  <language>fr</language>
  <pubDate>Thu, 15 Oct 2009 11:43:50 +0200</pubDate>
  <copyright />
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Agilitateur-en" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
    <title>How does design get done on an Agile Project ?</title>
    <link>http://agilitateur.azeau.com/post/2008/07/07/How-does-design-get-done-on-an-Agile-Project</link>
    <guid isPermaLink="false">urn:md5:7f7fe7e58207d20ec970b4b989f03780</guid>
    <pubDate>Mon, 07 Jul 2008 12:11:00 +0200</pubDate>
    <dc:creator>Oaz</dc:creator>
        <category>In English</category>
            
    <description>&lt;p&gt;I watched a great presentation by &lt;a href="http://codebetter.com/blogs/jeremy.miller/"&gt;Jeremy D. Miller&lt;/a&gt;&amp;nbsp;: &lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2008/07/06/how-does-design-get-done-on-an-agile-project.aspx"&gt;How does design get done on an Agile Project ?&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Jeremy shows through multiple examples the kind of design issues you inevitably face during an project and explains how to handle them in an agile way.&lt;/p&gt;    &lt;p&gt;I converted the slides of his presentation into a flash document in order to get a side by side view of slides and video on this web page (though you'll have to click on the slides to go to next one).&lt;/p&gt;


&lt;p&gt;Enjoy&amp;nbsp;!&lt;/p&gt;

&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" height="330" width="440"&gt;&lt;br /&gt; &lt;param name="movie" value="http://www.azeau.com/dotclear/public/agilitateur/HowDoesDesignGetDoneOnAnAgileProject.swf" /&gt;
&lt;param name="quality" value="high" /&gt;
&lt;param name="wmode" value="transparent" /&gt;
&lt;param name="bgcolor" value="#FFFFFF" /&gt;
      &lt;embed src="http://www.azeau.com/dotclear/public/agilitateur/HowDoesDesignGetDoneOnAnAgileProject.swf" quality="high" bgcolor="#FFFFFF" height="330" width="440" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt; 
&lt;/object&gt;
&lt;br/&gt;
&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="266" id="viddler_f19847a5"&gt;&lt;param name="movie" value="http://www.viddler.com/simple/f19847a5/" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed src="http://www.viddler.com/simple/f19847a5/" width="437" height="266" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler_f19847a5" &gt;&lt;/embed&gt;&lt;/object&gt;
</description>
    
    
    
          <comments>http://agilitateur.azeau.com/post/2008/07/07/How-does-design-get-done-on-an-Agile-Project#comment-form</comments>
      <wfw:comment>http://agilitateur.azeau.com/post/2008/07/07/How-does-design-get-done-on-an-Agile-Project#comment-form</wfw:comment>
      <wfw:commentRss>http://feeds.feedburner.com/Agilitateur/comments/224</wfw:commentRss>
      </item>
    
  <item>
    <title>Pod pod pod pod</title>
    <link>http://agilitateur.azeau.com/post/2007/08/09/Pod-pod-pod-pod</link>
    <guid isPermaLink="false">urn:md5:d463bb87fdad5c0544e058880b935107</guid>
    <pubDate>Thu, 09 Aug 2007 23:55:00 +0200</pubDate>
    <dc:creator>Oaz</dc:creator>
        <category>In English</category>
            
    <description>    &lt;p&gt;Thanks to &lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/08/06/fred-george-is-blogging.aspx"&gt;Jeremy D. Miller&lt;/a&gt; I just discovered a place that is worth a web surf: &lt;a href="http://processpeoplepods.blogspot.com/"&gt;Process, People, and Pods&lt;/a&gt;. Fred George started to blog less than a month ago and, in a few articles, he described the very nature of agile software development.&lt;br /&gt;
From &lt;a href="http://processpeoplepods.blogspot.com/2007/07/secret-assumption-of-agile.html"&gt;agility inner secret&lt;/a&gt; to &lt;a href="http://processpeoplepods.blogspot.com/2007/07/masters-journeymen-and-apprentices-part.html"&gt;encounters&lt;/a&gt; of the &lt;a href="http://processpeoplepods.blogspot.com/2007/07/masters-journeymen-and-apprentices-part_19.html"&gt;third&lt;/a&gt; &lt;a href="http://processpeoplepods.blogspot.com/2007/07/masters-journeymen-and-apprentices-part_23.html"&gt;kind&lt;/a&gt; (of developers) and path to &lt;a href="http://processpeoplepods.blogspot.com/2007/07/building-better-programmer.html"&gt;development&lt;/a&gt; &lt;a href="http://processpeoplepods.blogspot.com/2007/07/building-better-programmer-part-2.html"&gt;wisdom&lt;/a&gt;, we go through all what we would like to tell about our jobs if we knew the words for that.&lt;/p&gt;


&lt;p&gt;Oh, and did I tell you about the pods? You should really &lt;a href="http://processpeoplepods.blogspot.com/2007/08/pods-ideal-agile-team-structures.html"&gt;read&lt;/a&gt; &lt;a href="http://processpeoplepods.blogspot.com/2007/08/ideal-skill-ratios-in-pods.html"&gt;those&lt;/a&gt; &lt;a href="http://processpeoplepods.blogspot.com/2007/08/ideal-development-skills-for-pods.html"&gt;ones&lt;/a&gt; too!&lt;/p&gt;</description>
    
    
    
          <comments>http://agilitateur.azeau.com/post/2007/08/09/Pod-pod-pod-pod#comment-form</comments>
      <wfw:comment>http://agilitateur.azeau.com/post/2007/08/09/Pod-pod-pod-pod#comment-form</wfw:comment>
      <wfw:commentRss>http://feeds.feedburner.com/Agilitateur/comments/76</wfw:commentRss>
      </item>
    
  <item>
    <title>The Time Dilation of an Ideal Day</title>
    <link>http://agilitateur.azeau.com/post/2006/11/17/The-Time-Dilation-of-an-Ideal-Day</link>
    <guid isPermaLink="false">urn:md5:713afc8c799c2a57d2b2420307959f5c</guid>
    <pubDate>Fri, 17 Nov 2006 01:02:00 +0100</pubDate>
    <dc:creator>Oaz</dc:creator>
        <category>In English</category>
            
    <description>Ideal Day, Story Points, Load Factor, Velocity... Lots of concepts for a simple goal : predicting the amount of work that will get done for a given date. Anybody who went through this kind of measurement system probably tried to grasp its validity. Dave Churchville wonders &lt;a target="_blank" href="http://www.extremeplanner.com/blog/2006/11/agile-estimating-how-long-is-ideal-day.html"&gt;"How long is an ideal day ?"&lt;/a&gt; in calendar time. Ed Gibbs &lt;a target="_blank" href="http://edgibbs.com/2006/11/05/from-story-points-to-ideal-days/"&gt;rebounds&lt;/a&gt; on the difficulty that people have with story points when time units come more naturally.&lt;br /&gt;
&lt;br /&gt;
I'm no exception. I used plain story points for a while but I recently started to trick this tool to get (I hope) a better matching between the developer estimates and the amount of work units.&lt;br /&gt;    Estimating in story points relative sizes is not easy because you quickly loses the connection with calendar time. A developer will provide much more consistent estimates with time units : "I can do that in a couple of hours", "It will take two or three days". These estimates might  not indeed be accurate. On one hand, developers are sometimes optimistic because they underestimate the time needed to write the full range of tests, because they forget that some documentation has to be updated, ... On the other hand, developers can be pessimistic : a difficult task can be seen as a huge amount of work, a tedious one might look like lasting forever, ...&lt;br /&gt;
The estimates might not be accurate but they will probably be consistent. When someone asks you such a figure, you quickly imagine the size of the code you need to write and you transform this size into your own time unit system. As a consequence, the same task will be given the same figure in time units.&lt;br /&gt;
&lt;br /&gt;
Now, the question is : is there a linear transformation between the developer personal ideal day (DPID) and a "standardized" ideal day?&lt;br /&gt;
I assume that this transformation is not linear. I have no evidence for this assumption but, in my current environment, I often get the feeling that short tasks tend to be underestimated and long tasks tend to be overestimated. I think I need some logarithmic transformation.&lt;br /&gt;
&lt;br /&gt;
Actually, I prefer to have a transformation from DPID to story points. The reason is simple. I think that story points are better for a planning game. When you mention a ratio between "ideal" days and calendar days, there is always someone to make it known that the developers are lazy if this ratio is less than 1. The story point is a much more neutral unit because it looks like the cost is inherent to the work unit.&lt;br /&gt;
&lt;br /&gt;
I proposed the following scale to the team and we started to test it:&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;img alt="" src="http://www.azeau.com/dotclear/public/agilitateur/TimeDilation1.png" /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Basically, the developer has to decide if the work unit:&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;&lt;th width="33%"&gt;&lt;br /&gt;&lt;/th&gt;&lt;th width="33%"&gt;Developer Personal Ideal Hours&lt;/th&gt;&lt;th&gt;Points&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;
&lt;tr&gt;&lt;td&gt;will take one hour or so&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;
&lt;tr&gt;&lt;td&gt;is between one hour and one day (more or less half a day)&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;
&lt;tr&gt;&lt;td&gt;will take one day or so&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;
&lt;tr&gt;&lt;td&gt;is between one day and one week (more or less half a week)&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;
&lt;tr&gt;&lt;td&gt;will take one week or so&lt;/td&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;
&lt;tr&gt;&lt;td&gt;is really longer than a week (about two weeks)&lt;/td&gt;&lt;td&gt;80&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
I found out that the &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Fibonacci_number"&gt;Fibonacci numbers&lt;/a&gt; (which are &lt;a target="_blank" href="http://www.amazon.com/Agile-Estimating-Planning-Robert-Martin/dp/0131479415/ref=pd_lpo_k2_dp_k2a_2_img/104-8033738-0911932?ie=UTF8"&gt;sometimes used&lt;/a&gt; for story points) were perfectly fitting this model. The idea is that we can try to adress the "relative sizes" dilemma by assuming that a 1 hour task + a half day task (in the developer own time system) will actually take as long as a one day task in the same system. Same thing for a 1 day task + a half week task matching a 1 week task.&lt;br /&gt;
&lt;br /&gt;
These figures lead to the following graph. A short period of time represents more points than a longer one.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="" src="http://www.azeau.com/dotclear/public/agilitateur/TimeDilation2.png" /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
I don't know if this model will provide better results in terms of stability of the velocity but I hope it will help to remove the potential mismatchs between an iteration full of small tasks and another one containing a few big ones.&lt;br /&gt;
Anyway, time (dilated or not) will tell...&lt;br /&gt;</description>
    
    
    
          <comments>http://agilitateur.azeau.com/post/2006/11/17/The-Time-Dilation-of-an-Ideal-Day#comment-form</comments>
      <wfw:comment>http://agilitateur.azeau.com/post/2006/11/17/The-Time-Dilation-of-an-Ideal-Day#comment-form</wfw:comment>
      <wfw:commentRss>http://feeds.feedburner.com/Agilitateur/comments/66</wfw:commentRss>
      </item>
    
  <item>
    <title>Black-box project management</title>
    <link>http://agilitateur.azeau.com/post/2006/11/03/Black-box-project-management</link>
    <guid isPermaLink="false">urn:md5:07b97accbf7ec44ecd64307d6f1d4068</guid>
    <pubDate>Fri, 03 Nov 2006 22:06:00 +0100</pubDate>
    <dc:creator>Oaz</dc:creator>
        <category>In English</category>
            
    <description>I love metaphors on project management. I just read a good one by Tom Looy : &lt;a target="_blank" href="http://conversationswithandrew.blogspot.com/2006/05/how-long-is-piece-of-string.html"&gt;"How Long is a Piece of String?"&lt;/a&gt;. You can get an estimate by looking at it but you will get a more accurate value by measuring it with a ruler. Estimating is not an easy job, especially when it comes to predicting when a piece of software is done. In the early stages of a software project, when you can barely estimate and certainly not measure anything, fixing scope, cost and dates is impossible.&lt;br /&gt;
&lt;br /&gt;
Years ago, I was appointed software project manager for the first time. Being a software developer, I intuitively knew that I should be careful with scope, cost and dates issues. I was reluctant to draw a full gannt chart too early in the project because I suspected that people would rely too heavily on it. The projects director I was reporting to told me : "This is not a way to run a project. You must list every task for the project, estimate them and put them in the chart then you will get a release date. From there you will start tracking the team progress". I complied with the order.&lt;br /&gt;
Any experienced project manager obviously knows what happened : as the first tasks were not completed on time, the release date started to slip.&lt;br /&gt;
The estimates were indeed very bad. Half of the developers had just graduated from university and relying on their estimates was the worst thing to do but the rookie project manager didn't know that.&lt;br /&gt;
&lt;br /&gt;
Now imagine this project is a big black box with 3 levers...&lt;br /&gt;    The first one is labelled 'product'. It shows the number of features implemented by the project weighted by their associated quality level (which is either explicit or implicit).&lt;br /&gt;
The second one is labelled 'cost'. It represents the global cost of the project from hardware to human resources including the productivity of each resource.&lt;br /&gt;
The last one is labelled 'duration' and is the release date.&lt;br /&gt;
As a project manager, you only have 2 hands so that you can grip 2 out of 3 levers and watch the 3rd one move freely...&lt;br /&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;img alt="Black box" src="http://www.azeau.com/dotclear/public/agilitateur/blackbox.png" /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Listing every possible task for the project means that you set a list of feature and decide some quality for each of them : the left hand is on the 'product' lever.&lt;br /&gt;
Estimating these tasks means that you evaluate a cost for each of them : the right hand is on the 'cost' lever.&lt;br /&gt;
Now you can start watching the 3rd lever (the release date) moving upwards !&lt;br /&gt;
&lt;br /&gt;
Of course, time is money. If you don't want to see the 3rd lever being stuck centuries from today (which would mean a project that has no way of ending), you've got to move the cost lever upwards for paying the resources extra time.&lt;br /&gt;
This is exactly what happened in my first project.&lt;br /&gt;
At some point, people said that we could not afford releasing after a given date : we had to catch this damned 'duration' lever and hold it tight.&lt;br /&gt;
We had to choose a hand to do the job. As somebody had promised a list of features to the customer, the left hand was not available. The right hand had to let the 'cost' lever go freely and grip the 'duration' lever.&lt;br /&gt;
&lt;br /&gt;
Guess what ? The 'cost' lever started to move upwards !&lt;br /&gt;
People were pushed to stay later and come to work on week ends "to give some fresh air to the project", in the general manager own words.&lt;br /&gt;
The productivity fell as developers got depressed. They were indeed paying the cost rise.&lt;br /&gt;
The customer had to pay too. In this period, I was asked to find every possible woolliness in the customer requirement documents in order to get some extra cash. "Hey Mr Customer ! What you want now is not exactly what you wrote, You've got to pay for it !"&lt;br /&gt;
&lt;br /&gt;
No need to say that when the cost rose too much someone said "Stop !". The right hand being on the 'duration' lever, the left hand had to stop the 'cost' lever before it hits the ceiling...&lt;br /&gt;
Cost and duration were now in control. As it was still impossible to tell the customer that features had to be dropped, the quality level dramatically fell as the free 'product' lever went downwards.&lt;br /&gt;
&lt;br /&gt;
Eventually, features were dropped and someone had to explain to the customer why this project was a &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Death_march_%28software_development%29"&gt;death march&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Most of the time, holding the 'cost' and 'duration' lever from the beginning is the most sensible solution because : &lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;If you hold onto 'product' and finish below expected schedule, your customer misses the opportunity to get some extra features&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;If you hold onto 'product' and finish beyond expected schedule, you're late and the customer is not happy&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
I once read that "project plans are either lucky or late" but, actually, project plans are either &lt;em&gt;lazy&lt;/em&gt; or late : fixing a scope does not bring any guarantee that the product will be available on schedule and budget and in the same time, it makes no sense to stick to a scope when there's some room left.&lt;br /&gt;
That being said, sometimes feature can be really mandatory (e.g. safety issues). In these cases, focusing on cost and duration is meaningless because being late is less important than being out of scope.&lt;br /&gt;
&lt;br /&gt;
In the end, the only thing we should care about is knowing, at any time, where our hands are, which levers are in control and which lever is currently moving freely so that we can have a look at it.&lt;br /&gt;</description>
    
    
    
          <comments>http://agilitateur.azeau.com/post/2006/11/03/Black-box-project-management#comment-form</comments>
      <wfw:comment>http://agilitateur.azeau.com/post/2006/11/03/Black-box-project-management#comment-form</wfw:comment>
      <wfw:commentRss>http://feeds.feedburner.com/Agilitateur/comments/58</wfw:commentRss>
      </item>
    
  <item>
    <title>To Fix or Not to Fix : That is the Question</title>
    <link>http://agilitateur.azeau.com/post/2006/06/12/To-Fix-or-Not-to-Fix-%3A-That-is-the-Question</link>
    <guid isPermaLink="false">urn:md5:3d3858bd7f298abf6fe7468e429e4807</guid>
    <pubDate>Mon, 12 Jun 2006 20:41:35 +0200</pubDate>
    <dc:creator>Oaz</dc:creator>
        <category>In English</category>
            
    <description>Dave Churchville talks about &lt;a target='_blank' href='http://www.extremeplanner.com/blog/2006/06/software-misconceptions-revisited.html'&gt;things you should care about when planning bug fixes&lt;/a&gt;. I totally agree with his point. On one hand, it does not make sense to implement more and more features without fixing serious hazards first. This is sometimes called &lt;a target='_blank' href='http://c2.com/cgi/wiki?CreepingFeaturitis'&gt;creeping featuritis&lt;/a&gt;. On the other hand, stopping any shipping till every bug is fixed can make more harm than good : a buggy software can provide more value to the user than no software at all.&lt;br /&gt;
I must confess that I had not fully understood the arguments in his &lt;a target='_blank' href='http://www.extremeplanner.com/blog/2006/06/biggest-misconception-in-software.html'&gt;first post&lt;/a&gt;. Indeed, one of the biggest &lt;i&gt;misconception in software development is that bugs don't need to be prioritized just like any other feature&lt;/i&gt;. &lt;br /&gt;
That being said, it is a wise decision to let the business, the customer or the product owner, decide if the development team should implement new features or fix a few more bugs. Now the problem is : does the business have enough information to make a good decision ?&lt;br /&gt;    The person, or group of persons, making the decision must:&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
&lt;li&gt;be aware of the final user needs at a fine level of details&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;know the technical impacts of an issue whether it is fixed or not&lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
Regarding #1, one could tell that it's the business people job to make decision regarding actual user needs. Things are not so simple.&lt;br /&gt;
If we are talking about in-house software development and the final users are a group of people working at the next floor, they are probably involved in the decision process, or, at least, someone will ask them when a decision on a tricky issue is needed.&lt;br /&gt;
If we are talking about a software shop and the final users are people working in other companies, things are getting touchy. In this case, the product owner probably has a customer's business background but she might not have the knowledge required by every position in this business. It is ok when prioritizing features at a coarse level but it can turn into dice rolling when dealing with detailed activity of a real user.&lt;br /&gt;
&lt;br /&gt;
Listing #2 as a pre-requisite for business people might look counter intuitive : why should we care about technical details when deciding on which bug or feature the development team should work on ? The answer lies in the nature of a bug.&lt;br /&gt;
When a feature is not implemented, there are no side effects. One can find a workaround to fulfill the same needs but does not get unexpected behaviour.&lt;br /&gt;
When a bug is not fixed, it is a different story. The bug might be hidden in a lower layer of the software. From there it can have impacts on many features of the application. These "other" bugs were not discovered (yet). It is just a matter of test coverage. Of course, we could just do "more tests" but then the economic argument (do not spend time on fixing bugs because time is money) is no longer valid. Things turn into an arbitration between spending time on tests/spending time on bug fixes/spending time on new features...&lt;br /&gt;
&lt;br /&gt;
I have no answer for these two items but I know for sure that letting the business people unilaterally making the fix/not fix decisions is as bad as letting the developers or the QA people making these decisions. At some point, all these people have to talk to each other to find an agreement regarding the prioritization of bug fixes.&lt;br /&gt;</description>
    
    
    
          <comments>http://agilitateur.azeau.com/post/2006/06/12/To-Fix-or-Not-to-Fix-%3A-That-is-the-Question#comment-form</comments>
      <wfw:comment>http://agilitateur.azeau.com/post/2006/06/12/To-Fix-or-Not-to-Fix-%3A-That-is-the-Question#comment-form</wfw:comment>
      <wfw:commentRss>http://feeds.feedburner.com/Agilitateur/comments/59</wfw:commentRss>
      </item>
    
  <item>
    <title>Every Process is an Iterative Waterfall</title>
    <link>http://agilitateur.azeau.com/post/2006/05/23/Every-Process-is-an-Iterative-Waterfall</link>
    <guid isPermaLink="false">urn:md5:becd428c4d34994712f5f70114b50f32</guid>
    <pubDate>Tue, 23 May 2006 05:55:00 +0200</pubDate>
    <dc:creator>Oaz</dc:creator>
        <category>In English</category>
            
    <description>Dave Nicolette &lt;a target="_blank" href="http://dnicolet1.tripod.com/agile/index.blog?entry_id=1480142"&gt;raises concerns&lt;/a&gt; about organisations moving to agile development while appointing "traditionally-minded" managers. Risk #1 is that these managers turn the agile processes upside down by transforming them into a &lt;a target="_blank" href="http://kanemar.wordpress.com/2005/11/03/the-staggered-iterative-waterfall-anti-pattern-part-1/"&gt;Staggered Iterative Waterfall&lt;/a&gt; as described by Kane Mar.&lt;br /&gt;
I deeply agree with the key statement of those articles : agility's main duty is improvement of interactions between individuals with the help of suitable processes. It is not about focusing on a well-polished process aimed at eliminating every possible waste in human activities. However, I do not subcribe to the &lt;a target="_blank" href="http://www.davenicolette.net/articles/slouching_towards_waterfall.html"&gt;RUP-bashing movement&lt;/a&gt; that seems to result from it.&lt;br /&gt;    It does not take a long time to realize that performing sequentially across consecutive iteration the analysis, design/coding and testing activities is a waste of opportunities. In the Staggered Iterative Waterfall &lt;a target="_blank" href="http://kanemar.wordpress.com/files/2005/12/Staggered-Iterative-Waterfall.jpg"&gt;pictured by Kane Mar&lt;/a&gt;, feedback that could happen inside an iteration takes three of them to arise.&lt;br /&gt;
Nevertheless, performing all the activities in the same iteration is not an easy job. For example, in an eXtreme Programming case :&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;The iteration plan needs the user stories to be written and estimated before the iteration start (we have to know which stories fit into the iteration). As a consequence, the time spent by the customer to workout the story must be shortened to its minimum. Every minute spent writing a story without interacting with the developers is a loss of feedback.&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;The customer tests must be run after (and also before) the iteration deliverable is built but before the iteration is over. This implies that customer tests are heavily automated and written as soon as coding starts. Failing to do so means that developers will not be able to produce value while the deliverable candidate is tested.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
It is not an easy job but great teams can certainly achieve it to a certain extent.&lt;br /&gt;
&lt;br /&gt;
The question is : can they &lt;em&gt;fully&lt;/em&gt; achieve it ?&lt;br /&gt;
Obviously not.&lt;br /&gt;
&lt;br /&gt;
In most projects, the best on-site customer (or group of on-site customers) cannot stay on the playground full time and simultaneously being fully aware the underlying customer activities. These on-site customers must be as close as possible to the development team but they have to stay in touch with their own businesses.&lt;br /&gt;
The problem is that you cannot put the whole world into a single room.&lt;br /&gt;
This is the reason why the stories describing the customer business need to be partly written off-site in an high level analysis activity. This is the reason why the the customer tests cannot be fully written while designing the system. The deliverable must be checked against some off-site &lt;a target="_blank" href="http://c2.com/cgi/wiki?ExploratoryTesting"&gt;exploratory testing&lt;/a&gt; activities involving other users.&lt;br /&gt;
&lt;br /&gt;
The combination of those two activities with the software system development enhances the ability of the customer to think about her business process in a &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Waterfall_%28M._C._Escher%29"&gt;true iterative waterfall&lt;/a&gt;.&lt;br /&gt;
Maybe we can call that "Iterative &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Business_process_modeling"&gt;Business Process Modeling&lt;/a&gt;". I'm far from being a BPM expert (just started reading stuff on that subject) but, intuitively, it looks like a good name.&lt;br /&gt;
The idea is that two processes, ran on each side, can reinforce each other. Feedback from the real user activity helps the developers to build the expected system while feedback from a delivered system helps real users to think about the way they work.&lt;br /&gt;
&lt;br /&gt;
When going through the iterations, this process can be pictured as following.&lt;br /&gt;
The core system development activities are performed in each iteration with agile interactions between individuals at their peak.&lt;br /&gt;
&lt;br /&gt;&lt;img alt="Agile Iterative Waterfall" src="http://www.azeau.com/dotclear/public/agilitateur/IterativeWaterfall.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
Now let's have a look at the RUP-bashing thing.&lt;br /&gt;
&lt;a target="_blank" href="http://www.davenicolette.net/articles/slouching_towards_waterfall.html"&gt;&lt;em&gt;The four phases of a RUP iteration look like a miniature waterfall: Inception, Elaboration, Construction, and Transition. [...] The reason RUP is used for iterative waterfall processes and not for agile processes is simply that it is unnecessary in a true agile process; its four phases become unproductive administrative overhead.&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
So the point is that RUP does not work for agile processes. I could just argue that &lt;a target="_blank" href="http://c2.com/cgi/wiki?IfXpIsntWorkingYoureNotDoingXp"&gt;"If you cannot run a RUP framework in an agile mode then you're not running a RUP framework"&lt;/a&gt; but I do not like this &lt;a target="_blank" href="http://www.libervis.com/blogs/15/Jastiv/eric_raymond_and_the_rtfm_jerks"&gt;kind of extremism&lt;/a&gt;.&lt;br /&gt;
It looks like there's a big misundertanding regarding the RUP phases. Inception, Elaboration, Construction and Transition are not performed &lt;em&gt;inside a single iteration&lt;/em&gt;. They are the &lt;a target="_blank" href="http://www-128.ibm.com/developerworks/rational/library/content/RationalEdge/may04/4763_fig2.jpg"&gt;phases of a release&lt;/a&gt; and each of these phases contains one iteration or more. Inside an iteration, you can do strict Waterfall, you can perform a &lt;a target="_blank" href="http://fr.wikipedia.org/wiki/Cycle_en_V"&gt;V-shape&lt;/a&gt; or you can blend all the activities in the agile way. You could overlap the iterations but this is considered as a &lt;a target="_blank" href="http://consulting.dthomas.co.uk/ooad_articles_resources/More_RUP_anti-patterns.pdf"&gt;RUP Anti-pattern&lt;/a&gt;. It is advisable to do frequent reviews and have multi-skilled teams. Both of them are agile practices.&lt;br /&gt;
The RUP phases are the "macroscopic tempo". In a simplistic view of an agile instanciation of RUP, the inception phase is merely the first draft of user stories before development begins. The elaboration phase shows an important milestone : when it is over, the team considers that every "major" user story is implemented. The vision is established and the risk of a project failure is now lowered. The construction phase is about polishing the system until every customer need is implemented. The transition phase hands over the application to the users.&lt;br /&gt;
&lt;br /&gt;
RUP is not inherently less agile than methodologies known for their agility. It is just &lt;a target="_blank" href="http://www.ddj.com/dept/architect/184415460"&gt;a matter of usage&lt;/a&gt;. Its versatile nature support iterative waterfall processes including a bit of administrative tasks that inevitably happen in the real life with its &lt;em&gt;natural time and space boudaries&lt;/em&gt;. Hence, one could even argue that RUP is more able to cope with human concerns than &lt;a target="_blank" href="http://c2.com/cgi/wiki?PureXp"&gt;strict methodologies&lt;/a&gt;.&lt;br /&gt;</description>
    
    
    
          <comments>http://agilitateur.azeau.com/post/2006/05/23/Every-Process-is-an-Iterative-Waterfall#comment-form</comments>
      <wfw:comment>http://agilitateur.azeau.com/post/2006/05/23/Every-Process-is-an-Iterative-Waterfall#comment-form</wfw:comment>
      <wfw:commentRss>http://feeds.feedburner.com/Agilitateur/comments/57</wfw:commentRss>
      </item>
    
</channel>
</rss>
