<?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>Fri, 03 Feb 2012 02:51:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<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[<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>
]]></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[<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&#8230; <a href="http://www.agilekiwi.com/other/agile/expertise-meets-pair-programming/" class="read_more">Read more</a></p>]]></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>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/expertise-meets-pair-programming/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Ambiguity</title>
		<link>http://www.agilekiwi.com/other/news/ambiguity/</link>
		<comments>http://www.agilekiwi.com/other/news/ambiguity/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 02:47:47 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/other/news/ambiguity/</guid>
		<description><![CDATA[<p>Alistair Cockburn <a href="http://alistair.cockburn.us/Interview+with+Alistair+2011+for+Nicolas+Lochet">wrote</a></p>
<blockquote><p>Agile development calls for a certain amount of ambiguity and flux in the project. Not everyone enjoys ambiguity and flux. I would suggest that most people don’t.</p>
</blockquote>
<p>A very good point.&#160; I think this affects some agile implementations – causing them to back away from&#8230; <a href="http://www.agilekiwi.com/other/news/ambiguity/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Alistair Cockburn <a href="http://alistair.cockburn.us/Interview+with+Alistair+2011+for+Nicolas+Lochet">wrote</a></p>
<blockquote><p>Agile development calls for a certain amount of ambiguity and flux in the project. Not everyone enjoys ambiguity and flux. I would suggest that most people don’t.</p>
</blockquote>
<p>A very good point.&#160; I think this affects some agile implementations – causing them to back away from being really agile, into a no-man’s-land between agile and waterfall.&#160; </p>
<p>Personally, I prefer the honest ambiguity of agile to the Clayton’s certainty of waterfall.&#160; Software development <em>is</em> risky.&#160; Customers and suppliers <em>do</em> learn during the project.&#160; Users <em>do</em> give better feedback from trying software than reading documents. To pretend otherwise may feel safer in the short term, but it disappoints in the long run.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/ambiguity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Email Subscriptions</title>
		<link>http://www.agilekiwi.com/other/news/email-subscriptions/</link>
		<comments>http://www.agilekiwi.com/other/news/email-subscriptions/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 07:42:10 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=557</guid>
		<description><![CDATA[<p>You can now subscribe to email updates from this blog.  This should be handy if you prefer email to RSS.  Just go to the new Subscribe page on the menu bar.</p>
<p>PS If you spot any problems with the email subscription, please let me know.  I&#8217;ve never used this particular&#8230; <a href="http://www.agilekiwi.com/other/news/email-subscriptions/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>You can now subscribe to email updates from this blog.  This should be handy if you prefer email to RSS.  Just go to the new Subscribe page on the menu bar.</p>
<p>PS If you spot any problems with the email subscription, please let me know.  I&#8217;ve never used this particular email plug-in before, so I don&#8217;t know how it will work out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/email-subscriptions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s Alive!</title>
		<link>http://www.agilekiwi.com/other/news/its-alive/</link>
		<comments>http://www.agilekiwi.com/other/news/its-alive/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 10:14:44 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/other/news/its-alive/</guid>
		<description><![CDATA[<p>My new Agile scope management tool is now live!</p>
<p>It’s called Tactyle, in reference to its emphasis on touching and interacting with the content of your project.&#160; Other key design principles include:</p>
<ul>
<li>simple, effective, and fully-automated Earned Value – in keeping with my blog posts in recent years</li>
<li>suitable</li></ul><p>&#8230; <a href="http://www.agilekiwi.com/other/news/its-alive/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>My new Agile scope management tool is now live!</p>
<p>It’s called Tactyle, in reference to its emphasis on touching and interacting with the content of your project.&#160; Other key design principles include:</p>
<ul>
<li>simple, effective, and fully-automated Earned Value – in keeping with my blog posts in recent years</li>
<li>suitable for fixed price and/or fixed scope – again, in keeping with this blog</li>
<li>based in the Story Mapping paradigm (it’s not a database, it’s not a kanban board; it’s just totally a Story Map)</li>
<li>designed to have the direct “tangible-ness” of index cards (more so than any other tool I’ve seen – IMHO) while also being authentically digital</li>
<li>low-friction (i.e. quick and easy to use)</li>
<li>deliberate simplicity (to the point that there are only two screens in the whole product)</li>
</ul>
<p>You can find videos, documentation, and the product itself at <a href="http://www.tactyle.net">www.tactyle.<strong>net</strong></a>.</p>
<p>I’ve been using it myself for about 4 months (to manage it’s own development).&#160; I hope you find it as useful, and addictive, as I have.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/its-alive/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Looking for beta testers for agile tool</title>
		<link>http://www.agilekiwi.com/other/news/looking-for-beta-testers-for-agile-tool/</link>
		<comments>http://www.agilekiwi.com/other/news/looking-for-beta-testers-for-agile-tool/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 09:52:25 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/other/news/looking-for-beta-testers-for-agile-tool/</guid>
		<description><![CDATA[<p>After years of thinking about it, and months of actually developing it, I’m now looking for beta testers for a brand new agile tool.&#160; If you like the sound of “Story Mapping + Big Visible Charts + Simplicity”, send me an email (<a href="http://www.agilekiwi.com/contact/">address here</a>), and I’ll reply with a&#8230; <a href="http://www.agilekiwi.com/other/news/looking-for-beta-testers-for-agile-tool/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>After years of thinking about it, and months of actually developing it, I’m now looking for beta testers for a brand new agile tool.&#160; If you like the sound of “Story Mapping + Big Visible Charts + Simplicity”, send me an email (<a href="http://www.agilekiwi.com/contact/">address here</a>), and I’ll reply with a link to the product.&#160; If you like this blog, then you’ll like the tool (I hope!) because it reflects the concepts and “philosophy of agile” which I blog about here.</p>
<p>(And yes, development of the tool does explain the relative silence on this blog in recent months! ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/looking-for-beta-testers-for-agile-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encyclopedia Article now on Sale</title>
		<link>http://www.agilekiwi.com/earnedvalue/encyclopedia-article-now-on-sale/</link>
		<comments>http://www.agilekiwi.com/earnedvalue/encyclopedia-article-now-on-sale/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 11:59:00 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Earned Value Management]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/earnedvalue/encyclopedia-article-now-on-sale/</guid>
		<description><![CDATA[<p>After some delay, <a href="http://www.agilekiwi.com/earnedvalue/ese/">my Encyclopedia Article</a> on Earned Value is now available <a href="http://www.tandfonline.com/doi/abs/10.1081/E-ESE-120044254">here</a>.&#160; The article aims to be</p>
<blockquote><p>An accessible and comprehensive introduction to Earned Value (EV). [It] makes extensive use of graphical charts, instead of mathematical formulae, and is suitable for readers with no prior knowledge of</p></blockquote><p>&#8230; <a href="http://www.agilekiwi.com/earnedvalue/encyclopedia-article-now-on-sale/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>After some delay, <a href="http://www.agilekiwi.com/earnedvalue/ese/">my Encyclopedia Article</a> on Earned Value is now available <a href="http://www.tandfonline.com/doi/abs/10.1081/E-ESE-120044254">here</a>.&#160; The article aims to be</p>
<blockquote><p>An accessible and comprehensive introduction to Earned Value (EV). [It] makes extensive use of graphical charts, instead of mathematical formulae, and is suitable for readers with no prior knowledge of the subject. Key topics are the fundamental principles of EVM, its history and current usage, and special considerations for applying it to software development projects.</p>
</blockquote>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/earnedvalue/encyclopedia-article-now-on-sale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conversation with the Situation &#8211; a Software Example</title>
		<link>http://www.agilekiwi.com/other/news/conversation-with-the-situation-a-software-example/</link>
		<comments>http://www.agilekiwi.com/other/news/conversation-with-the-situation-a-software-example/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 04:58:01 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=463</guid>
		<description><![CDATA[<p>As I <a href="http://www.agilekiwi.com/other/news/compliance-to-spec-considered-unprofessional/">posted recently</a>, professionals in many fields work by having a “conversation with the situation”.  What does this really mean, in software development?  To answer that question, I’ve decided to share a recent design episode from a system I’m working on.  I’ll try to capture the full “conversation&#8230; <a href="http://www.agilekiwi.com/other/news/conversation-with-the-situation-a-software-example/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>As I <a href="http://www.agilekiwi.com/other/news/compliance-to-spec-considered-unprofessional/">posted recently</a>, professionals in many fields work by having a “conversation with the situation”.  What does this really mean, in software development?  To answer that question, I’ve decided to share a recent design episode from a system I’m working on.  I’ll try to capture the full “conversation with the situation” – both my side of the conversation, and also how the situation “talked back”.</p>
<p>The design problem at hand is actually very small, just two user interface controls – a slider and a button – but this post is long.  That’s kind of the point, to illustrate that even simple things involve a non-trivial amount of “discussion” with the situation at hand.</p>
<h2>Background</h2>
<p>I’m building a scope management tool for agile teams.  This post is about one very small part of it: the portion of the user interface that controls zooming in and out.  Like Word, Excel and virtually every “document” centric application, mine will have a slider near the bottom right corner to let the user zoom in and out.  But unlike Word and Excel, my app suffers from two unique design constraints:</p>
<ul>
<li>The space available for the zoom controls is a square.  It is much taller, but also much narrower, than the zoom controls which most other apps slot into their status bars.  (Mine doesn’t have a status bar.)</li>
<li>My app needs a really easy way for users to “toggle” between being zoomed in to see detail, and zoomed out to see the big picture.  If I can’t make this easy… well I wouldn&#8217;t even want to use the app myself!</li>
</ul>
<p>My initial design sketch looked  like this:</p>
<p><a href="http://www.agilekiwi.com/wp-content/uploads/initialZoomSketch.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="initialZoomSketch" src="http://www.agilekiwi.com/wp-content/uploads/initialZoomSketch_thumb.png" border="0" alt="initialZoomSketch" width="547" height="292" /></a></p>
<h2>My Conversation with the Situation</h2>
<p>Here’s how it unfolded as I did the coding.  In the left hand column I’ve listed the actions I took.  In the right hand column, I have represented the situation’s “back talk” – the unexpected things that I learned as I went along.</p>
<table border="0" cellspacing="0" cellpadding="2" width="701">
<tbody>
<tr>
<td width="349" valign="top"><strong>Action</strong></td>
<td width="350" valign="top"><strong>Reflection/observation</strong></td>
</tr>
<tr>
<td width="349" valign="top"><em><strong><br />
Part 1: Implement the Slider</strong></em></td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top">Began by dropping a “Slider” control into the square of available screen real estate</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">Wow, that square is really small.  It makes the slider really short.</p>
<p>When the “+” and “–” buttons are added, it will need to be made even shorter, in order to make room for them.</td>
</tr>
<tr>
<td width="349" valign="top">Wonder if I could put the + and – buttons above the slider, instead of to its left and right.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">After looking a bit harder at what I’ve got so far, I realise that putting them above would force the slider down, and cut into the space that I need for the button.</td>
</tr>
<tr>
<td width="349" valign="top">Decide to omit the “+” and “-“ buttons, and let the slider have the maximum width available.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">So what about the “100%” label, where can it fit?</p>
<p>Incidentally, why does it have to say “100%”?  That’s not much use.  Why not display the <em>current value</em> instead of simply labelling the 100% point!</td>
</tr>
<tr>
<td width="349" valign="top">Try putting the current value literally right on top of the slider.  Make the text grey to reduce its visual impact.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">That looks ugly.</p>
<p>But hey, aren’t I working in a UI technology that supports partially-transparent controls? Yes!  Can I use that?</td>
</tr>
<tr>
<td width="349" valign="top">Try putting the label at the bottom, as normal black text, with a partially-transparent slider over the top.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">Yes.  That’s nice.</p>
<p>(And, as a bonus, it looks kind of cool when the number changes as you drag the slider.)</td>
</tr>
<tr>
<td width="349" valign="top"><strong><em><br />
Part 2: Fine-Tuning the Slider</em></strong></td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top">I run the app again, and play round with the slider.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">I find something I don’t like – I can drag the slider around, but then how do I get it back to 100%?  It doesn’t automatically snap to 100%, so I end up with 90-something, or something-just-over-100.  It’s annoying.</td>
</tr>
<tr>
<td width="349" valign="top">Look up the documentation for the slider control, to see what my options are.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">I can make it snap to, say, multiples of 10%.  That will let the user easily get it back to 100%.</p>
<p>But, if I turn on the snap setting, then this particular slider control actually prevents the user from dragging it to any place <em>between</em> the 10% “snap” points.  It seems wrong to have a slider than doesn’t actually <em>slide</em>.</td>
</tr>
<tr>
<td width="349" valign="top">Come up with my own solution.  Instead of using the built-in snap feature, I will let the user drag the slider wherever they like, but if they <em>click</em> on it, I’ll make it snap towards their click, onto the nearest 10% boundary.</p>
<p>Takes a few lines of code.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">Works as expected.</p>
<p>I’m concerned that the click functionality is counter-intuitive tho.  Decide to leave it as is for now (since I don’t want to spend any longer on a what is actually a minor point).  Decide to keep an eye on usability as I test the app in the future, and make changes if necessary.</td>
</tr>
<tr>
<td width="349" valign="top"><strong><br />
Part 3: Add “Auto Zoom”</strong></td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top">Put the auto-zoom button into the UI.</p>
<p>Add the word “auto” and a basic “minus” magnifying glass.</p>
<p>Fire the app up again to take a look.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">I see a problem.  I have designed the auto-zoom button for cases where the document is very large (that’s when the user will need to  zoom out for an overview).  But my test document, which I use while running the app during development, is very small.  I look at it and realise, “What does <em>auto zoom out</em> mean, in a document so small that you don’t actually need to zoom out”?</td>
</tr>
<tr>
<td width="349" valign="top">I consider whether I might hide or disable the button on small documents.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">But, if you can’t see the button when your document is small, won’t it seem weird when a button suddenly appears as your document grows?  How will you know what it is supposed to do, if you have never seen it before?</td>
</tr>
<tr>
<td width="349" valign="top">Back to the drawing board…  Can I come up with some kind of behaviour that will make sense no matter what the size the document?  Something that can be always enabled…</p>
<p>(My original thoughts involved an algorithm to compute the zoom out percentage – hence the name auto-zoom.  But, the algorithm only made sense on large documents.)</p>
<p>I decide to go for something simpler, the button will always toggle out to 33% of the current zoom level.  E.g. if you are at 100%, it will take you to 33%.  If you are at 120%, it will take you to 40%.</p>
<p>I try it.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">I like the result.  It seems easier to understand than my original idea, and appropriate (enough) for all document sizes.</td>
</tr>
<tr>
<td width="349" valign="top"><strong><br />
Part 5: Icon for the Auto Zoom</strong></td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">But there is still a problem.  The minus-in-a-magnifying glass icon just isn’t working for me.  We never normally see that icon on it’s own, it’s normally paired with the plus-in-a-magnifying-glass icon.  In my app, it looks confusing sitting there all by itself.</td>
</tr>
<tr>
<td width="349" valign="top">In a flash of so-called inspiration, I create an icon for the button, that shows a document getting smaller (zooming out)</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="350" valign="top">It’s rubbish.  Totally un-intuitive. (A fact that I confirm by asking my wife what she thinks the icon means.).<br />
Why so unintuitive…?</td>
</tr>
<tr>
<td width="349" valign="top">I realise that the problem is simple.  The icon shows the document getting smaller.  But, when you zoom out by 33% you don’t necessarily <em>see</em> a smaller document.  The document still extends to the edge of the visible screen – the only change is that there is less <em>outside</em> the screen.</p>
<p>So basing the icon on document size is wrong, because the user doesn’t see the document change size.</p>
<p>What does the user see?  They see the <em>text</em> change size. So I make a new icon, this time showing a change in font size.</td>
<td width="350" valign="top"></td>
</tr>
<tr>
<td width="349" valign="top"></td>
<td width="351" valign="top">Success!  That feels intuitive to use. (And it passes a 30-second “spouse usability test”.)</td>
</tr>
</tbody>
</table>
<p>Here’s the end result:</p>
<p><a href="http://www.agilekiwi.com/wp-content/uploads/NormalZoom.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="NormalZoom" src="http://www.agilekiwi.com/wp-content/uploads/NormalZoom_thumb.png" border="0" alt="NormalZoom" width="72" height="72" /></a></p>
<p>When you click the button, the app jumps to zoomed out, and the icon changes to this:</p>
<p><a href="http://www.agilekiwi.com/wp-content/uploads/ToggledZoom.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="ToggledZoom" src="http://www.agilekiwi.com/wp-content/uploads/ToggledZoom_thumb.png" border="0" alt="ToggledZoom" width="72" height="73" /></a></p>
<p>Click it again, and it toggles back to the first state (with your original zoom level, whatever it was)</p>
<p><em><strong>[Update 5 months after initial posting</strong>: I have made more changes since writing this blog post.  The conversation with the situation continued, even after I thought it was finished ;-) ]</em></p>
<h2>Done</h2>
<p>That’s it.  My conversation with the situation (or my internal design monologue, if you prefer) in designing one small part of the UI.  I hope it helps to demonstrate several points:</p>
<ol>
<li>We do a <em>lot</em> of this, when we build software.  My simple example here has 14 cycles of action and reflection, and that’s just for two UI controls – and those 14 cycles don’t include the smaller act/reflect cycles involved in actually coding the functionally.  In this case the coding consisted of hooking up these two controls to the rest of the UI, so they did actually make zooming happen.  I did that coding as I worked, but have glossed over it in this post.</li>
<li>Notice that, even before I started these 14 cycles, I had <em>already</em> done a so-called “design”.  I had done gone though about 3 iterations of hand drawn sketches, finishing with the one at the top of this post.  I had also designed the algorithm that would compute the right “auto zoom” level for large documents.  Everything on this page happened <em>after</em> finishing “design”.  That is normal. When a good software engineer does a <a href="http://www.agilekiwi.com/?p=385">professional job</a>, he or she has a detailed conversation with the situation <em>while they are coding</em>.</li>
<li>A good conversation with the situation includes asking yourself questions like, “How will the user feel about using this?”, “Is it still working out OK?”.  It also includes being observant and noticing variants of the problem which were not explicitly thought about before – e.g. “What does auto-zoom mean in a <em>small</em> document?”.  Finally, it includes responding to pleasant surprises, such as my realisation that I could solve the space problem by making the slider partially transparent.</li>
<li>Imagine if I had not had this conversation with the situation, and had simply implemented the original design, exactly as it was.  I would have ended up with something that was correct in theory, but annoying and confusing in practice.  Does that remind you of anything?  Most bespoke enterprise software, perhaps? ;-)</li>
</ol>
<h2>FAQ</h2>
<p><strong>Was I being too picky, doing all this for just two UI controls?</strong> Well, this example is from a personal project.  In my day job, I don’t recall putting so much attention into UI design – because that is not the priority for the business customers I deal with.  Instead, most of our “conversations with the situation” relate to business logic. Those conversations are both more important, and more intricate, than the example on this page.  Unfortunately they’re much harder to write about because they’re so abstract.</p>
<div>
<p><strong>What about communication problems?</strong> Yes, in most real-world situations there may be information that falls through the cracks between the customer and the developer.  This makes it all the more important for the developer to be alert to possible gaps and inconsistencies.  I.e. to continue the conversation with the situation as they code the solution.  In the example on this page, I am both the customer and the coder, so there were no communication gaps – and yet look how many action-reflection cycles were <em>still</em> required even after <em>perfect </em>(lossless) communication!</p>
<p><strong>Isn’t this just a lack of foresight on my part?</strong> The suggestion is that, if I’d had better foresight when thinking through the design, less “conversation” would have been needed during coding.  Well, yes, and no.  “Yes” because, if I’d had perfect foresight then the conversation would indeed have been reduced.  But “no” because no-one actually has perfect foresight.  All the resources I quote <a href="http://www.agilekiwi.com/?p=385">here</a>, and doubtless many others too, confirm that this kind of “conversation with the situation” is completely normal and necessary for designers and other professional people.  If there is anything usual about this page, it’s simply that software engineers don’t normally <em>write down examples</em> of their thought processes.</p>
<p><strong>Isn’t this just the normal feedback cycle of agile development?</strong> Again, yes and no.  It is certainly part of the same concept. Firstly, the difference that I see is that the “conversation with the situation” is much more fine-grained than, say, running an acceptance test or demonstrating the software to the customer.  The conversation with the situation covers lots and lots of tiny details (and big things too).  For some of those details, the developer may indeed go back to the customer to discuss them.  I suspect there’s a degree of experience and judgement involved in asking the customer when necessary, without drowning them in a deluge of micro-decisions.  Secondly, the conversation with the situation is very much in keeping with the side of agile that Alistair Cockburn describes as <a href="http://alistair.cockburn.us/Characterizing+people+as+non-linear,+first-order+components+in+software+development">“looking around, taking initiative, and doing ‘whatever is necessary’</a>”.  Finally, I would emphasise is that a conversation with the situation is almost the opposite of a blind rush to “complete” a user story as quickly as possible.  Conversation is thoughtful.  It may, and sometimes will, take you in unexpected directions for the good of the product.  It will almost certainly result in better usability and fitness for purpose.</p>
<p><strong>Does it take more time, and so cost more money?</strong> Maybe, but probably not as much as you might expect.  Why?  Because good quality conversations with the situation, at coding time, tend to reduce the defect count later.  So the conversation pays for itself to some degree, in terms of fewer problems later on.  It also improves the overall value of the software, by improving it’s usability and fitness for purpose.  After all, which is really more expensive – a $100k system that your staff hate and can’t use efficiently, or a $120k system that makes their jobs efficient and satisfying?</p>
<h2>Final Word</h2>
<p>I received some lovely feedback from a customer, after we ran a project that included lots of conversations with the situation.  The customer’s system administrator said:</p>
<blockquote><p>Almost every day, another staff member asks for access to the system.</p></blockquote>
<p>Isn’t that great?  A custom-built business application so satisfying to use, that it “went viral” amongst the staff.  What a change from clunky systems imposed on users against their will.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/news/conversation-with-the-situation-a-software-example/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Compliance to Spec Considered Unprofessional</title>
		<link>http://www.agilekiwi.com/other/agile/compliance-to-spec-considered-unprofessional/</link>
		<comments>http://www.agilekiwi.com/other/agile/compliance-to-spec-considered-unprofessional/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 00:00:00 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Agile BA]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=385</guid>
		<description><![CDATA[In keeping with the theme of this blog, which is “the neglected essentials of software development”, I’d like to share something I’ve learned recently.  It’s about how Professional people in other fields think – people like architects, town planners and doctors.]]></description>
			<content:encoded><![CDATA[<p>In keeping with the theme of this blog, which is “the neglected essentials of software development”, I’d like to share something I’ve learned recently.  It’s about how Professional people in other fields think – people like architects, town planners and doctors.  As they work, they engage in an on-going</p>
<blockquote><p>…conversation with the situation.</p></blockquote>
<p>What a lovely phrase.  It comes from the classic book <em><a href="http://www.amazon.com/Reflective-Practitioner-Professionals-Think-Action/dp/1857423194/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1298005156&amp;sr=1-1">The Reflective Practitioner: How Professionals Think In Action</a></em> by Donald Schön. Schön was an influential professor at MIT.  His book was published in 1983, so none of his case studies come from IT, and yet he finds something that agile software developers will recognise.  In all the professions he studied, professionals relied heavily on <strong>feedback</strong> and <strong>reflection</strong> (i.e. being observant and thoughtful, and changing your mind as necessary).  He found that this approach is not just the <em>normal</em> way for professionals to work – it’s also the <em>best</em> way.</p>
<p>Here are some favourite quotes from the book:</p>
<blockquote><p>At the same time that the enquirer [i.e. professional] tries to shape the situation…, he must hold himself open to the situation’s back-talk. He must be willing to enter into new confusions and uncertainties.  Hence, he must adopt a kind of double vision.  He must act in accordance with the view he has adopted, but he must realize that he an always break it open [change it] later, indeed <em>must</em> break it open later in order to make new sense of his transaction with the situation.</p></blockquote>
<blockquote><p>… he recognizes that the situation, having a life of its own distinct from his intentions, may foil his [plans] and reveal new meanings.</p></blockquote>
<h2>Implications</h2>
<p>Schön’s work sheds light on some key issues in software development:</p>
<p><strong>Issue 1 – BDUF</strong></p>
<p>Firstly, consider the agile aversion to Big Design Up Front (BDUF).  <strong>BDUF</strong> is not an on-going conversation with the situation.  It’s just a period of thinking, followed by an attempt to give the situation a lecture!  That doesn’t work in any other professions.</p>
<p><strong>Issue 2 – Handing over “designs”</strong></p>
<p>Secondly, there are implications for <strong>passing work from one person to another</strong>.  Some years ago, as a software architect, I had difficulty working with a more junior developer.  Our interactions just didn’t seem to be successful.  I now realise what was going on.  He thought I was handing over a description of what he should build; but I thought I was handing over a <em>conversation with the situation</em>.</p>
<p>It’s difficult to hand over an in-flight conversation, for someone else to continue in your absence.  And yet, when a senior hands over a “design” to a junior, that is exactly what’s happening.  The senior is stepping back from the conversation with the situation, and expecting the junior to continue it.</p>
<blockquote><p>Here’s this conversation I’ve been having with the problem. Here’s a rough outline of what I said and how the situation replied.  So I think we might proceed as follows…&lt;outline of suggested solution goes here&gt;.  <strong>But, don’t just take my word for it.  Continue the conversation,</strong><em> </em>thinking and altering course when necessary, as I would have done if I had continued the conversation myself<em>.</em> Finally, if you need to change course, but don’t know how, ask me and we’ll figure it out together.”</p></blockquote>
<p>That’s the verbose way to say it.  Unfortunately, we often cut corners and say, “Here, build this”.  Junior programmers don’t know that, “Here, build this”, really means , “Please continue my conversation.”  In fact lots of senior programmers don’t know that either – I know I didn’t.  It was only when I read Shön’s book that I finally had the mental tools to really understand the situation.</p>
<p><strong>Issue 3 – “BA” or “Designer”</strong></p>
<p>Finally, the conversation metaphor tells us about <strong>the role of business analysts,</strong> on both traditional and agile projects.  At the recent  <a href="http://10yearsagile.org/">#10yrsagile</a> event in Utah, Jeff Patton and others commented on the difference between <a href="http://advice.cio.com/michael_hugos/15315/business_analysts_versus_business_designers">“BAs” and “designers”.</a> The “designer” model directly supports “conversations with the situation”, since the person in the designer role clearly undertakes such dialog with the situation.  But in the BA model, if interaction between the BA and developer is either (i) infrequent, (ii) asynchronous or (iii) one-way, then the conversation with the situation breaks down.</p>
<h2>Example</h2>
<p>Here is a detailed real example, of a <a href="/other/news/conversation-with-the-situation-a-software-example/">conversation with the situation while coding</a>.</p>
<h2>Support from Other Authors</h2>
<p>Several other authors have shared similar findings.  For instance, in his book “The Design of Design” Fred Brooks quotes the following diagram (originally from Maher, Poon and Boulanger):</p>
<p><a href="http://www.agilekiwi.com/wp-content/uploads/image1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://www.agilekiwi.com/wp-content/uploads/image_thumb1.png" border="0" alt="image" width="608" height="213" /></a></p>
<p>In this diagram, the problem and solution both shape <em>each other,</em> as we move left-to-right through time.  (I remember it as the “crocodile diagram”, since the zig-zags look like the teeth of a crudely-drawn crocodile.)</p>
<p>And, of course, no discussion of these topics would be complete without referring to the <a href="http://www.developerdotstar.com/mag/articles/reeves_design_main.html">classic paper from Jack Reeves</a>. Schön’s work adds weight to his arguments.</p>
<h2>Conclusion</h2>
<p>When we put all this together, we are led to a surprising conclusion regarding specifications (and their agile equivalents, such as acceptance tests or criteria that are prepared in advance of coding).</p>
<table border="0" cellspacing="0" cellpadding="2" width="678">
<tbody>
<tr>
<td width="676" valign="top"><span style="font-size: large;">If you produce a system that exactly matches its specification, <em>you have acted unprofessionally.</em></p>
<p>Either, you didn’t maintain a conversation with the situation after you got the spec; or you kept on talking with the situation, but you ignored it’s advice whenever it disagreed with the spec.<br />
</span>
</td>
</tr>
</tbody>
</table>
<p>Regrettably, we are all encouraged to make this mistake.  On traditional projects, there may be implicit or explicit pressure to minimise the number of change requests.  On agile projects, there may be pressure to keep the velocity up, and some developers may respond by doing just enough to meet the pre-written acceptance tests, and quite deliberately “not asking too many questions”.  In so doing, they rob the project of their natural talent for “<a href="http://alistair.cockburn.us/Characterizing+people+as+non-linear,+first-order+components+in+software+development">looking around and taking initiative</a>”.  Finally, on projects of all kinds, there is often insufficient time budgeted for the Validation (<a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;ObjectType=COL&amp;ObjectId=13798&amp;tth=DYN&amp;tt=siteemail&amp;iDyn=2">fitness to purpose</a>) part of “<a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;ObjectType=COL&amp;ObjectId=13498&amp;tth=DYN&amp;tt=siteemail&amp;iDyn=2">Verification and Validation</a>”.</p>
<p>I hope that, with increasing recognition of Schön’s work, will come the realisation that true professionals do not comply with a spec, they surpass it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/compliance-to-spec-considered-unprofessional/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 Years Agile &#8211; a perspective from outside the room</title>
		<link>http://www.agilekiwi.com/other/agile/10-years-agile-a-perspective-from-outside-the-room/</link>
		<comments>http://www.agilekiwi.com/other/agile/10-years-agile-a-perspective-from-outside-the-room/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 21:13:35 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://www.agilekiwi.com/?p=399</guid>
		<description><![CDATA[<p>Recently Alistair Cockburn invited 32 agile practitioners to join him at the Snowbird ski resort, for a <a href="http://10yearsagile.org/">retrospective on the agile movement</a> as a whole.  I followed the event via Twitter, sitting under a sun umbrella here in the southern hemisphere, reading the tweets from the snow.</p>
<p>The event&#8230; <a href="http://www.agilekiwi.com/other/agile/10-years-agile-a-perspective-from-outside-the-room/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Recently Alistair Cockburn invited 32 agile practitioners to join him at the Snowbird ski resort, for a <a href="http://10yearsagile.org/">retrospective on the agile movement</a> as a whole.  I followed the event via Twitter, sitting under a sun umbrella here in the southern hemisphere, reading the tweets from the snow.</p>
<p>The event was both a celebration of the first 10 years of agile, and an attempt to answer three questions which Alistair circulated before the meeting:</p>
<ol>
<li>What problems in software or product development have we solved (and therefore should not simply keep re-solving)?</li>
<li>What problems are fundamentally unsolvable (so therefore we should not keep trying to “solve” them)?</li>
<li>What problems can we sensibly address – problems that we can mitigate either with money, effort or innovation? (and therefore, these are the problems we should set our attention to, next.)</li>
</ol>
<p>There was clearly much to celebrate from the past 10 years of agile, but when it came to the future, there seemed to be concerns in several areas: the slowness with which good practices are adopted in some quarters; the risk of losing momentum now that there is no longer a common “enemy” (as heavy process was, when agile began); and a perceived lack of strength, clarity and consensus in the group’s answer to Alistair’s third question – “what next?”</p>
<p>Reflecting on those concerns, here are my “ah-has” from my virtual participation:</p>
<h2>Gradual Change is Normal (Part 1)</h2>
<p>Mike Cohn wrote a great post <a href="http://blog.mountaingoatsoftware.com/reflections-on-the-10-years-since-the-agile-manifesto">likening agile to Object Orientation</a>.  Eventually, OO was taken for granted, and people stopped talking about it.  He suggests that agile will go the same way, and I agree.</p>
<p>However, these things can take a <em>really, really</em> long time. Here’s an example, that extends Mike’s OO one: By the late 90’s, OO had blossomed so much that the premier OO conference, OOPSLA, moved away from its original goal of making OO practical and understandable.  OOPSLA’s work was done.  But, at the turn of the century, there were still a lot of people who weren’t using OO.  Legions of VB6 developers making business apps on the Microsoft platform were not using OO at all.  Slowly, over the decade that followed, OO seeped into the Microsoft development community.  Languages were replaced and improved, and starting in about 2007 we saw wide adoption of Object-Relational Mapping and a variant of Smalltalk’s decades-old Model-View-Presenter pattern.  (Yes, Microsoft played a role in the timing, but so did changing sentiment within the developer community.)</p>
<p>There are two key things to note from this example:</p>
<ul>
<li>We are currently seeing (real) OO go mainstream in the Microsoft community –  about a decade after it went mainstream in most other parts of the development community.</li>
<li>This happened without any industry association driving it.   There was no equivalent to the Agile Alliance, cajoling Microsoft developers into using Objects.  There was no need for such a body, because OO had become adequately embedded in the industry&#8217;s  consciousness back in the 90s.  It was like a virus that had infected enough  of the population that it could no longer be eliminated.  Slowly, over the decade that followed, it reached the rest.</li>
</ul>
<p>So don’t sweat it. Agile isn’t going away.  It will continue to influence people, and to be embraced by new users, long after the early adopters have taken it for granted and stopped talking about it.</p>
<h2>Gradual Change is Normal (Part 2)</h2>
<p>In a post on his <a href="http://agilesadist.blogspot.com/">delightfully-named blog</a>, Jonathan House <a href="http://agilesadist.blogspot.com/2011/02/my-ahas-from-10-years-agile.html">wrote</a> the following after the Snowbird event:</p>
<blockquote><p>Does Agile really make a difference? &#8211; Not so much a question that showed up at the conference, but one that kept running around in my head, kicking over garbage cans and spray-painting the cat. … It&#8217;s clear we&#8217;ve made excellent progress over the past 10 years, but it&#8217;s still not so clear to me why businesses aren&#8217;t beating down the door to really adopt Agile throughout the enterprise …</p></blockquote>
<p>Jonathan, I’m fairly sure this is not a reflection on agile.  It is reflection on business.  Business leaders often fail to follow advice, <em>even when they actually agree that the advice is good</em>.  I don’t say this out of personal dissatisfaction; it is a well-researched fact.  There’s even a book on the subject, called <em><a href="http://www.amazon.com/Knowing-Doing-Gap-Companies-Knowledge-Action/dp/1578511240">The Knowing-Doing Gap</a> </em>by Jeff Pfeffer and Bob Sutton.  (I mentioned Pfeffer and Sutton in my Agile Roots talk.  As an agilist and geek, I find their work extremely credible and relevant).</p>
<p>I am convinced that you are observing not a failure in agile, but a significant problem in business in general.</p>
<p>(Having said that, it wouldn’t hurt if we in the agile community could familiarize ourselves with how the more self-aware sections of business community do already understand agile, <a href="http://www.agilekiwi.com/peopleskills/opinions/">just with different words</a> and under different names.  It will be much more polite, and therefore more likely to succeed, if we listen before we lecture).</p>
<h2>Diversity is Good</h2>
<p>I think some people who were following the Snowbird event may have been disappointed at an apparent lack of consensus.  I know I was, at first.  But then I remembered that diversity is good.  Think of the importance of genetic diversity in populations of animals; remember how the messy diversity of capitalism out-performed Soviet central planning; and think back to the diversity of the original 17 signatories to the Agile Manifesto – a diversity which was alive and well both <a href="http://alistair.cockburn.us/No+center+to+agile">before and after</a> they signed the Manifesto.</p>
<p>By having a range of people, with <a href="http://www.netobjectives.com/blogs/snowbird10">differing</a> <a href="http://www.pragprog.com/magazines/2011-02/agile--">interests and priorities</a>, the agile community is much more likely to successfully address the many and varied challenges of the next decade.</p>
<p>I think the point with diversity is not just to accept it, but to actually encourage it.  Good agile, particularly by <a href="http://martinfowler.com/bliki/ShuHaRi.html">experienced</a> practitioners, <a href="http://pmdoi.org/">will be situationally specific</a>.  I suspect this point has not fully seeped into the overall consciousness of the wider agile community.  Perhaps one of the tasks for the next 10 years is to promote the acceptance of “situationally specific agile”, and to help people learn (i.e. practice) how to do it.</p>
<h2>There is Plenty to Do</h2>
<p>Several people pointed out that agile lacks a clear “enemy” now.  When agile started, heavyweight process was the enemy. But today there is no clearly-identifiable external enemy.  So what is the point of the agile movement now?</p>
<p>David Anderson seemed to reflect the mood of the group when he <a href="http://agilemanagement.net/index.php/Blog/reflections_on_10_years_of_agile/">wrote</a>:</p>
<blockquote><p>The mission now is incremental improvement. It’s evolution, education and improving levels of maturity, rather than a revolution. The enemy is now within. The enemy is as Joshua Kerievsky put it “all the crap I see out there” despite 10 years of Agile methods.</p></blockquote>
<p>David Anderson went on to write</p>
<blockquote><p>I don’t believe the Agile movement knows how to operate without something to revolt against. Agile came, it served its purpose, it had a positive effect. What next? Perhaps it is time to move on?</p></blockquote>
<p>Is the really nothing more to do?  Nothing more but combating the enemies within, of complacency and poor execution?  I can see the logic of what Joshua and David (and others) are saying, but please, please don’t let it be true!  There is so much more to do.  Here are just a few topics that come to mind:</p>
<ul>
<li>The spread of agile beyond software (as per Jonathan House’s comment above, and others on the day)</li>
<li>Jeff Patton’s story mapping and feature thinning – two wonderful techniques which deserve to become much more prominent in agile’s second decade</li>
<li>Advancement of knowledge/skill in Ri-level/situationally-specific agile</li>
<li>Philippe Kruchten’s <a href="http://pkruchten.wordpress.com/2011/02/13/the-elephants-in-the-agile-room/">herd of elephants</a> (elaborated/commented on <a href="http://drdobbs.com/architecture-and-design/229301128?pgno=2">here</a> by Scott Ambler)</li>
<li>Really paying attention to “Individuals and Interactions”.  For 10 years we’ve been getting this first point of the Agile Manifesto <a href="http://www.agilekiwi.com/peopleskills/individuals-and-interactions/">round the wrong way</a>!!  So you can’t tell me there’s nothing left to do ;-)  James Coplien phrased it well in his outstanding <a href="http://www.infoq.com/articles/agile-10-years-on">reflection on the first 10 years</a>: “We have test scripts and jUnit trumping individuals and interactions”.</li>
<li>Sharing our failures as well as our successes, as several people mentioned on the day</li>
<li>Contracts for agile projects – currently, only a partially-solved problem at best.</li>
</ul>
<p>We’ve only been doing knowledge work in teams for a short part of human history.  The previous millennia did not prepare us well for the last few decades of complex, abstract, co-operation in non-trivial teams.  So of course this is still more to learn.</p>
<h2>Summary</h2>
<p>We need to keep thinking, keep talking and keep learning.</p>
<p>We need to keep agile’s sense of humanity – of valuing, respecting and caring for people in the workplace.</p>
<p>We need to retain and treasure the global and local communities of practitioners, which the agile movement has created.</p>
<p>We need to keep all these things, even though there is no longer a common enemy to unite us.  We need to learn to operate in an agile community that doesn’t just accept, but actively promotes, its own diversity.</p>
<p>I recently stumbled across a quote from the French poet Stéphane Mallarmé:</p>
<blockquote><p>to define is to kill, to suggest is to create</p></blockquote>
<p>Let us not define our future.  Let’s suggest it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/10-years-agile-a-perspective-from-outside-the-room/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

