<?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>AgileKiwi &#187; Older Topics</title>
	<atom:link href="http://www.agilekiwi.com/category/other/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agilekiwi.com</link>
	<description>The neglected essentials of software development</description>
	<lastBuildDate>Sat, 08 Jun 2013 06:07:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Agile with Fixed Scope</title>
		<link>http://www.agilekiwi.com/earnedvalue/agile-with-fixed-scope/</link>
		<comments>http://www.agilekiwi.com/earnedvalue/agile-with-fixed-scope/#comments</comments>
		<pubDate>Sat, 23 Mar 2013 00:05:39 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Earned Value Management]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=847</guid>
		<description><![CDATA[It’s a common misconception that agile processes can’t be used with fixed scope.  But a misconception is exactly what it is.   A number of the founders of the agile movement developed their forms of agile on fixed-scope projects. As I write this, I’m working myself on an 18-month project with about 20 people and a [...]]]></description>
				<content:encoded><![CDATA[<p>It’s a common misconception that agile processes can’t be used with fixed scope.  But a misconception is exactly what it is.   A number of the founders of the agile movement developed their forms of agile <em>on fixed-scope projects.</em> As I write this, I’m working myself on an 18-month project with about 20 people and a fixed(ish) scope (see below).  So it can be done.  But how?</p>
<p>There are several different strategies you can use:</p>
<h2>Strategy 1: Fix the scope and flex the price</h2>
<p>This keeps scope management very simple, you just build all of it.  The catch is it may take longer than you expected, so you may need to flex the price through a time-and-materials contract or some kind of <a href="http://www.agilekiwi.com/estimationandpricing/target-cost-contracts/">sharing of financial risk</a>.  Understandably, this risk of cost overruns renders this simple approach unsuitable in many environments.</p>
<h2>Strategy 2: Work in priority order and stop when the money runs out</h2>
<p>(Admittedly, this is not exactly <em>fixed</em> scope.) This is very commonly recommended on agile projects, <a href="http://www.agilekiwi.com/estimationandpricing/cutting-scope-is-not-the-whole-answer/">too commonly in my opinion</a>.  But again, it has the virtue of being relatively simple.  Do the most beneficial stuff first, leaving the least beneficial until last.  When the money runs out, just stop and don’t do the rest.  Agile makes this approach possible – but not mandatory.</p>
<h2>Strategy 3: Implement remaining features more simply when short of time</h2>
<p>There are many factors that influence the effort required to develop a feature (or user story, depending on your terminology).  Some of those factors are probably under your control: e.g. How extensive is the validation? How much effort do we put into optimising the user experience (UX) and appearance?  Do we fully automate everything, or do we allow manual overrides so we don’t have to code every single  edge case?  Can we think of something that would save development time, and still meet the overall business goal (albeit in a different way from what was originally expected)?</p>
<p>If you are using good <a href="http://www.agilekiwi.com/earnedvalue/resources/">earned value tracking</a> you should know, <em>within the first quarter of the project</em>, whether you are likely to run out of time at the end.  Once you find that out, immediately start seizing all these opportunities to simplify the remaining 75% of the project.  And, because you have good earned value tracking, you can <em>justify</em> the simplifications to your stakeholders.  The aim is to deliver all of the planned <em>business benefits</em>, just with simpler implementations than might have been originally expected.</p>
<p>We’re using a variant of this strategy on my current project.  We built the highly-used parts of the system first, taking a lot of care with their appearance and usability. The second half of the project consists of functionality that is much less commonly used, so here usability and appearance are much less important. (If it takes a user a few extra minutes to do something, it doesn’t really matter if they only do that thing a few times each year.) So for the second half of the project, we have consciously shifted our design approach away from ease of use, and towards simplicity of implementation.  Because we were using earned value-like tracking, we can justify this change of approach to users and management.</p>
<h2>Strategy 4: Split each feature (or user story) into essential and nice-to-have parts</h2>
<p>This a refinement of the previous strategy. Right from the start of the project, you split features/user stories into two pieces: an essential minimum piece, which you implement early, and nice-to-have embellishments (such as advanced data validation or visual styling) which you defer to the tail end of the project.  If you run out of time, you drop some of the embellishments from the tail, and still deliver a working system with the full scope of capability/functionality.</p>
<h2>Strategy 5: Make multiple passes over each story, doing the basics first and then improving it later</h2>
<p>Similar to strategy 4, but you may “visit” a given user story 3 or more times within the project, instead of just twice as in Strategy 4.  I like this in theory, but in practice I think it’s too hard to used earned value or burn-chart tracking in this strategy.  Whereas in strategy 4, I feel that earned value remains (just) feasible.</p>
<p>[Tim Wright's comment,  below, gives more details on how this strategy can be done]</p>
<h1>Summary</h1>
<p>The last three strategies are all variations on a theme. Within a single project, you may use several of them, and maybe also resort to strategy 2 for a few user stories.</p>
<p>I recently heard the phrase “value management” to describe the work of deciding not only what to build, but also how simply or thoroughly to build it  The aim is to meet the business goals with the optimal expenditure of effort – i.e. do what needs to be done, without overspending on superfluous details.</p>
<h1>Further Reading</h1>
<p>All of the following are excellent.</p>
<p>Alistair Cockburn’s <a href="http://alistair.cockburn.us/Design+as+Knowledge+Acquisition">Trim the Tail</a>.  A rich explanation of the theory and practice of strategies 4 and 5, with significant additional benefits in risk management.</p>
<p>Alistair’s <a href="http://alistair.cockburn.us/The+A-B+work+split,+feature+thinning+and+fractal+walking+skeletons/v/slim">list of related strategies</a>.</p>
<p>Jeff Patton’s concept of Feature Thinning: Jeff’s a leading practitioner of Strategy 5. See: <a href="http://www.stickyminds.com/sitewide.asp?ObjectId=10330&amp;Function=DETAILBROWSE&amp;ObjectType=COL&amp;sqry=%2AZ%28SM%29%2AJ%28COL%29%2AR%28createdate%29%2AK%28colarchive%29%2AF%28%7E%29%2A&amp;sidx=31&amp;sopp=10&amp;sitewide.asp?sid=1&amp;sqry=%2AZ%28SM%29%2AJ%28COL%29%2AR%28createdate%29%2AK%28colarchive%29%2AF%28%7E%29%2A&amp;sidx=31&amp;sopp=10">Finish on time by managing scale</a>, <a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;ObjectType=COL&amp;ObjectId=13178&amp;tth=DYN&amp;tt=siteemail&amp;iDyn=2">Difference between incremental and iterative</a>, <a href="http://www.agileproductdesign.com/blog/acurate_estimate_red_herring.html">Accurate estimation = red herring</a>  Jeff has often used these techniques on fixed-scope, fixed-price projects.</p>
<p>Description from an agile company called Atomic Object, of how they operate with fixed budget and controlled (rather than fixed): <a href="http://spin.atomicobject.com/2011/04/27/fixed-budget-fixed-scope-high-quality-custom-software/">here</a> and <a href="http://spin.atomicobject.com/2011/03/22/time-and-materials-is-dead/">here</a>.</p>
<p>Martin Fowler’s <a href="http://martinfowler.com/bliki/ScopeLimbering.html">Scope Limbering</a></p>
<p>The opening section my my own <a href="http://www.agilekiwi.com/EarnedValueForAgileProjects.pdf">agile earned value (pdf</a>) has more info on why fixed scope is a valid option in agile.</p>
<p>I’ve also posted a summary of <a href="http://www.agilekiwi.com/estimationandpricing/estimation-summary-for-agile-projects-nov-2011/">estimation tips for agile projects</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/earnedvalue/agile-with-fixed-scope/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Alistair Cockburn in Wellington</title>
		<link>http://www.agilekiwi.com/other/news/alistair-cockburn-in-wellington/</link>
		<comments>http://www.agilekiwi.com/other/news/alistair-cockburn-in-wellington/#comments</comments>
		<pubDate>Sun, 03 Mar 2013 08:14:21 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=809</guid>
		<description><![CDATA[If you work in Wellington, NZ, you have an opportunity this month which may not come your way again for a long time. Alistair Cockburn, one of my all-time agile heroes, is visiting in Wellington.&#160; Not only is he speaking at the Agile NZ conference, and running courses before and after the conference, but he’s [...]]]></description>
				<content:encoded><![CDATA[<p>If you work in Wellington, NZ, you have an opportunity this month which may not come your way again for a long time. Alistair Cockburn, one of my all-time agile heroes, is visiting in Wellington.&#160; Not only is he speaking at the <a href="http://www.agilenz.co.nz/">Agile NZ conference</a>, and running <a href="http://www.assurity.co.nz/community/news-and-events/alistair-cockburn-in-new-zealand/">courses</a> before and after the conference, but he’s available for half-day, full-day or multi-day consultation at your workplace.</p>
<p>Alistair has a great approach to&#160; agile, extremely well-informed without becoming dogmatic.&#160; I’ve described more about his approach to agile, and how important it is, <a href="http://www.agilekiwi.com/other/agile/faith-doubt-and-evidence-agile-as-religion-versus-agile-as-social-science/">here</a>.&#160; When you talk with Alistair, he makes you think – and he also makes himself think (so you get advice tailored to <em>your</em> particular situation).&#160; At the risk of sounding like some book’s dust jacket: Alistair is co-author of the <a href="http://agilemanifesto.org/">Agile Manifesto</a>, co-author of the <a href="http://en.wikipedia.org/wiki/PM_Declaration_of_Interdependence">Declaration of Interdependence</a> (great idea), co-founder of the <a href="http://www.icagile.com/">International Consortium for Agile</a> (I really like their approach to agile training), author of 5 books from use cases to agile development, and a specialist in agile requirements gathering, development, methods, and organizational processes.</p>
<p>I asked Alistair to describe what he can offer to Wellington teams, and he replied:</p>
<ul>
<ul>
<li>align different parties&#8217; views on what agile is and how it fits into the company (e.g. 1/2 day)</li>
<li>organizational &quot;blood-pressure&quot; check on adoption of agile and unaddressed ailments in general (2-3 days)</li>
<li>coaching on use cases, user stories, project management, agile adoption (1/2 &#8211; 2 days)</li>
</ul>
</ul>
<p>He’s done this kind of work for many other teams around the world.&#160; If you’re interested in tapping into his expertise while he’s in town, email Alistair directly. To prevent it being harvested by spam bots, I’ll describe his email address to you as follows: the part before the ‘@’ is ‘TOtherAlistair’ (short for The Other Alistair) and the part after the ‘@’&#160; is ‘aol.com’.</p>
<p>By the way, also in Wellington this month, and speaking at the conference and at <a href="http://www.meetup.com/AgileWelly/events/106562842/">AgileWelly</a>, is <a href="http://www.agileproductdesign.com/">Jeff Patton</a>.&#160; Jeff’s an excellent speaker on defining and managing the scope of agile projects.&#160; Both Jeff and Alistair have been heavily involved in the agile community in Salt Lake City, Utah, which seems to be a breeding ground for great agile ideas.&#160; I don’t know whether Jeff is available for consulting work while he’s here, but if you’re struggling with defining or scoping agile projects, get in touch with him and ask!</p>
<p>Finally, Alistair’s surname is pronounced “Co-burn” the Scottish way.&#160; I don’t know of any other Scottish words with a silent “ck” :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/alistair-cockburn-in-wellington/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Faith, doubt and evidence &#8211; agile as religion versus agile as social science</title>
		<link>http://www.agilekiwi.com/other/agile/faith-doubt-and-evidence-agile-as-religion-versus-agile-as-social-science/</link>
		<comments>http://www.agilekiwi.com/other/agile/faith-doubt-and-evidence-agile-as-religion-versus-agile-as-social-science/#comments</comments>
		<pubDate>Sun, 03 Mar 2013 05:51:42 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=803</guid>
		<description><![CDATA[My first exposure to Agile was in the early 2000’s, when a friend leant me the Schwaber and Beedle Scrum book.  It kept talking about mysterious  “emergent properties”, which were apparently the good things that would inevitably happen when you followed the process.  But it never really explained why those properties would emerge and, to [...]]]></description>
				<content:encoded><![CDATA[<p>My first exposure to Agile was in the early 2000’s, when a friend leant me the <a href="http://www.amazon.com/Agile-Software-Development-Scrum/dp/0130676349">Schwaber and Beedle</a> Scrum book.  It kept talking about mysterious  “emergent properties”, which were apparently the good things that would inevitably happen when you followed the process.  But it never really explained <em>why</em> those properties would emerge and, to my mind, it never even gave satisfactory evidence that they really <em>would</em> emerge.</p>
<p>That was my first taste of agile as a belief-based movement.  It’s dangerous ground, a philosophical quicksand which has grown over the following years – to enthral some and to alienate others.  I vividly remember a presentation, again on Scrum, which I paid to attend some years later. It reminded me of something which no professional event should ever resemble: a recruiting session for a strange religious cult.  The kind where the charismatic speaker sways all listeners with his eloquence and fervour… then gets arrested three years later for embezzlement and child abuse.  (I once stayed in the commune of just such a cult.  After one uneventful yet unsettling night, I was glad to see the last of it.  Years later, the leader was indeed arrested!)</p>
<p><strong>Agile as a belief system</strong></p>
<p>At its worst and most cult-like extremes, belief-based agile can be dismissed out-of-hand, and rightly so.  But at the milder end of the scale, such as the Schwaber-Beedle book, it serves a valid purpose.  It presents a clear and compelling introduction to agile, which is great for people who have never heard about it before.  It worked for me.  My team tried what we read in the book, and we loved it. It was great to have such a simple introduction to agile.  Without that simplicity, we might never have got started.</p>
<p>But then we started to struggle.  Our projects didn’t seem to fit the book.  We had constraints which the book didn’t even mention.  I began to suspect Scrum was good for other people but not quite right for us.</p>
<p>But what bothered me more was that I still didn’t <em>understand</em> it.  What the heck are these so-called emergent properties anyway? And how do you force them to happen? ;-)</p>
<p><strong>Agile as (social) science</strong></p>
<p>I wasn’t until I read Alistair Cockburn’s book <a href="http://www.agilekiwi.com/other/agile/crystal-clear-methodology/">Crystal Clear</a> that things started to make sense.  The book is not about Scrum, it’s about Alistair’s rather different formulation of agile (more on that in a moment).  And yet, it was only by reading Crystal Clear that I actually understood Scrum.  Although it uses different terminology from Scrum, Crystal Clear filled in the missing pieces and answered my questions about Scrum’s “emergent properties”.</p>
<p>But Crystal Clear did three things which even more important:</p>
<ol>
<li>It showed that <strong>agile can be based on evidence and science</strong>.  (Although, when you base it on science, agile turns out slightly, yet significantly, different from the &#8220;agile&#8221; you may be accustomed to.)  I&#8217;m not talking here about the popular misconception of science-as-blind-faith-in-experts, but about the true nature of science where even the experts question their own judgement and are determined to follow the evidence where ever it may lead.  Crystal Clear grew out of Alistair&#8217;s PhD research (which in turn grew from his process work at IBM and elsewhere). Based on observations of real-world projects, Alistair formed hypotheses about the factors that led to success in software development.  Then he painfully discarded one hypothesis after another, as the evidence demanded.  He eventually arrived at the family of methodologies known as Crystal, of which Crystal Clear is the version applicable to small teams.  (Alistair’s development of Crystal <a href="http://c2.com/cgi/wiki?CrystalClearMethodology">preceded</a> the founding of the agile movement.  He was later one of the 17 co-creators of the <a href="http://agilemanifesto.org/">Agile Manifesto</a>.)</li>
<li>It showed that <strong>agile should be flexible, to suit the nature of humans</strong>.  It is impossible to read Crystal and not be struck by how human-friendly it is;  how it allows, and in fact requires, variation to meet your circumstances; and how one-size-fits-all rules are the very antithesis of agile.</li>
<li>It explained that <strong>simple belief-based formulations of agile are the starting point, not the destination</strong>.  The common rigid, belief-based formulation of agile is an ideal learning tool, but it’s only the starting point on the learning journey, not the end.</li>
</ol>
<p><strong>Conclusion</strong></p>
<p>Today, I happily use Scrum – informed by and infused with a healthy dose of Crystal Clear.  If you are not familiar with Crystal Clear and Alistair’s work in general, you owe it to yourself, and your project, to learn.</p>
<p>Seek a broader perspective and, at the risk of being facetious, don’t stay in the commune until the leader gets arrested!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/faith-doubt-and-evidence-agile-as-religion-versus-agile-as-social-science/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Become practiced in making changes</title>
		<link>http://www.agilekiwi.com/other/agile/become-practiced-in-making-changes/</link>
		<comments>http://www.agilekiwi.com/other/agile/become-practiced-in-making-changes/#comments</comments>
		<pubDate>Tue, 04 Sep 2012 09:21:24 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=773</guid>
		<description><![CDATA[Agile has always embraced change.&#160; But businesses are still be tempted to minimise those changes, by trying to get things “right” first time.&#160; On my current project, we’re realised that minimising change is not necessarily a good thing. Why? After the system goes live, we must be able to change it.&#160; (In our opinion, an [...]]]></description>
				<content:encoded><![CDATA[<p>Agile has always embraced change.&#160; But businesses are still be tempted to <em>minimise</em> those changes, by trying to get things “right” first time.&#160; </p>
<p>On my current project, we’re realised that minimising change is not necessarily a good thing. Why? After the system goes live, we <em>must</em> be able to change it.&#160; (In our opinion, an unmaintainable system would be a failure.)&#160; So… if we are going to successfully change the system <em>after</em> go-live, then we must <em>practice</em> making changes <em>before </em>go live.&#160; Without such practice, how would we know whether the architecture is maintainable?&#160; How would we know whether the team has the necessary skills and confidence to safely change the code?</p>
<p>So each mistake, dead-end, or change of direction has a silver lining: it’s a chance for us to practice the essential skill of changing our code.&#160; We <em>need</em> these mistakes to happen, so we can practice correcting them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/become-practiced-in-making-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are you pair-programming in New Zealand?</title>
		<link>http://www.agilekiwi.com/other/news/are-you-pair-programming-in-new-zealand/</link>
		<comments>http://www.agilekiwi.com/other/news/are-you-pair-programming-in-new-zealand/#comments</comments>
		<pubDate>Sun, 15 Jul 2012 01:41:28 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=769</guid>
		<description><![CDATA[I&#8217;ve just been engaged in very interesting discussion of pair programming with Arlo Belshee.  Unlike me, Arlo has lots of successful experience with pairing.  If you&#8217;ve been following my recent posts on pairing, I definitely recommend that you check out Arlo&#8217;s new comments on them, and also his own post and its comments here. He [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve just been engaged in very interesting discussion of pair programming with <a href="http://arlobelshee.com/">Arlo Belshee</a>.  Unlike me, Arlo has lots of successful experience with pairing.  If you&#8217;ve been following my <a href="http://www.agilekiwi.com/other/agile/expertise-meets-pair-programming/">recent</a> <a href="http://www.agilekiwi.com/other/agile/pair-programming-wrap-up/">posts</a> on pairing, I definitely recommend that you check out Arlo&#8217;s new comments on them, and also <a href="http://arlobelshee.com/post/is-pair-programming-for-me">his own post and its comments here</a>.</p>
<p>He shows that pairing is a form of expertise, that takes time and effort to develop, just like any other type of expertise.</p>
<p>Furthermore, I would suggest, it&#8217;s very hard to imagine successful pairing if you&#8217;ve never actually seen it.  Which brings me to the point of this post: is there anyone here in New Zealand who is doing pair programming and who might be interested in letting myself and a couple of colleagues see how you do it?  We work for <a href="http://tbfree.org.nz/">a registered charity</a> (so we&#8217;re definitely not one of your competitors).  I&#8217;m hoping that, like many agile teams, you&#8217;d like to share your success stories.  If so, I&#8217;d love to hear from you.  My email address is on the <a href="http://www.agilekiwi.com/contact/">contact</a> page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/are-you-pair-programming-in-new-zealand/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Looking for a Senior Tester</title>
		<link>http://www.agilekiwi.com/other/news/looking-for-a-senior-tester/</link>
		<comments>http://www.agilekiwi.com/other/news/looking-for-a-senior-tester/#comments</comments>
		<pubDate>Sat, 16 Jun 2012 02:51:38 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=764</guid>
		<description><![CDATA[At work, I need a senior tester for the TBfree New Zealand programme. We&#8217;re world leaders in our field, our work helps to safe-guard New Zealand&#8217;s biggest industries, and along the way we happen to protect lots of native wildlife from predators. Do you have strong experience in agile testing? Or are you a good [...]]]></description>
				<content:encoded><![CDATA[<p>At work, I need a senior tester for the <a href="http://tbfree.org.nz/">TBfree New Zealand</a> programme. We&#8217;re world leaders in our field, our work helps to safe-guard New Zealand&#8217;s biggest industries, and along the way we happen to protect lots of native wildlife from predators.</p>
<p>Do you have strong experience in agile testing? Or are you a good senior tester who wants to <em>learn</em> agile? Either way, we&#8217;re keen to hear from you.</p>
<p>Our project is just getting started. If you&#8217;d like to be part of a friendly, co-located agile team in central Wellington (NZ), let&#8217;s talk! The best way to contact me is via <a title="Contact" href="http://www.agilekiwi.com/contact/">email</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/looking-for-a-senior-tester/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Pair Programming Wrap-Up</title>
		<link>http://www.agilekiwi.com/other/agile/pair-programming-wrap-up/</link>
		<comments>http://www.agilekiwi.com/other/agile/pair-programming-wrap-up/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 08:53:00 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Understanding ourselves]]></category>
		<category><![CDATA[expertise]]></category>
		<category><![CDATA[pair programming]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=728</guid>
		<description><![CDATA[I previously blogged about the nature of expertise, and resulting questions about the efficiency of expert-expert pairings.  Here I’d like to tidy up some loose ends with regard to the relationship between expertise and pair programming. How does expertise develop? Kahneman’s book points out that expertise develops, virtually inevitably, when a practitioner has long experience [...]]]></description>
				<content:encoded><![CDATA[<p>I previously blogged about the <a href="http://www.agilekiwi.com/peopleskills/understanding-ourselves/becoming-an-expert/">nature of expertise</a>, and resulting questions about the <a href="http://www.agilekiwi.com/?p=688">efficiency of expert-expert pairings</a>.  Here I’d like to tidy up some loose ends with regard to the relationship between expertise and pair programming.</p>
<h2>How does expertise develop?</h2>
<p><a href="http://www.amazon.com/Thinking-Fast-and-Slow-ebook/dp/B005MJFA2W/ref=tmm_kin_title_0?ie=UTF8&amp;m=A3QI763M62X7GQ">Kahneman’s book</a> points out that expertise develops, virtually inevitably, when a practitioner has long experience in a field where both of the following apply:</p>
<ol>
<li>There is indeed some correlation between decisions and outcomes. (Conversely, no amount of practice will ever give you expertise in predicting the next outcome on a roulette wheel!) In the field of software development, our design decisions do indeed influence the outcomes of correctness, performance and maintainability.</li>
<li>Practitioners receive feedback on their decisions (so that their inner neural network can learn). In other words, we make decisions, and then actually see how those decisions affect the correctness, performance and maintainability of our software. As long as we maintain an open-minded willingness to learn, and we don’t change jobs too often, we will receive this feedback and therefore expertise will develop.</li>
</ol>
<h2>A case in favour of pairing</h2>
<p>While I’ve questioned the efficiency of expert-expert pairings, the science of expertise suggests a possible benefit of expert-novice pairings – a benefit which I have not seen described elsewhere. I suspect that such pairing may help the novice to develop expertise more quickly. Not because of what they expert <em>says</em> (as implied by some other descriptions of expert-novice parings), but because of what the expert <em>does</em>. Remember that much of what we call “expertise” takes place unconsciously. So the expert couldn’t put it into words even if they tried. But, perhaps, there is some value in less experienced programmers <em>seeing</em> how the expert works. Maybe that will give the less-experienced member of the pair a chance to pick up on things which the expert could never teach verbally.</p>
<p>A related point is that much of programming is about how the software is <em>produced</em>. Yes, you can learn from reading other people’s code after it’s finished (and we should do this more often) but I think we might learn more from observing <em>how</em> that code is produced &#8211; What kind of things did the author try as they worked? Where did they backtrack? How did unit tests guide their work? What are their special Google search tricks for finding relevant information?</p>
<p>(Note: don&#8217;t forget the conventional advice that &#8220;pair programming is best done by peers&#8221;. An expert-novice pairing is arguably not at all the same thing as regular pair programming.  My point here is that it might be a valuable tool for transferring the expert&#8217;s &#8220;automatic&#8221; (&#8220;non-concsious&#8221;) skills.  I would see it being used in moderation; rather than  for 6 or 8 hours a day like regular pairing.)</p>
<h2>The mathematics of paired experts</h2>
<p>I discussed my <a href="http://www.agilekiwi.com/?p=688">previous post</a> with a friend before writing it. We agreed that experts can’t discuss the first part of their thinking (the automatic bit), and that discussing the second part (the effortful bit) takes longer because the experts have to slow down to the speed of human speech.  However my friend suggested that the collaboration will still pay off, due to improved quality of the final decision.</p>
<p>That could be a very strong argument if feedback from a peer was the only kind of feedback available.  But, it’s not.  Experts also get feedback <a href="http://www.agilekiwi.com/other/news/conversation-with-the-situation-a-software-example/">from the situation</a>, via unit tests etc.</p>
<p><strong>Example:</strong> An expert is looking for the cause of a defect.  The bug is reproducible, but the expert doesn’t know what causes it.  Hunting for the bug is like a search.  At each step in the process, the expert chooses a “move” that will narrow the range of possible causes.  Moves may include setting particular breakpoints, looking for patterns in the inputs that cause the bug, stepping through the code, adding additional unit tests, and so on.  Each move narrows down the search space, until eventually the defect is found.  The better the move, the more it narrows the search space.  A really good first move might eliminate 90% of possible causes, leaving only 10% remaining.  A less efficient move may eliminate only 50% of the possible causes, leaving the other 50% still to be searched.</p>
<p><strong>Question:</strong> if the expert is paired with another, will the pair choose substantially better moves?  Yes, they probably will.  After some discussion, the pair may choose a “90% move” (eliminating 90% of possible causes) while an expert working alone might only come up with a “70% move”.</p>
<p>But what about the time cost of the pair’s discussion?  In the time that the pair spend discussing one move, a solo expert might try several. Imagine that a solo expert can make two moves in the time it takes a pair to discuss one.  If the solo expert tries one 70% move, followed by another, they’ll cut the search space down to 9% of the original space. [ (100% – 70%)^2 =  30%^2 = 9%].   That’s about the same amount of progress as the pair’s “90% move”.   So the solo expert has produced the same result as the pair, in the same amount of time, but for <em>only half the personnel cost</em>.  If the solo expert&#8217;s cycle time is even shorter still, allowing them to try 3 or 4 things in the time that the pair tries one, the solo expert will outperform the pair in both cost <em>and</em> elapsed time.</p>
<p>In summary I suggest that: <em>by using a shorter cycle time</em> a solo expert might outperform a pair of experts.  This a special case of the general principle that “starting to iterate” often beats “improving the plan”.</p>
<h2>So how should experts interact?</h2>
<p>If experts avoid pair programming, will they end up working completely alone?  No.  I think there are at least two options worth considering:</p>
<p><span style="text-decoration: underline;">Option 1: Expert “pair preview”<br />
</span><br />
I’m suggesting this based on a real life example.  I’m calling it “preview” rather than “review” because it comes before the code is written.  I’ll anonymise it by changing the names to “Alice” and “Bob”.</p>
<p>Alice was (and still is) an awesome programmer, whose expertise I greatly respect.  She was working alone on a difficult part of the system.  Once Alice had an initial design in mind, she ran it by Bob for review.  So far, so good.  But the review is where things came unstuck.  Alice and Bob didn’t know Kahneman’s concept of effortful versus automatic thought.  Alice described her proposed design to Bob.  Bob understood it, but had a hunch that an alternative design would be simpler.  Bob didn’t know it, but his half-formed alternative design was generated by the automatic “part” of his mind.  Because it was automatically-generated, it seemed like nothing but a vague hunch.  Consequently neither Bob nor Alice gave it the attention it deserved.</p>
<p>In hindsight, they should have recognised Bob’s hunch for what it was: an instinctive product of Bob’s long expertise, and therefore something worth looking into.  Perhaps Alice should have spent a couple of days <a href="http://www.extremeprogramming.org/rules/spike.html">spiking</a> Bob’s idea.  That would have tested the hunch, and by having Alice do the spiking (rather than Bob, who had suggested it), we would have leveraged Alice’s existing detailed knowledge of the problem space.  (Having Alice do the spike would have also made it psychologically easier for her to embrace the new idea, if it did indeed prove to be the best.)</p>
<p>Unfortunately, no such spiking happened, and the two programmers did not manage to have an effective discussion of the problem.  Alice spent about 5 weeks implementing her proposed design.  Some years later, it proved inadequate to the growing needs of the system, at which point it was re-implemented along the lines of Bob&#8217;s hunch &#8211; in only 2.5 days.</p>
<p><span style="text-decoration: underline;">Option 2: “Expert Escalates”</span></p>
<p>Even experts get stuck.  Part of being a responsible expert is to realise when you’re not making productive progress, and seek out someone to bounce ideas off.  Perhaps they will see something that you haven’t, or spark some new ideas.</p>
<h2>What about the evidence?</h2>
<p>Two commenters on my previous post suggested that my concerns were all very well, but couldn’t be valid because the research shows that pair programming works.  I promised to respond with some comments on “the evidence”.</p>
<p>It turns out that the evidence is rather more mixed that you might suppose. Here’s a quote from the abstract of a <a href="http://en.wikipedia.org/wiki/Meta-analysis">meta analysis</a> done by the excellent <a href="http://simula.no">Simula Research Laboratory</a>.</p>
<blockquote><p>…between-study variance is significant, and there are signs of publication bias among published studies on pair programming.  A more detailed examination of the evidence suggests that pair programming is faster than solo programming when programming task complexity is low and yields code solutions of higher quality when task complexity is high. <strong>The higher quality for complex tasks comes at a price of considerably greater effort<br />
</strong>&#8211; from <a href="http://www.sciencedirect.com/science/article/pii/S0950584909000123">here</a>, or <a href="http://simula.no/research/se/publications/Simula.SE.309">alternate link</a> [emphasis added]</p></blockquote>
<p>The finding, that paired effort for complex tasks is much greater than solo effort, appears consistent with my above concerns and reasoning about paired experts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/pair-programming-wrap-up/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Clarification to Paired Experts Post</title>
		<link>http://www.agilekiwi.com/other/news/clarification-to-paired-experts-post/</link>
		<comments>http://www.agilekiwi.com/other/news/clarification-to-paired-experts-post/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 06:01:16 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=723</guid>
		<description><![CDATA[FYI I&#8217;ve just appended a small clarification to the end of my recent Pairing and Experts post, clarifying what&#8217;s meant by &#8220;expert&#8221;.]]></description>
				<content:encoded><![CDATA[<p>FYI I&#8217;ve just appended a small clarification to the end of my recent <a title="Expertise versus Pair Programming" href="http://www.agilekiwi.com/other/agile/expertise-meets-pair-programming/">Pairing and Experts pos</a>t, clarifying what&#8217;s meant by &#8220;expert&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/clarification-to-paired-experts-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expertise versus Pair Programming</title>
		<link>http://www.agilekiwi.com/other/agile/expertise-meets-pair-programming/</link>
		<comments>http://www.agilekiwi.com/other/agile/expertise-meets-pair-programming/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 19:00:04 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Understanding ourselves]]></category>
		<category><![CDATA[expertise]]></category>
		<category><![CDATA[pair programming]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=688</guid>
		<description><![CDATA[Let’s start this post with a thought experiment.  Not in software development, but in playing chess. Imagine two novice chess players, working as a team. (We’ll assume their opponent is a computer, so it can’t overhear them talk.)  Our two novices will benefit greatly from their collaboration.  They’ll discuss all their thinking – everything from [...]]]></description>
				<content:encoded><![CDATA[<p>Let’s start this post with a thought experiment.  Not in software development, but in playing chess.</p>
<p>Imagine two novice chess players, working as a team. (We’ll assume their opponent is a computer, so it can’t overhear them talk.)  Our two novices will benefit greatly from their collaboration.  They’ll discuss all their thinking – everything from possible moves, to correcting each others mistakes, to “can you remind me how a knight moves?”.  Working together like this they will make fewer mistakes, and generate better moves than each would have done alone.</p>
<p>But what if we paired two chess masters?  <a href="http://www.agilekiwi.com/peopleskills/understanding-ourselves/becoming-an-expert/">Scientific research proves</a> that the thinking of experts is different. Much of it happens as automatic pattern recognition rather than conscious reasoning.  When a chess master looks at a chess position, (good) possible moves spring to mind immediately.  As described in my previous post, these “candidate moves” are generated directly by the brain’s underlying neural network.  Neural networks can’t explain their own reasoning, so the master doesn’t consciously know <em>why</em> those moves came to mind.  Of course, the moves are indeed based on the master’s long experience, but the mapping from prior experience to current ideas is not open to inspection by the conscious mind.</p>
<p><span id="more-688"></span></p>
<p>So how will our two chess masters collaborate?  Neither can explain to the other <em>why</em> they thought of particular moves – because the conscious, effortful part of the mind doesn’t actually <em>know</em>. So what will their conversation consist of?</p>
<ul>
<li>They <strong>can’t discuss the justification</strong> for their proposed moves, because as we just saw, they don’t <em>know</em> the justification.  (Several writers, including Nobel-winner Daniel Kahneman, point out that if you ask an expert, “Why did you suggest that?”, their effortful mind will indeed come up with a justification of the idea, but the justification is produced <em>after the fact</em>. It doesn’t necessarily match the invisible reasoning that originally <em>created</em> the idea.  In fact, I’d suggest that since the invisible reasoning consisted of pattern matching in a neural network, any attempt at a logical sequential description would be incomplete at best.)</li>
<li>Instead, imagine that they pool their sets of candidate moves, and then discuss <em>which</em> of those moves to actually play.  This approach makes sense because, as we saw in the <a href="http://www.agilekiwi.com/peopleskills/understanding-ourselves/becoming-an-expert/">previous post</a>, selecting <em>one</em> of the candidate moves requires effortful thought.  And effortful thoughts can be perceived and described by the thinker.  So let’s assume our two chess masters try to share these thoughts.  If they do, I believe they’ll run into another problem: <strong>verbalizing the thought process slows it down – a lot</strong>.  A master thinks through many possibilities: What would happen if I play this move?  How would my opponent probably respond?  How would I respond to that?  A master can process these “what ifs” relatively quickly.  Not nearly as quickly as the automatic thinking that produced the initial set of candidate moves, but much, much faster than the rate of human speech.   To share thoughts verbally, the master must slow down to speaking speed.  In summary, although it’s possible to verbalize these thoughts, there’s a high (performance) cost in doing so.</li>
</ul>
<h2>Pair Programming</h2>
<p>Now let’s consider the analogy to pair programming. Novice programmers don’t yet make significant used of automatic pattern recognition, instead they rely more heavily on effortful thought.   Therefore their thoughts are open to introspection and can be verbally shared.  Experts, on the other hand, make significant use of the “automatic” part of their mind.  So most of their thought processes are not open to conscious introspection, and the remainder are so fast that verbalization carries a huge performance cost.</p>
<p>I think this may explain the confusion and frustration that some experienced programmers, including myself, feel when we’re asked to pair.  We can’t see how to map our automatic thought processes into the driver/navigator model of pair programming.  Furthermore we probably can’t explain what the problem is – at least, I know I couldn’t, until I read <a href="http://www.amazon.com/Thinking-Fast-and-Slow-ebook/dp/B005MJFA2W/ref=tmm_kin_title_0?ie=UTF8&amp;m=A3QI763M62X7GQ">Kahneman’s effortful/automatic description of the brain</a>.  His book points out that because automatic thought is, well, <em>automatic</em>, we lack awareness of its role in our thinking.  Since we lack awareness, we struggle to explain the difficulty we have with pairing. I hope that greater awareness of Kahneman’s work will give us a suitable vocabulary to describe the problem.</p>
<p>I also hope to stimulate discussion.  The thought processes of an expert, which elegantly combine the automatic with the logical, are extremely efficient. I believe pairing undermines this efficiency – by leading coders to create after-the-fact justifications of their automatic intuitions, and forcing them to unpack their conscious thoughts into spoken language.  I suspect paired experts may even find themselves forced back into novice-like patterns of thought.</p>
<p>What do you think, does pairing prevent experts from performing at their best?</p>
<p><strong>Update, 31 Jan:</strong> I should clarify what I mean by &#8220;expert&#8221;.  I use the term in the sense used by Daniel Kanheman, Anders Ericsson and other researches into expertise.  But you might have seem some pair programming studies use the term “expert” in a different way, particularly those studies where all test subjects were students.  In those studies the word “expert” simply means “good performer” – a student who gets unusually good grades.  These cannot be experts in the Kahneman/Ericsson sense of term.  Developing that kind of expertise takes many years, far longer than any university degree.  Furthermore, Kahneman/Ericsson expertise is not simply about <em>possessing</em> knowledge, in the manner of an A student; instead it is about a mode of thought in which much of the knowledge is possessed <em>and processed</em> unconsciously, through <a title="Becoming an Expert" href="http://www.agilekiwi.com/peopleskills/understanding-ourselves/becoming-an-expert/">automatic pattern-recognition</a> honed by long experience.</p>
<p><strong>Update, 15 July</strong>: Arlo Belshee replied with a very informative comment, below.  He addresses the concerns of this post as follows:</p>
<blockquote><p>Pairings of experts can work very well. But they have to stop explaining <em>why</em> to each other, and just state partial <em>what</em>. Assume the other expert gets the why, or can create his own. <em>Don’t slow down the thinking to talk</em>; shorten the talking to fit within the fast cycles and focus on the part that will challenge the other guy’s thinking.  [emphasis added]</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/expertise-meets-pair-programming/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>My Keyboard Layout</title>
		<link>http://www.agilekiwi.com/other/news/my-keyboard-layout/</link>
		<comments>http://www.agilekiwi.com/other/news/my-keyboard-layout/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 00:00:10 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[off topic]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=784</guid>
		<description><![CDATA[I tried the Dvorak keyboard layout in late 2000.  Hated it. It&#8217;s definitely designed for mechanical typewriters not electronic keyboards, since it attempts to maximise alternating between left and right hands. That&#8217;s great with physical levers moving around in a typewriter, but is counter productive in an electronic keyboard. Back in 2000, there were very few other [...]]]></description>
				<content:encoded><![CDATA[<p>I tried the Dvorak keyboard layout in late 2000.  Hated it. It&#8217;s definitely designed for mechanical typewriters not electronic keyboards, since it attempts to maximise alternating between left and right hands. That&#8217;s great with physical levers moving around in a typewriter, but is counter productive in an electronic keyboard.</p>
<p>Back in 2000, there were very few other (documented) options.  But I did find the Maltron layout.  It&#8217;s cleverly designed to put common pairs of letters together, so you can just &#8220;roll&#8221; you hand and type them in a single motion &#8211; for instance &#8220;TH&#8221; can be typed in a single motion.</p>
<p>The problem with the Maltron layout is that it places &#8216;E&#8217; on a special thumb key &#8211; which is only present on Maltron&#8217;s specialist hardware. (Very good hardware, apparently, especially if you have RSI, but beyond my budget at the time.)</p>
<p>So, I programmed the Maltron layout into my much cheaper Kinesis contoured keyboard, and then moved &#8216;E&#8217; into a more normal place (because E just didn&#8217;t work for me on the <em>Kinesis</em> thumb keys, which are different from those on the Maltron.)  The change required moving a few other keys around to make room  After some analysis and testing, here&#8217;s the layout I ended up with. (The number row remains standard, and is not shown):</p>
<p><a href="http://www.agilekiwi.com/other/news/my-keyboard-layout/attachment/modifiedmaltronlayout/" rel="attachment wp-att-786"><img class="alignnone size-full wp-image-786" title="ModifiedMaltronLayout" src="http://www.agilekiwi.com/wp-content/uploads/2013/02/ModifiedMaltronLayout.png" alt="" width="683" height="134" /></a></p>
<p>The key design ideas were to retain Malton&#8217;s ease of typing common letter combinations, to work the left hand slightly harder than the right (I had discomfort in my right at the time), and to keep things really simple for my pinky fingers, by giving them little to do except press home row keys. I even moved the Shift keys to the home row.</p>
<p>The layout has worked well for me ever since.  I like it, and typing no longer seems tedious. I don&#8217;t know how &#8220;optimal&#8221; the layout is, because back then analysis programs like <a href="http://mkweb.bcgsc.ca/carpalx">Carpalx </a>didn&#8217;t exist then &#8211; and I became hooked on the layout before I finished writing my own analysis program.  I&#8217;m sharing it now just in case anyone finds any of its ideas useful (and because, unlike in 2000, Maltron&#8217;s patent has now expired so I believe it&#8217;s fine to publish a modified version).</p>
<p><strong>Warning: I am not an ergonomic expert.</strong>  In particular, note that I have put F and G into positions on the bottom row where the ring finger needs to curl to reach them.  Compared to the Maltron layout, mine therefore presumably puts more stress onto the tendon that is shared by the ring and long fingers.  The result feels fine to me, but had I known about the issue at the time, I may have done those keys differently.  I therefore feel obliged to point you that,<strong> if you choose to use this layout, you do so at your own risk.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/my-keyboard-layout/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
