<?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; methodology</title>
	<atom:link href="http://www.crazymcphee.net/x/tag/methodology/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>That&#8217;s the just the way it&#8217;s done round here</title>
		<link>http://www.crazymcphee.net/x/2010/07/14/thats-the-just-the-way-its-done-round-here/</link>
		<comments>http://www.crazymcphee.net/x/2010/07/14/thats-the-just-the-way-its-done-round-here/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 21:56:44 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[professional practice]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[profession]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=576</guid>
		<description><![CDATA[Many of us hear this phrase in our workplace. When you hear it, what you&#8217;re really being told is that the company is afflicted with one or more of the following: is afraid of change not interested in improvement has a rigid top-down process development style doesn&#8217;t care what you think I think the greatest [...]]]></description>
			<content:encoded><![CDATA[<p>Many of us hear this phrase in our workplace. When you hear it, what you&#8217;re really being told is that the company is afflicted with one or more of the following:</p>
<ul>
<li>is afraid of change</li>
<li>not interested in improvement</li>
<li>has a rigid top-down process development style</li>
<li>doesn&#8217;t care what you think</li>
</ul>
<p>I think the greatest problem is the organisation basically doesn&#8217;t trust it&#8217;s employees to know what they are doing. It doesn&#8217;t matter that you may know something better or that you care about improving the company&#8217;s performance.  I find when I hear this sort of phrase from in companies I&#8217;m consulting at, you soon discover all manner of other issues, idiotic decision making processes, strange convoluted internal processes, inflexible management styles, complete reliance on reporting and long meetings for project visibility, and completely rigid thinking.</p>
<p>What the upshot of all this is, is usually a company that then is left with workers that accept their situation rather then improving it. Ultimately, when such companies confront the reality of their situation and require change to avoid failure, they fail because their employees don&#8217;t want change &#8211; they&#8217;ve had it ground down out of them over the years.</p>
<p>Stasis as a corporate strategy only works for so long.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2010/07/14/thats-the-just-the-way-its-done-round-here/feed/</wfw:commentRss>
		<slash:comments>1</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>Systems versus Individuals and technical debt</title>
		<link>http://www.crazymcphee.net/x/2009/09/05/systems-versus-individuals-and-technical-debt/</link>
		<comments>http://www.crazymcphee.net/x/2009/09/05/systems-versus-individuals-and-technical-debt/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 23:38:48 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[professional practice]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[emergent design]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[refactor]]></category>
		<category><![CDATA[technical debt]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=468</guid>
		<description><![CDATA[I kind of disagree with this picture by Josh Susser regarding the &#8220;circle of death&#8221; in terms of code quality and late night effort. It is right enough as far as it goes but it doesn&#8217;t go far enough. First up, the easy way out &#8211; take a day off, go for a walk in [...]]]></description>
			<content:encoded><![CDATA[<p>I kind of disagree with <a href="http://blog.hasmanythrough.com/2009/9/3/circle-of-death">this picture</a> by Josh Susser regarding the &#8220;circle of death&#8221; in terms of code quality and late night effort. It is right enough as far as it goes but it doesn&#8217;t go far enough.</p>
<p>First up, the easy way out &#8211; take a day off, go for a walk in the park, have a nice dinner, get a good nights sleep. You should always work to &#8220;sustainable progress&#8221; and yes this means every hour you work over 40 hours a week means your quality is steadily decreasing until some point where every extra hour you put will take two to fix it later (in other words, negative impact). Even just pair programming will help prevent this in the first place as long at least one of you isn&#8217;t operating on half the sleep they need. But ultimately, all of this just blames the individual, when really poor code quality and technical debt are much more a function of the management system, methodology, total sum of the choices by every on the team, etc. (For a start, why are you up late in the first place? Was that your choice, or an outside imposed deadline?).</p>
<p>As James Adam and &#8220;iSteve&#8221; point out in the comments &#8211; technical debt is different from just &#8220;buggy software&#8221; and in my experience it&#8217;s usually function of management or other types of systemic choices (and &#8220;systemic&#8221; includes you, the programmer as well everyone else). What it really does is trade <em>easy change now</em> for <em>even harder change later</em>. It wants that sweet sweet sugar hit straight away but forgets about the &#8220;sugar coma&#8221; that comes a few minutes afterwards. It defers &#8220;paying the piper&#8221; until tomorrow for that lovely tune today. James Adam rightly says in his comment this <em>can be a valid choice</em>, but all of the team have to be fully aware of the <em>consequences</em> of that choice. One of which is typically that the longer  you defer the payment, the more debt you&#8217;ll accumulate, until all you are doing is paying off the interest and not getting to the principal.</p>
<p>As &#8220;iSteve&#8221; says, management (and maybe &#8220;management&#8221; might mean just you telling yourself this in your head) always promises to &#8220;fix it later&#8221; and never does allow that. &#8220;Just make the hack&#8221; and gloss over the problem is a mantra that we&#8217;ve all heard before. Where it gets painful is where every change is now taking twice as long as it should because of the accumulation of hacks. Every single one one of us has been there before, and are probably in various levels of it right now.</p>
<p>In my view this is the much more insidious circumstance because it is <em>systemic</em>.  After all the solution to a bad day&#8217;s work because I was too tired to think properly is to simply get a good night&#8217;s sleep, roll back yesterday&#8217;s coding, and do it again today. All I&#8217;ve done is lost a day&#8217;s work.  However, an organisation is likely to have accumulated months if not years of organisational cruft that makes changing their context that much harder than just rolling back yesterday&#8217;s poor code and trying again &#8211; it requires commitment to change from everyone who counts in the first instance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/09/05/systems-versus-individuals-and-technical-debt/feed/</wfw:commentRss>
		<slash:comments>0</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 is dead</title>
		<link>http://www.crazymcphee.net/x/2009/06/23/agile-is-dead/</link>
		<comments>http://www.crazymcphee.net/x/2009/06/23/agile-is-dead/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 05:49:44 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[professional practice]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[vendors]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=400</guid>
		<description><![CDATA[I know that&#8217;s a pretty bold statement but here&#8217;s why. This morning I went to a vendor&#8217;s presentation morning, it was the usual game of buzzword bingo from the very first slide on. All the usual enterprise2.0, social-networking, portal-compliant, content-management, vertically-integrated, SOA-BPM-UCM-JEE-ESB-WS-BPEL platform-framework-enabling scalability-enhancing fun-lovin&#8217; don&#8217;t write code but manage-the-enterprise-blog-wiki-twitter-facebook-youtube shopping cart drag-n-drop non-content that [...]]]></description>
			<content:encoded><![CDATA[<p>I know that&#8217;s a pretty bold statement but here&#8217;s why. This morning I went to a vendor&#8217;s presentation morning, it was the usual game of <em>buzzword bingo</em> from the very first slide on. All the usual enterprise2.0, social-networking, portal-compliant, content-management, vertically-integrated, SOA-BPM-UCM-JEE-ESB-WS-BPEL platform-framework-enabling scalability-enhancing fun-lovin&#8217; <em>don&#8217;t write code</em> but manage-the-enterprise-blog-wiki-twitter-facebook-youtube shopping cart drag-n-drop <em>non-content</em> that we have all come to expect from the big vendors was fully in attendance.</p>
<p>But the real kicker was a presentation on <em>Agile Integration</em>, by one of the vendor&#8217;s partners (and in the interests of disclosure, a competitor to my own employer). A few slides in and there&#8217;s the inevitable &#8220;what is agile&#8221; slide with a standard dictionary definition and some lip-service to previous history. Now the thing here of course, is that the word <em>Agile</em> in software development parlance is by now a well-entrenched piece of <em>jargon</em> &#8211; it has a specific meaning to most people that is fairly precise and different to just the garden-variety common English usage. This is the purpose of jargon in a discipline: to be precise in communication. And the <a href="http://agilemanifesto.org/" target="_blank">agile manifesto</a>, nearly 10 years old, just means in effect, if you&#8217;re in the software development game you just can&#8217;t redefine the term to mean something else.</p>
<p>Except of course, you <em>can</em>, if you do, and you&#8217;re <em>big</em> enough and enough people listen to your incredibly mangled marketoid-speak. <em>But implementing a SOA solution is not Agile</em>, no matter how many times you make an incredibly weak case that it is or how many times you repeat any other platform-orientated mantra. Yes, you read it right, according to the vendor&#8217;s partner at least, <em>SOA is Agile</em>.</p>
<p>This banality made me so angry, it was very lucky that straight after there was the morning coffee break because I was seething and it took all my self-discipline not to launch into an attack during the questions (easy picking, because there were no other questions asked!). I had to vent at my poor colleagues in the break.</p>
<p>Anyway, on my admittedly pessimistic reading it means that <em>Agile Is Dead</em>, as pretty soon we are going to find clients telling people, &#8220;Yeah we do agile, we bought the million-dollar SOA package off that vendor&#8221;, and then they&#8217;ll be saying the reason their integration projects are still failing is because they haven&#8217;t installed the very latest patchset, or upgraded to all-new <em>LEANsuite 17.4.15.8 release B</em> with the optional drag-n-drop Super-Agility add-in for Portals, Release 16f (the &#8220;f&#8221; is for &#8220;fail&#8221;).</p>
<p>At sushi train lunch afterwards, we made the observation that pretty much the vendor wants to be <em>all the food groups all at once</em>. Kind of like this bit of gluggy sushi I mistakenly lifted off the train:</p>
<div id="attachment_404" class="wp-caption alignnone" style="width: 310px"><a href="http://www.crazymcphee.net/x/wp-content/uploads/2009/06/img_0080.jpg"><img class="size-medium wp-image-404" title="bad sushi" src="http://www.crazymcphee.net/x/wp-content/uploads/2009/06/img_0080-300x225.jpg" alt="All the food groups. Nasty." width="300" height="225" /></a><p class="wp-caption-text">All the food groups. Nasty.</p></div>
<p>Now I&#8217;m not saying that you can&#8217;t do &#8220;SOA&#8221; with an agile process, if that&#8217;s your preferred architectural style, then if you are committed you can certainly develop it in an Agile fashion. You can&#8217;t afford however, to confuse the two things. If you do, that picture above is  what your enterprise will look like too if you mistake the <em>buzzword bingo</em> offered by vendors for actual <em>insight into agile development process</em>. Talk to an expert instead.</p>
<p>Sorry to be so negative, the whole morning pretty much sapped my will to live.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/06/23/agile-is-dead/feed/</wfw:commentRss>
		<slash:comments>17</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>Just Say No (to broken processes)</title>
		<link>http://www.crazymcphee.net/x/2009/06/05/just-say-no-to-broken-processes/</link>
		<comments>http://www.crazymcphee.net/x/2009/06/05/just-say-no-to-broken-processes/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 23:23:27 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[professional practice]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[emergent design]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[refactor]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=384</guid>
		<description><![CDATA[Broken development processes lead to broken code. When you find badly formed code, and especially if you didn&#8217;t  write it just then in order to make the test pass just a minute ago, and super-especially is the code is already in production, you not only need to rectify the code, you need to rectify the [...]]]></description>
			<content:encoded><![CDATA[<p>Broken development processes lead to broken code. When you find badly formed code, and <em>especially</em> if you didn&#8217;t  write it just then in order to make the test pass just a minute ago, and <em>super-especially</em> is the code is already in production, you not only need to rectify the <em>code</em>, you need to rectify the <em>process</em> that lead to the broken code. Well, to be accurate, you need to start engaging in some root-cause-analysis on how this badly formed code came to be included in the production system.</p>
<p>On a technical mailing list I&#8217;m on, a developer asked for help in regard to a class he had to modify. There&#8217;s no need for the full gory detail here; suffice to say it&#8217;s main feature was that it had a very long if-then-else method that had nearly 20 steps testing multiple boolean statuses strung out after each other. The question was very simply; &#8220;how to refactor this?&#8221;. The suggestions were all good; ranging from using polymorphism to implementing a rules engine.</p>
<p>It&#8217;s not the solutions, or even the code that I want to discuss. Near the end of the thread, the original poster came back and said he&#8217;d discovered that (to paraphrase) &#8216;the feature change needs to go to the QA process today&#8217; and that the refactoring couldn&#8217;t be done: the two-line hack would have to suffice.</p>
<p>I feel for the poor bugger, I really do, I&#8217;ve been in that situation myself. Maybe it&#8217;s just my bombastic, iconoclastic nature that makes me push back at these situations and tell people what fools they are for not valuing the <em>craftsmanship</em> of the very craftsmen they&#8217;ve hired specifically to build their software solutions. We need to start to insist that craftsmanship is valued and not just dismissed with an airy wave of the hand by management anymore. I&#8217;m fully aware this frequently makes me unpopular amongst those who don&#8217;t like to told the hard, brutal, truth. But I&#8217;ve given up caring. The truth it is.</p>
<p>In this spirit, I&#8217;m going to put on my &#8220;I&#8217;m as mad as hell and I&#8217;m not gonna take this anymore&#8221; hat and say the following. The reason that class in that state is because &#8220;changes to this feature are going to need to be in a build for QA today&#8221;. What needs to be done about these situations?</p>
<p>Just Say No.</p>
<p>Developers &#8211; those aspiring to be craftsmen anyway, need to be able to say it just is not possible for this feature to be changed today. Tell the management they have maxed out the credit card and the bailiffs are banging at the door and taking the silverware away as payment.</p>
<p>For a start, who decided this feature had to be in the QA build at some arbitrary cut-off date anyway? Someone who had never seen that class, that&#8217;s who. That &#8220;chicken&#8221; committed developer &#8211; the &#8220;pig&#8221; &#8211; to deliver the feature by some arbitrary cut off date and didn&#8217;t know the details. This is estimation by <em>fiat</em>. In any half-way decent process that respects it&#8217;s workers as people and not jut bit-flippers, no-one has the right to do this; it&#8217;s massively broken process. Chickens are not allowed to decide on estimates: only pigs are. The only way these things change if someone stands up and says &#8220;NO&#8221; to such broken process.</p>
<p>I don&#8217;t mean to say the developers can just go off with the fairies and gold-plate every piece of code they touch. But it has to be at least <em>well-made</em>. Obviously this particular process isn&#8217;t an agile environment &#8211; as it includes a &#8220;QA&#8221; stage with arbitrary cut off date at which point hte code &#8220;gets thrown over the wall&#8221;. And the company has management (I assume it&#8217;s management) running around and setting arbitrary delivery dates for unknown work.</p>
<p>Seriously, process improvement has to start somewhere. Be the change you seek. Stop tolerating poor code. If the process you work in demands you to tolerate it, change the process as best you can.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/06/05/just-say-no-to-broken-processes/feed/</wfw:commentRss>
		<slash:comments>3</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>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>
	</channel>
</rss>
