<?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>let x=x &#187; agile</title>
	<atom:link href="http://www.crazymcphee.net/x/tag/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.crazymcphee.net/x</link>
	<description>programming idiom and methodology</description>
	<lastBuildDate>Tue, 13 Jul 2010 21:56:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Throw it away and write another one</title>
		<link>http://www.crazymcphee.net/x/2010/05/30/throw-it-away-and-write-another-one/</link>
		<comments>http://www.crazymcphee.net/x/2010/05/30/throw-it-away-and-write-another-one/#comments</comments>
		<pubDate>Sun, 30 May 2010 08:47:10 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[professional practice]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[ANTLR]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[craftsmanship]]></category>
		<category><![CDATA[emergent design]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[refactor]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[test driven design]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=557</guid>
		<description><![CDATA[Most developers familiar with agile methods are familiar with the idea of the spike. A spike is a time-boxed task that concentrates on clarifying the unknowns in your project. Usually these are technological (&#8220;can this be done with this technology?&#8221;) but they are also sometimes in the area of the business domain (&#8220;is this a [...]]]></description>
			<content:encoded><![CDATA[<p>Most developers familiar with agile methods are familiar with the idea of the <em>spike</em>. A spike is a time-boxed task that concentrates on clarifying the unknowns in your project. Usually these are technological (&#8220;can this be done with this technology?&#8221;) but they are also sometimes in the area of the business domain (&#8220;is this a good idea?&#8221;) too. One key idea is that the at the end of the spike, it is thrown away. It&#8217;s not supposed to be used as production code, it&#8217;s just supposed to answer some questions about the project, to validate or invalidate particular approaches to a problem, to provide further clarity around unknowns, to explore risk, to help with estimation, etc. I think this can be a useful general idea when dealing with technology, even in a &#8220;production&#8221; context.</p>
<p>Recently I was learning <a href="http://www.antlr.org">ANTLR</a>, trying to decide whether this was a right technology to pursue a particular project which involved parsing a preexisting message format. After a week of a spike, we decided that it was worth pursuing and started on earnest on the grammar for our project. However a week into this process, I had an epiphany &#8230; I was doing some things wrong with the ANTLR grammar which were now slowing progress in adding the new characteristics it needed to be complete. Many developers know this feeling; the features of my grammar that I had built over the first week were naive and now hampering it from expanding into the new requirements. I took it on myself to kill the entire grammar and start again. It took less than a day and half to replicate that week&#8217;s worth of work (i.e. pass the test suite which had built up around it).  I&#8217;ve done this before; scrap the first attempt at building a domain and try again. Here my domain was the same (it was after all defined in both a standards specification and in the many hundreds of thousands of sample messages we captured from an existing system), but its implementation needed refinement.</p>
<p>So I think that the rule about throwing away spikes can in fact be made a general axiom of programming:</p>
<blockquote><p>When you are learning a new technology, make sure you  throw away the first thing you build that works &#8211; to avoid accumulating  your mistakes.</p></blockquote>
<p>Thanks to <a href="http://www.twasink.net/">Robert</a> for the important qualifier &#8220;that works&#8221;. <img src='http://www.crazymcphee.net/x/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>N.B. my views about <a title="The rewrite will be ready shortly" href="http://www.crazymcphee.net/x/2009/02/01/the-rewrite-will-be-ready-shortly/">system  rewrites</a> have not changed regardless.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2010/05/30/throw-it-away-and-write-another-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile and assembly lines</title>
		<link>http://www.crazymcphee.net/x/2009/09/26/agile-and-assembly-lines/</link>
		<comments>http://www.crazymcphee.net/x/2009/09/26/agile-and-assembly-lines/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 02:19:55 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[professional practice]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=477</guid>
		<description><![CDATA[Coder Friendly&#8217;s got an interesting article about Agile Evangelism. First I&#8217;m not going to take issue with the article itself but something that he quotes from DanC&#8217;s Lost Garden on Managing Complexity: The repetative (sic) steps that a single worker performs on an assembly line is a good example of a simple task This is [...]]]></description>
			<content:encoded><![CDATA[<p>Coder Friendly&#8217;s got an <a href="http://www.coderfriendly.com/2009/09/24/agile-evangelism-can-be-dangerous-focus-on-your-needs/">interesting article about Agile Evangelism</a>. First I&#8217;m not going to take issue with the article itself but something that he <a href="http://lostgarden.com/2006/04/managing-game-design-risk-part-i.html">quotes from DanC&#8217;s Lost Garden on Managing Complexity</a>:</p>
<blockquote><p>The repetative (sic) steps that a single worker performs on an assembly line is a good example of a simple task</p></blockquote>
<p>This is a terribly Fordist/Taylorist view to take of assembly work. That most beloved of industrial examples, Toyota, takes weeks to train its process-line workers to be able not only to do the simple repetitive steps of assembly, but also to be able to identify and rectify problems with the assembly-line. As <a href="http://chasingtherabbitbook.mhprofessional.com/apps/ab/">Steven Spear</a>, author of <a href="http://www.amazon.com/Chasing-Rabbit-Outdistance-Competition-Christensen/dp/0071499881">Chasing the Rabbit</a> (<a href="http://www.crazymcphee.net/x/2009/03/08/achieving-high-velocity/">my review here</a>) might say, anyone who thinks that &#8220;assembly line&#8221; work is simple task probably doesn&#8217;t understand the nature of their process enough to keep up with their more innovate competitors, let alone outdistance them. Understanding your process, well more importantly, your organisational goals and how your process does or does not fulfil those goals, is critical to improving your organisation, and it leads me onto the idea of &#8220;evangelism&#8221;.</p>
<p>I both agree and disagree with Coder Friendly&#8217;s position:</p>
<blockquote><p>Don’t become an evangelist yourself : look at your project and decide which methodologies is the most adapted. Sometimes, Agile is not the right one but if you see that your requirements are far from agreement or certainty, Agile approaches are probably a good choice.</p></blockquote>
<p>I agree that &#8220;evangelism&#8221; can be politically off-putting.People don&#8217;t react well to being told their old kool-aid contains poison, and to uncritically drink this new kool-aid instead. However the main problem I have with a statement like this is that non-Agile companies use this &#8220;adaptation&#8221; argument and approach, in order to keep their poor contexts alive. This is the fallacy that&#8217;s found in &#8216;scrum butt&#8217;: &#8220;Oh we do Scrum, but &#8230;&#8221;. The clauses after the &#8216;but&#8217; are typically critical. The organisation concerned is usually trying to keep some essential organisational dysfunction alive, because of politics, resistance to change, simple misunderstanding, lack of understanding about their own process, or maybe even simple laziness. I&#8217;ve got no problem with an organisation that is mature in its use of an agile method adapting it to their local circumstance &#8211; in fact if you are doing it properly, with its emphasis on empowering teams to own their process and carrying out regular &#8216;inspect and adapt&#8217; at the end of every iteration, after six or twelve months of this the process will most certainly be adapted to the local conditions.</p>
<p>However, the real danger is at the <em>start</em> of the agile adoption process, when you have people hand-waving about &#8220;can&#8217;t do that here&#8221;, for whatever value of <em>that</em> there is. I&#8217;ve seen it said about: pairing; story boards; acceptance criteria; automated testing; retrospectives; daily stand-up; adaptive and emergent design; and just about every other aspect of XP or Scrum process. The reason is, I think, that these organisations rarely understand what the real organisational goals actually are, and they understand even less about their existing process, to the point they just &#8220;do&#8221; the process that &#8220;is&#8221;. &#8220;It is what it is&#8221;, is a great term, and if anyone says this to you it&#8217;s just a fatalistic attempt to accept as unchanging something you <em>can</em> change. <em>Accept the bad. Don&#8217;t think it could be better</em>.  Attempts to meddle in the process, i.e. change it, induce fear, and with fear often comes timidity.</p>
<p>This is where you need a <em>real</em> agile evangelist. This is not someone who just thinks that Scrum or XP or whatever other process should be blindly substituted for the existing one, but someone who understands that process is about competitive advantage, eliminating waste, and that you have to start from a known position and continuously work towards improvement. Change is not just good, but necessary, and you <em>need</em> those change agents. <em>Passion for doing things better is bad?</em> Only in a change-averse company. So learn your existing process, thoroughly, and then learn the proposed agile process, thoroughly, and only then will you be able to &#8216;synthesise&#8217; a replacement. Only I think you&#8217;ll find that replacement will look a lot more like the plain old agile process than your existing unagile process. After all, if your existing process already has adequate inspect-and-adapt cycles within it (not lip-service ones, real ones), probably you are already doing and agile or lean process even if you don&#8217;t call it that, and you&#8217;re already number one in your marketplace. If not, perhaps you require the passion of an evangelist.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/09/26/agile-and-assembly-lines/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Agile is hard</title>
		<link>http://www.crazymcphee.net/x/2009/07/22/agile-is-hard/</link>
		<comments>http://www.crazymcphee.net/x/2009/07/22/agile-is-hard/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 01:42:52 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[professional practice]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[methodology]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=427</guid>
		<description><![CDATA[Johanna Rothman on agile adoption for the organisation: Agile requires the discipline to move projects through teams. Multitasking is nuts in agile. Moving team members around to have the “best” specialist available for a particular team is nuts. Performance reviews for individuals is nuts. Managers have to change everything they do, if they want to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jrothman.com/blog/mpd/2009/07/plunge-in-or-dip-your-toe-for-managers.html">Johanna Rothman on agile adoption for the organisation</a>:</p>
<blockquote><p>Agile requires the discipline to move projects through teams. Multitasking is nuts in agile. Moving team members around to have the “best” specialist available for a particular team is nuts. Performance reviews for individuals is nuts. Managers have to change everything they do, if they want to move the organization to agile. Managers need to see the problems exposed by any given project’s transition to agile and work to remove those obstacles before transitioning to agile.</p></blockquote>
<p>It&#8217;s too easy to think that just because you can get one of your teams to use an agile approach, that your organisation is now Agile. Too many managers &#8220;see the problems exposed by given project&#8217;s transition to agile&#8221; and decide to <em>blame the agile process</em> for the problems thus exposed.In far too many organisations I&#8217;ve seen have extremely capable teams delivering quality software in an agile process but remain &#8211; in some cases years later &#8211; completely unsupported by their senior management (and in some cases with very little support even from their CIO level).</p>
<p>That&#8217;s a very sad situation as it is and takes all your selling skills to get the management to &#8220;get with the program&#8221; so to speak. But this situation can be even more compounded when the management have been convinced that Agile is some sort of silver bullet that will cure all their issues. Whenever you are trying to sell agile to management, never waver from the fact that <em>agile is hard</em> (as everything worth doing is nearly always difficult anyway!). Agile takes discipline.</p>
<p>Johanna&#8217;s right to say you can&#8217;t adopt agile across an entire organisation in a big bang approach. But you can&#8217;t also adopt it without skill and commitment to doing so from managers and executives.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/07/22/agile-is-hard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Agile architecture?</title>
		<link>http://www.crazymcphee.net/x/2009/06/24/agile-architecture/</link>
		<comments>http://www.crazymcphee.net/x/2009/06/24/agile-architecture/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 13:07:23 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile architecture]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=414</guid>
		<description><![CDATA[Slightly appropriate to yesterday&#8217;s Agile is Dead rant &#8211; because certain vendors are now out and about flogging that &#8220;SOA is Agile&#8221; in the most incredibly facile way &#8211; here&#8217;s an interesting short read about the structural aspects (as opposed to the process-orientated aspects) of agile architecture by Kirk Knoernschild. The problem remains for the [...]]]></description>
			<content:encoded><![CDATA[<p>Slightly appropriate to yesterday&#8217;s <a href="http://www.crazymcphee.net/x/2009/06/23/agile-is-dead/"><em>Agile is Dead</em> rant</a> &#8211; because certain vendors are now out and about flogging that &#8220;SOA is Agile&#8221; in the most incredibly facile way &#8211; here&#8217;s an interesting short read about the structural aspects (as opposed to the process-orientated aspects) of <a href="http://architects.dzone.com/news/agile-architecture-requires">agile architecture</a> by <span class="submitted">Kirk Knoernschild</span>. The problem remains for the industry that a large amount of large-scale architecture is still done in vendor presentations, glossy brochure marketing and sales meetings.</p>
<p>Anyone thinking about SOA really needs their solution architects to read and absorb Gregor Hohpe and Bobby Woolf&#8217;s book <a href="http://www.eaipatterns.com/">Enterprise Integration Patterns</a> before they consider enterprise middleware purchases.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/06/24/agile-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To do redux</title>
		<link>http://www.crazymcphee.net/x/2009/06/07/to-do-redux/</link>
		<comments>http://www.crazymcphee.net/x/2009/06/07/to-do-redux/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 22:50:45 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[professional practice]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[refactor]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=393</guid>
		<description><![CDATA[I just want to answer the anonymous &#8220;process nazis&#8221; trackback on yesterday&#8217;s &#8216;//TODO&#8217; Considered Harmful post, because that blog desn&#8217;t allow comments without a login. Quite apart from issues with Godwin&#8217;s Law (and that the writer has enumerated a bunch of rules that get &#8220;violated&#8221; then accuses other people of being process nazis), the post [...]]]></description>
			<content:encoded><![CDATA[<p>I just want to answer the anonymous &#8220;<a href="http://chaosinmotion.com/blog/?p=279">process nazis</a>&#8221; trackback on yesterday&#8217;s <a href="http://www.crazymcphee.net/x/2009/06/06/todo-considered-harmful/">&#8216;//TODO&#8217; Considered Harmful</a> post, because that blog desn&#8217;t allow comments without a login. Quite apart from issues with Godwin&#8217;s Law (and that the writer has enumerated a bunch of rules that get &#8220;violated&#8221; then accuses <em>other</em> people of being process nazis), the post severely misattributes both my post, and also, I think, misunderstands what agile methodologies are all about.</p>
<p>First, I no where made any &#8220;assertion that if you are putting ‘//TODO’ markers in your code, you’re somehow not properly following the Scrum process&#8221; &#8211; I said if you find yourself using &#8216;//TODO&#8217; markers in your code you are being prevented from getting to done-done and that you should &#8220;<em>Identify the problem, propose a counter-measure and fix the process</em>&#8220;. I can&#8217;t emphasise that enough. &#8220;Fix the process&#8221; does not mean &#8220;follow scrum&#8221; but rather to use your team&#8217;s collective brain to work out what stops you from fixing the code then and there and propose a solution to the problem.</p>
<p>I think &#8216;//TODO&#8217; should either be in the current story (I will concede that you might want to use a &#8216;//TODO&#8217; to remind yourself about tasks in your current story, i.e. &#8220;come back here tomorrow when I add the validation&#8221;) or in the &#8220;backlog&#8221;. I put &#8220;backlog&#8221; in quotes there to point out I mean &#8220;backlog&#8221; in the broadest sense, if you using Scrum or XP that&#8217;s actually where the work-to-be-done is physically kept, but if you have some other process then your &#8220;backlog&#8221; is kept somewhere else, and what is preventing you from adding to it?</p>
<p>I will ask a question of the anonymous poster &#8211; at what point exactly  is a &#8216;//TODO&#8217; comment left decaying in the codebase without a story for days or weeks <em>a good idea</em>? Or is it that you just do not want to make what it is being done in the code base <em>transparent</em> to those who are paying your bills?</p>
<p>I will contend; &#8216;//TODO&#8217; never gets done because the product owners never see them. They act as an opaque barrier to open communication. If you find a &#8216;//TODO&#8217;, lets say a big major refactoring will be needed to support a story you already see in the backlog, what&#8217;s the problem with having an open and honest communication with the <em>team</em> about the story&#8217;s estimate? If it&#8217;s a future story, i.e. feature related, it should be in the &#8220;backlog&#8221;; if it is code or design related which impacts you now, either it should be done then and there (<a href="http://www.extremeprogramming.org/rules/refactor.html">refactor mercilessly</a>) or it&#8217;s a bug which you either fix or raise a bug report for, and if it&#8217;s just some nebulous &#8220;improvement&#8221; either do it now or <a href="http://c2.com/xp/YouArentGonnaNeedIt.html">YAGNI</a>. If you&#8217;ve got great tooling like Mylyn for Eclipse you can drop a &#8220;task&#8221; at the code point and move on. The point there is the &#8220;TODO&#8221; isn&#8217;t obscured away in the code but rather <em>visible to all</em> because the &#8216;//TODO&#8217; is now either in your Wiki, your task-tracking tooling via it&#8217;s Mylyn integration, or is included as part of a story card on the story board.</p>
<p>If you can&#8217;t refactor mercilessly &#8211; what the post is <em>really</em> about &#8211; all the usual excuses apply, i.e. &#8220;we&#8217;re not confident about the code base not breaking in unknown ways&#8221; (i.e. no tests), &#8220;it has to be done by tomorrow,&#8221; <em>et cetera</em>, and all of these are <em>symptoms of dysfunction</em> in your organisation.</p>
<p>People love their little comfort zones and they don&#8217;t like being pushed out of them, that&#8217;s for sure, programmers included (yeah, and that&#8217;s a me too). <em>Habit</em> is not an excuse for avoiding improvement.</p>
<p>Here&#8217;s a great imaginary conversation from the C2 wiki entry about <a href="http://c2.com/xp/YouArentGonnaNeedIt.html">YAGNI</a> that I think applies here:</p>
<blockquote><p>&#8220;But Ron, I know how to do it right now, and later I might not.&#8221; </p>
<p>&#8220;So, Sam, you&#8217;re telling me that this class you&#8217;re writing is so complex that even <strong>you</strong> won&#8217;t be able to maintain it?&#8221;</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/06/07/to-do-redux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>&#8216;//TODO&#8217; considered harmful</title>
		<link>http://www.crazymcphee.net/x/2009/06/06/todo-considered-harmful/</link>
		<comments>http://www.crazymcphee.net/x/2009/06/06/todo-considered-harmful/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 14:14:12 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[professional practice]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[refactor]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=386</guid>
		<description><![CDATA[Yesterday I said that developers should start being a little more militant about the craftsmanship of their code, i.e. pushing back on broken methodology that demands poorly-built code  be released into the wild. This sort of code is always inherently fragile and will break your software if it has not already. Today I just want [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Just Say No (to broken processes)" href="http://www.crazymcphee.net/x/2009/06/05/just-say-no-to-broken-processes/">Yesterday I said that developers should start being a little more militant about the craftsmanship of their code</a>, i.e. pushing back on broken methodology that demands poorly-built code  be released into the wild. This sort of code is always inherently fragile and will break your software if it has not already.</p>
<p>Today I just want to meditate on a code artifact that often manifests itself in such environments. I speak of the comment //TODO seen frequently in such code. The idea that future &#8220;refactoring&#8221; goes on the &#8220;todo&#8221; list in such an environment is completely broken. An environment that allows that to happen means it will never get done. Do it now, or don&#8217;t do it. <a title="C2 Wiki - ToDo comments considered harmful" href="http://c2.com/cgi/wiki?TodoCommentsConsideredHarmful" target="_self">TODO is considered harmful</a>.</p>
<p>I have come around to the view that &#8216;//TODO&#8217; comments should make a build fail. Either:</p>
<ol>
<li>It is a future story yet to be implemented and placed into the backlog,</li>
<li>It is work in progress (and by definition doesn&#8217;t need a TODO because everything still needs to be &#8216;done&#8217;), or,</li>
<li>It is done, as in DONE-done, and therefore the story is complete and there&#8217;s nothing left &#8220;TO DO&#8221;.</li>
</ol>
<p>In other words, &#8220;//TODO&#8221; is a indicator of a process that&#8217;s not letting developers get to &#8220;done&#8221;. Identify the problem, propose a counter-measure and fix the process that stopping you from getting to completion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/06/06/todo-considered-harmful/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>JAOO Brisbane 2009 highlights and thoughts</title>
		<link>http://www.crazymcphee.net/x/2009/05/13/jaoo-brisbane-2009-highlights-and-thoughts/</link>
		<comments>http://www.crazymcphee.net/x/2009/05/13/jaoo-brisbane-2009-highlights-and-thoughts/#comments</comments>
		<pubDate>Wed, 13 May 2009 12:55:54 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[professional practice]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[jaoo]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[test first]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=356</guid>
		<description><![CDATA[I spent last Monday and Tuesday at the JAOO conference in Brisbane, and I have a couple of things which I want to say I thought interesting. (&#8216;JAOO&#8217; btw, because I see people asking about it on Twitter, is pronounced a bit like &#8220;yow&#8221; but with the &#8220;j&#8221; from German/Dutch like &#8220;jah&#8221;). Firstly, I found [...]]]></description>
			<content:encoded><![CDATA[<p>I spent last Monday and Tuesday at the <a href="http://www.jaoo.com.au/" target="_blank">JAOO</a> conference in Brisbane, and I have a couple of things which I want to say I thought interesting. (&#8216;JAOO&#8217; btw, because I see people asking about it on Twitter, is pronounced a bit like &#8220;yow&#8221; but with the &#8220;j&#8221; from German/Dutch like &#8220;jah&#8221;).</p>
<p>Firstly, I found the second day much better than the first. I did see <a href="http://www.michaelnygard.com/" target="_blank">Michael Nygard&#8217;s</a> two talks on Monday morning and got a lot a lot of useful information from those. Titled &#8216;Failure comes in flavours&#8217; the first was a great overview of the types of failure that applications running in production encounter, the second ways to avoid those failure modes. Basically it&#8217;s how many of the non-functional requirements can eat your app (and even the entire integration if you let the failure propagate easily) if you don&#8217;t give careful consideration to them. He&#8217;s got a <a href="http://www.pragprog.com/titles/mnee/release-it" target="_blank">book</a> so I&#8217;m going to check that out next.</p>
<p>The first day for me was severely spoilt by a poor vendor presentation (hint: one that is <em>not</em> Oracle, not that they would have necessarily done any better), which I should have known better to avoid. I already swim in the BPEL/BPM/SOA soup, I fully understand just how broken it is as an actual development concept (e.g. anti-test-first to name just <em>one</em>). I was fooled by the title to thinking maybe it had some insights to avoid the worst of these busted concepts, but no, the vendor&#8217;s tooling is all the rage if you drink the poor-tasting conceptual kool-aid. This stuff is marketed at managers and non-coding architects who choose to buy this stuff then dump it from a very great height into the laps of the poor developers who have to mangle it into a deliverable system (half the time with a development budget just a tenth the cost of the licence). Anyway back to the good stuff.</p>
<p>Mike Cannon-Brookes from <a href="http://www.atlassian.com/" target="_blank">Atlassian</a> (which makes great development tools, highly recommended) gave a mostly great closing speech on the first day which made me think about a couple of things. It wasn&#8217;t until the next morning however that it crystallised in my mind. It&#8217;s a bit of a minor criticism.</p>
<p>Mike threw out a minor line, an aside really, talking about Atlassian&#8217;s agile development methodology, and basically that said, people who say &#8216;you must do this&#8217; are wrong, because they miss your context. Here &#8216;this&#8217; is some type of agile process artefact like  maybe, pairing, or estimating in story points, or whatever. Well, it&#8217;s wrong and on two counts. The first count I realised just after the talk but couldn&#8217;t articulate it correctly in semi-drunken conversation. That first count is very simple. Mike&#8217;s timeline on his Atlassian experience has him, if I recall correctly, starting his company and creating the great tool Jira, in his early twenties. Now as he dissed &#8220;old people&#8221; in his talk I&#8217;m going to give some back. In your twenties you&#8217;ve got no idea <em>what works</em>, in a general sense. You might know (or think you know) <em>what works for you</em>, but that&#8217;s a completely different kettle of fish to <em>what works generally</em>. Why not? The word is <em>experience</em>. Its not until you reach &#8230; oh &#8230; I&#8217;ll say around 35 (and so maybe lose the capacity to build technical innovation, perhaps, as Mike asserted) that you can have real insights into <em>process</em> and <em>people</em>. It&#8217;s just because at this point, you just have not got enough <em>practice</em> at it (see Malcolm Gladwell&#8217;s recent book for some basic data about the power of practice).</p>
<p>But the bigger point I think is the word <em>context</em>. The phrase &#8216;my context is different&#8217;, is this classic phrase which <em>really</em> means &#8216;that won&#8217;t work here&#8217; and <em>that</em> really means, <em>I don&#8217;t want to change</em>. As a consultant , you hear this stuff all the time: &#8230; &#8220;We&#8217;re unique, our company is not like those other companies. We can&#8217;t do that here. Detailed estimates are really the most important part of the development process. The budget and the features must be fixed. We have a reporting process that allows the budget and features to be fixed. Pair programming doubles the time it takes to deliver the features. Quality doesn&#8217;t matter. Technical quality is  a business decision. The business are too busy to talk to you.&#8221; &#8230;  And a whole other other bunch of <em>epic agile fail</em>. Someone&#8217;s context is <em>exactly</em> why they aren&#8217;t as agile as their competitors and are looking at using &#8216;agile development&#8217; to help save them &#8230; but as long as they insist on <em>my context trumps all</em>, they will only get a fractional improvement and not an order-of-magnitude one. But Atlassian make great products, so it doesn&#8217;t mean you <em>have</em> to have &#8216;scrum&#8217;, or &#8216;XP&#8217; to do that, the greatness I guess, is orthogonal. However if you are looking to &#8216;do agile&#8217;, then <em>do agile</em>. Pick a method like Scrum or XP then do it all. How do you know pair programming will fail in your organisation if you don&#8217;t try it first? You don&#8217;t. Do it like it says to do it (e.g. the Kent Beck books) and after a few months experience for your team, use the lessons from the retrospectives that the team has discovered to improve the process. <em>Do not cripple the process with your &#8216;context&#8217; before you even try</em>.</p>
<p>And right on cue, on the second day along comes <a href="http://steve.cogentconsulting.com.au/" target="_blank">Steve Hayes</a> with a <em>great</em> presentation on exactly this topic: &#8220;How your choices affect your agility&#8221;. Steve is a fantastic speaker, entertaining and pretty insightful too I thought. I rated his talk the best talk of the conference. He said he got lots of red cards (participants could rate each talk as green==good, yellow==ok, red==bad) in his Sydney session &#8211; <em>what is the matter with your people</em>? It was a great talk. I loved the part about <em>naivety</em>. To propose a solution from the most naive perspective possible, and  what an <em>epic win </em>it is when a customer says &#8220;ok&#8221;! It means I understand the problem! I even tried this today with my client, I didn&#8217;t get the instant &#8220;OK&#8221; but working from the basis of that incredibly naive solution we did manage to eventually envisage <em>the simplest thing that could possibly work.</em> And I love that. So thanks tons for that insight, Steve!</p>
<p>Another great talk on the second day was <a href="http://www.lindarising.org/" target="_blank">Linda Rising&#8217;s</a> &#8216;Deception and Estimation&#8217; talk. Turns out (via psychology and evolutionary biology) we engage not in <em>rational</em> decision making but in <em>emotional</em> choices <em>all the time</em>. All choice is emotional. So we engage ourselves in self-deception <em>all the time</em>. And none of this is <em>bad</em> &#8230; <em>it&#8217;s good</em>. People who don&#8217;t engage in this constant self-deception are generally clinically insane. So get over it, and yourself, and when you&#8217;re estimating (and from the sounds of it, doing any sort of major-impact decision making) and get as <em>many perspectives as you can</em> from the most diverse range of people you can manage (to avoid <em>groupthink</em>, which is I guess, the situation where everyone&#8217;s self-deceptions all align). <a href="http://en.wikipedia.org/wiki/Joshua_Bloch" target="_blank">Joshua Bloch&#8217;s</a> second-day keynote was also highly worthy of praise. Good insight and excellent effective code examples (yes, in a <em>keynote</em>). Also worth the greatly discounted entry ticket price was the many interesting conversations I had with past colleagues and new friends on many different development issues.</p>
<p>In short, JAOO was generally of very high quality and I hope is keeps coming to Brisbane! Will definitely be going next year. Many thanks to all the organisers, presenters and sponsors.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/05/13/jaoo-brisbane-2009-highlights-and-thoughts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Are fixed-price contracts evil?</title>
		<link>http://www.crazymcphee.net/x/2009/04/09/are-fixed-price-contracts-evil/</link>
		<comments>http://www.crazymcphee.net/x/2009/04/09/are-fixed-price-contracts-evil/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 08:27:15 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[professional practice]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[contracts]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=319</guid>
		<description><![CDATA[Alef Arendsen asks &#8216;Are fixed priced contracts evil?&#8217;, especially to the agile process, and summarises there a number of responses that others have had into this question. Especially in the contractual arrangements that consulting companies need to make in the agile development sphere. He points to an excellent post by Seth Schubert on this matter. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.jteam.nl/2009/04/08/selling-agile-projects-part-i/">Alef Arendsen asks</a> &#8216;Are fixed priced contracts evil?&#8217;, especially to the agile process, and summarises there a number of responses that others have had into this question. Especially in the contractual arrangements that consulting companies need to make in the agile development sphere. He points to an <a href="http://www.codesqueeze.com/how-to-sell-agile-to-fixed-bid-contract-clients/" target="_blank">excellent post by Seth Schubert</a> on this matter.</p>
<p>My two cents on this issue is simply that yes, fixed price, fixed scope contracts <em>are</em> &#8220;evil&#8221;, in the sense they are harmful for the project being delivered. Alef and Seth have some excellent points why client organisations,  especially when initially dealing with a consulting organisation for the first time, want to manage their risk by choosing fixed price and fixed scope, and why it&#8217;s harmful to project success.</p>
<p>I&#8217;ve had some clients exactly like that &#8211; the company is negotiating with one now. The real concern of theirs &#8211; and ours &#8211; is that they can build a trust relationship between the two organisations. I think, like Seth, once that trust relationship is built, managing the scope of the delivery is much easier. Seth recommends using <a href="http://cyrusinnovation.com/downloads/agile2005_cyrusinnovation_targetcostcontracts_paper.pdf" target="_blank">target cost contracts (PDF)</a>. I know that agile contracts were one of the areas the <a href="http://www.meetup.com/Scrummaster/" target="_blank">Brisbane Scrum User Group</a> were hoping to do a session on.</p>
<p>In my view, the real danger isn&#8217;t from the fixed <em>price</em>. After all if you quote me a dollar figure I can tell you how many days of involvement that buys from my consulting firm. Exactly what that builds is completely  dependent on what is being asked. The problem comes of course with fixing the <em>scope</em>. There are a number of issues around fixing the scope, which together present a huge huge of project failure:</p>
<ul>
<li>It assumes you have perfect information at the start of the project, before anything is even attempted. Most developers can easily tell you that you don&#8217;t even know 20% of what you&#8217;re getting yourself in for &#8211; even if you just finished completing something very similar just the day before.</li>
<li>Problems, being unforeseen, can&#8217;t be accomodated in &#8220;buffers&#8221;, because we don&#8217;t know actually know what is unforeseen.</li>
<li>It closes off all prospect of innovation with the project as the project progresses. Discovered insight (the most valuable kind) is simply excluded, or it is buried alive in a negotiation or a change control process.</li>
<li>It might not match with the price even if everything goes to expectation (i.e. it is simply an unrealistic scope for the money). This is related to but not quite the same as the &#8220;9 women pregnant 1 month each&#8221; problem, which is to say, it&#8217;s just not possible to do it.</li>
</ul>
<p>The real problem is, that I see, is that clients tend to close off the scope before they close of the price. You can see this in the standard &#8220;tender&#8221; procedure so loved of big companies and governments. But I&#8217;ve had that experience too inside an enterprise dealing with internal clients. Most developers will be familiar with that sort of conversation &#8211; <em>&#8220;All the scope is non-negotiable up-front and please tell me it will cost 4 weeks? What do you mean &#8216;at least&#8217; 4 months?&#8221;</em> In a previous life I used to have exactly this conversation about every month. On the other hand, if you tell me your <em>budget</em> first, I can tell you the <em>approximate</em> sort of system you&#8217;ll get from that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/04/09/are-fixed-price-contracts-evil/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Burning down your value, not your story</title>
		<link>http://www.crazymcphee.net/x/2009/03/17/burning-down-your-value-not-your-story/</link>
		<comments>http://www.crazymcphee.net/x/2009/03/17/burning-down-your-value-not-your-story/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 13:20:04 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[professional practice]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[information radiators]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[stories]]></category>
		<category><![CDATA[value]]></category>
		<category><![CDATA[waste]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=241</guid>
		<description><![CDATA[What&#8217;s the problem with reporting the amount of work we&#8217;ve completed the last iteration in story points? Story points are a somewhat arbitrary, but consistent measure of the technical complexity to implement a feature. But that&#8217;s not the problem with reporting them to management. The thing is, it&#8217;s not what management are interested in. Consider [...]]]></description>
			<content:encoded><![CDATA[<p>What&#8217;s the problem with reporting the amount of work we&#8217;ve completed the last iteration in story points? Story points are a somewhat arbitrary, but consistent measure of the technical complexity to implement a feature. But that&#8217;s not the problem with reporting them to management. The thing is, it&#8217;s not what management are interested in.</p>
<p>Consider the following scenario.</p>
<ol>
<li>You&#8217;ve got two parts of the code base. One part is beautiful code, written TDD, used continuous integration, pair programming, well written stories were used to produce it, clear acceptance tests, all the good stuff. The other part is horrific, hardly any tests, when the build failed, you disabled the tests that failed, the stories were written as technical tasks, acceptance tests vague, etc.</li>
<li>You are asked to deliver two medium-value stories in the next iteration. One story is most done in the good part of the code base. The other story in the bad part.</li>
<li>Correspondingly, your estimates will vary according to the complexity of the code base &#8211; the story in the &#8220;good&#8221; code might be 5 points, the story in the &#8220;bad&#8221; code is 15. But the value to the business delivered is the same!</li>
</ol>
<p>The point is, the amount of effort that you do (20 points) to deliver 2 medium value units, is actually not a measure of your <em>progress</em>. It&#8217;s a measure of your <em>waste</em>. The next iteration you might be able to deliver 4 medium value points, if they are all in the &#8220;good code&#8221; base! Same effort, twice the return on value. Software developers know this about well designed code bases combined with good engineering practice, of course. The point is about directly exposing the effects of bad engineering as it manifests itself as a barrier to progress.</p>
<p>What if you told the business instead, you&#8217;ll deliver <em>x</em> business value points instead? That is, your burn down and burn up charts don&#8217;t show story points of <em>effort expended</em>, but directly indicated <em>value delivered</em>. What impetus does this lead us to? Well, now we&#8217;ve got a direct measurement of story points over business value, which is the proportion of waste to value. The ultimate story is infinite in value and takes zero points to deliver!</p>
<p>I think this is not all; because it directly establishes the ratio of waste to value, it gives you an impetus to eliminate waste, that is, to practice good, professional, software craftsmanship of the type that Robert C. Martin talks about in the <a href="http://www.crazymcphee.net/x/2009/03/17/im-not-making-this-mess-anymore/" target="_self">video I linked to earlier tonight</a>. Software that allows you to change efficiently to meet new needs now becomes not an abstract principle that you must kick back at your managers every time the demand to see &#8220;more features&#8221; and less engineering, but becomes a direcly correlated measurement of productive output.</p>
<p>It&#8217;s not all plain sailing, for the really hard nut has to be cracked. How the hell do you measure business value in units like &#8220;points&#8221;? I don&#8217;t have a cheap and easy answer right for it right now. But I don&#8217;t think this very hard question should go unanswered. For me, it&#8217;s the missing piece of the agile software delivery puzzle. I&#8217;ve been asked countless times, to estimate effort on whole swathes of stories where I think it&#8217;s obvious that the business value is actually highly dubious &#8211; or at least cannot be quantified by the product owner. On one level, that&#8217;s fine, they pay the bills and get to set the priorities, but on another level, I think that having to produce a quantifier for the value will help the product owner focus their minds onto the outcome in a much better way.</p>
<p>And it enables them to directly see the correlation between bad engineering practices and the inefficiencies they engender. Those bad practices are certainly our fault for putting them in place, don&#8217;t get me wrong, I&#8217;m not shirking our personal and professional responsibilities in that regard. However reducing outside pressures will certainly also help by giving us a little breathing space to demonstrate with hard numbers the value of taking care with our craftsmanship. And it reports the thing the business are most interested in &#8211; the value you deliver.</p>
<p>If my post is a little unclear, forgive me it&#8217;s late at night as I write this. Better blog entry than code in the tired state I&#8217;m in!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/03/17/burning-down-your-value-not-your-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m not making this mess anymore!</title>
		<link>http://www.crazymcphee.net/x/2009/03/17/im-not-making-this-mess-anymore/</link>
		<comments>http://www.crazymcphee.net/x/2009/03/17/im-not-making-this-mess-anymore/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 12:14:48 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[professional practice]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[craftsmanship]]></category>
		<category><![CDATA[emergent design]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[refactor]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[test driven design]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=236</guid>
		<description><![CDATA[XP: After 10 years why are we still talking about it? By Robert C. Martin. Uncle Bob argues passionately, and correctly, for the principles of software craftsmanship. Link: http://www.viddler.com/explore/sergiopereira/videos/7/.]]></description>
			<content:encoded><![CDATA[<p>XP: After 10 years why are we still talking about it? By Robert C. Martin. Uncle Bob argues passionately, and correctly, for the principles of software craftsmanship.</p>
<p><object width="437" height="370" data="http://www.viddler.com/player/ef4eb06a/" type="application/x-shockwave-flash"><param name="id" value="viddler_ef4eb06a" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.viddler.com/player/ef4eb06a/" /><param name="name" value="viddler_ef4eb06a" /><param name="allowfullscreen" value="true" /></object></p>
<p>Link: <a href="http://www.viddler.com/explore/sergiopereira/videos/7/"> http://www.viddler.com/explore/sergiopereira/videos/7/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/03/17/im-not-making-this-mess-anymore/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
