<?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; Agile Software Development</title>
	<atom:link href="http://www.agilekiwi.com/category/other/agile/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>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>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>
		<item>
		<title>Big Lessons from a Little Process</title>
		<link>http://www.agilekiwi.com/other/agile/big-lessons-from-a-little-process/</link>
		<comments>http://www.agilekiwi.com/other/agile/big-lessons-from-a-little-process/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 17:23:00 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Agile BA]]></category>

		<guid isPermaLink="false">http://dell-pc/AgileKiwiWordpress/news/big-lessons-from-a-little-process/</guid>
		<description><![CDATA[<p>I presented a session at today&#8217;s <a href="http://barcamp.org/BarCampAgileWellington"><span style="text-decoration: underline;">Wellington Agile BarCamp</span></a>.  The session was called &#8220;<em>Crystal Clear: Big Lessons from a Little Process</em>&#8220;.  Instead of describing all the details of the process, I outlined four of the most important lessons I have learned from it.</p>
<p>Here are some brief notes on&#8230; <a href="http://www.agilekiwi.com/other/agile/big-lessons-from-a-little-process/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>I presented a session at today&#8217;s <a href="http://barcamp.org/BarCampAgileWellington"><span style="text-decoration: underline;">Wellington Agile BarCamp</span></a>.  The session was called &#8220;<em>Crystal Clear: Big Lessons from a Little Process</em>&#8220;.  Instead of describing all the details of the process, I outlined four of the most important lessons I have learned from it.</p>
<p>Here are some brief notes on the presentation.</p>
<p><span id="more-71"></span></p>
<p><strong>Introduction</strong></p>
<p><a href="http://www.agilekiwi.com/crystal_clear.htm"><span style="text-decoration: underline;">General background</span></a> on Crystal Clear</p>
<p><strong>Big Lessons that I&#8217;ve Learned from Crystal Clear</strong></p>
<ul>
<li><a href="http://alistair.cockburn.us/index.php/Just-in-time_methodology_construction"><span style="text-decoration: underline;">Methodology-per-process</span></a>.  How you can (and <a href="http://alistair.cockburn.us/index.php/Talk:Just-in-time_methodology_construction"><span style="text-decoration: underline;">should</span></a>) tune your process to the project at hand.</li>
<li>Defusing debates about documentation, by recognising the two purposes of documents: supporting the current project; and supporting future maintenance programmers.  In my projects, I have found it best <em>not </em>to kill two birds with one stone.</li>
<li><a href="http://www.agileproductdesign.com/blog/shu_business.html"><span style="text-decoration: underline;">Shu-Ha-R</span></a>i, the stages of learning skills and how that applies to agile.  People at different stages have different needs for prescriptive process versus flexibility; and different comfort levels with finalizing process elements &#8220;later&#8221;.</li>
<li>Simple = good.  The simplicity of Crystal Clear is backed by both theory and practice.  Its simplicity supports the design goals of Crystal, which are safety (delivering a successful project), efficiency (cost-effectiveness) and habitability (people are comfortable using Crystal).</li>
</ul>
<p><strong>Links to other resources</strong></p>
<p>I mentioned various other resources during the presentation.  They included:</p>
<ul>
<li><a href="http://alistair.cockburn.us/index.php/Are_iterations_hazardous_to_your_project"><span style="text-decoration: underline;">Material on iteration lengths</span></a>: why there is no real value in saying &#8220;my iteration is shorter than yours&#8221;.</li>
<li><a href="http://alistair.cockburn.us/index.php/Collaboration:_the_dance_of_contribution"><span style="text-decoration: underline;">Collaboration: the Dance of Contribution</span></a>.  A lengthy piece, with a lot to take in.  I skim read it the first time I saw it, but I got more out of it when I re-read it some months later.  My favourite bit: &#8220;No idea is rejected out of hand and no idea gets a free pass.&#8221;  I&#8217;m still learning how to apply it ;-)</li>
<li><a href="http://www.ericsink.com/articles/Requirements.html"><span style="text-decoration: underline;">Are requirements a document or a database</span></a>?  I found Eric Sink&#8217;s article explains this dilemma very well.  (As for his comments about agile in the same article, I think he&#8217;s touching on an issue which James Bach described well <a href="http://www.satisfice.com/blog/archives/45"><span style="text-decoration: underline;">here</span></a>. Although they may not phrase it this way themselves, I&#8217;d suggest that Eric and James are both &#8220;Ri-style&#8221; practitioners, objecting to the over-emphasis of &#8220;Shu-style&#8221; agile.  As we discussed today, both styles have their place.)</li>
<li>I also mentioned Eric&#8217;s &#8220;<a href="http://www.ericsink.com/Career_Calculus.html"><span style="text-decoration: underline;">Career Calculus</span></a>&#8221; page, and suggested that the same approach applies to process.  The most important thing is not where you start; but how fast you improve.</li>
<li><a href="http://www.xprogramming.com/xpmag/docBigPictureAndSpec.htm"><span style="text-decoration: underline;">Ron Jeffries on documentation</span></a>.  His recommendations are broadly similar to the Crystal ones except (a) he has a firm view that the tests <em>are</em> the requirements documentation (Crystal is more flexible about how requirements are noted down) (b) he implies that you might not need future facing documentation (I would assume that if your software was worth writing, then it&#8217;s probably worth maintaining, which means it usually is worthwhile to write a future-facing document)</li>
</ul>
<p>That all looks very brief, but on the day it took 50 minutes &#8211; honest.</p>
<p>By the way, I did it as an &#8220;incremental presentation&#8221;.  After each of the four main points, I paused for questions.  The idea was that each main point was like an &#8220;iteration&#8221;, and pausing for questions was like &#8220;releasing&#8221; that iteration.  It seemed to work.  We had good discussion after most points, and interleaving questions with presentation made it easier to fit the timeslot. (If all questions are left to the end, how much time should you leave?  Will people ask lots of questions?  Will they ask none?)</p>
<p>If you were there (or you weren&#8217;t) please let me know if you have any questions that are not covered in these notes.  Either leave a comment below, or <a href="http://www.agilekiwi.com/contact.htm"><span style="text-decoration: underline;">email me</span></a>.</p>
<p><strong>Update 6 March 08:</strong></p>
<p>I gave the presentation again <a href="http://newzealand.theiiba.org/default.asp?contentID=592"><span style="text-decoration: underline;">today</span></a>.  Here are some of the BA-related resources that I mentioned:</p>
<p>Scott Ambler on:</p>
<ul>
<li><a href="http://www.agilemodeling.com/essays/agileAnalysis.htm"><span style="text-decoration: underline;">Agile analysis</span></a></li>
<li>Thoughts on the <a href="http://www.agilemodeling.com/essays/businessAnalysts.htm"><span style="text-decoration: underline;">role of BA&#8217;s in agile projects</span></a></li>
<li><a href="http://www.agilemodeling.com/essays/barelyGoodEnough.html"><span style="text-decoration: underline;">Artifacts on agile projects</span></a></li>
</ul>
<p>A couple of interesting points came out in discussion afterwards.  They included the idea of &#8220;emphasising facillitation over artifact creation&#8221;, the concept of <a href="http://steve.emxsoftware.com/Domain+Driven+Design/DDD+Ubiqitous+Language"><span style="text-decoration: underline;">ubiquitous language</span></a>, and the notion that in <em>some </em>cases asking the customer to describe what they need is like a bunch of blind men describing an elephant.  Everyone you ask says something different, and what the business <em>really</em> needs might be different again.  In cases like these (where the customer organisation is, for whatever reason, unable to speak with a single authoritative voice) my thoughts are: don&#8217;t just say &#8220;that&#8217;s the customer&#8217;s problem&#8221;, or &#8220;we can&#8217;t do agile in these circumstances&#8221;, but instead apply BA skills to<a href="http://www.agilemodeling.com/essays/businessAnalysts.htm#TowardsAgileAnalysts"><span style="text-decoration: underline;"> help the customer to articulate their needs</span></a>.</p>
<p>&gt;Finally, here is the page on <a href="http://www.agilekiwi.com/negotiation.htm"><span style="text-decoration: underline;">negotiation</span></a>, which I mentioned at the end.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/big-lessons-from-a-little-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Better Programmers</title>
		<link>http://www.agilekiwi.com/other/agile/making-better-programmers/</link>
		<comments>http://www.agilekiwi.com/other/agile/making-better-programmers/#comments</comments>
		<pubDate>Wed, 21 Mar 2007 20:40:00 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://dell-pc/AgileKiwiWordpress/news/making-better-programmers/</guid>
		<description><![CDATA[<p>Regular feedback is a key element of agile development.&#160; Rapid feedback improves our software.&#160; I suggest it also improves <i>us</i>, the people who write the software.</p>
<p>I&#8217;ve just read a fascinating article on <a href="http://www.freakonomics.com/times0507col.html"><u>where talent comes from</u></a>, over on <a href="http://www.freakonomics.com"><u>Freakonomics.com</u></a>.&#160; It outlines research into the key factors that&#8230; <a href="http://www.agilekiwi.com/other/agile/making-better-programmers/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Regular feedback is a key element of agile development.&#160; Rapid feedback improves our software.&#160; I suggest it also improves <i>us</i>, the people who write the software.</p>
<p>I&#8217;ve just read a fascinating article on <a href="http://www.freakonomics.com/times0507col.html"><u>where talent comes from</u></a>, over on <a href="http://www.freakonomics.com"><u>Freakonomics.com</u></a>.&#160; It outlines research into the key factors that develop talent.&#160; The key factors are:</p>
<blockquote><p><i>&quot;setting specific goals, </i><i><b>obtaining </b></i><i><b>immediate feedback</b></i><i> </i><i>and concentrating as much on technique as on outcome&quot;</i>. [emphasis added]</p>
</blockquote>
<p>For instance, life-long learning comes naturally to surgeons because they get instant feedback on the effectiveness of their decisions.&#160; But similar learning doesn&#8217;t come naturally to doctors in fields where there is a&#160; long delay between decision and outcome.</p>
<p>The research finds that development of talent is heavily dependent on the practitioner receiving prompt feedback on their decisions.&#160; The timeliness of the feedback matters.&#160; </p>
<p>Waterfall processes lack timeliness of feedback.&#160; A classic example would be an analyst or architect making decisions at the start of a waterfall project.&#160; Many months may pass before they learn the result of their decisions.&#160; (Sometimes they <i>never </i>learn the result because they move to another project before the first one is finished.&#160; Such so-called &quot;experience&quot; is of little value.)</p>
<p>In agile development, decision makers get feedback quickly.&#160; Timeboxed iterations give feedback in a few weeks; unit tests give feedback in minutes; and paired programmers give feedback in seconds.&#160; Research suggests this feedback doesn&#8217;t just improve the program; it also improves the programmers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/making-better-programmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scientific Experiments</title>
		<link>http://www.agilekiwi.com/other/agile/scientific-experiments/</link>
		<comments>http://www.agilekiwi.com/other/agile/scientific-experiments/#comments</comments>
		<pubDate>Mon, 02 Oct 2006 17:28:00 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://dell-pc/AgileKiwiWordpress/news/scientific-experiments/</guid>
		<description><![CDATA[<p>Steve Yegge points out that it&#8217;s very hard to do a valid <a href="http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html"><span style="text-decoration: underline;">scientific experiment</span></a> in software development:</p>
<blockquote><p><em>&#8220;You can&#8217;t have the same team do the same project twice; a bunch of stuff changes the second time around. You can&#8217;t have 2 teams do the same project; it&#8217;s too hard</em></p></blockquote><p>&#8230; <a href="http://www.agilekiwi.com/other/agile/scientific-experiments/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Steve Yegge points out that it&#8217;s very hard to do a valid <a href="http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html"><span style="text-decoration: underline;">scientific experiment</span></a> in software development:</p>
<blockquote><p><em>&#8220;You can&#8217;t have the same team do the same project twice; a bunch of stuff changes the second time around. You can&#8217;t have 2 teams do the same project; it&#8217;s too hard to control all the variables, and it&#8217;s prohibitively expensive to try it in any case. The same team doing 2 different projects in a row isn&#8217;t an experiment either.</em></p>
<p><em>About the best you can do is gather statistical data across a </em><em><strong>lot </strong></em><em>of teams doing a </em><em><strong>lot </strong></em><em>of projects, and try to identify similarities, and perform some regressions, and hope you find some meaningful correlations.&#8221;</em></p></blockquote>
<p>That&#8217;s exactly how <a href="http://www.agilekiwi.com/crystal_clear.htm"><span style="text-decoration: underline;">Crystal Clear</span></a> came about.  Alistair Cockburn spent a lot of time studying successful teams, looking for the similarities, then he documented them.  That&#8217;s not the kind of half-baked <a href="http://www.agilekiwi.com/fads.htm"><span style="text-decoration: underline;">fad</span></a> which Steve criticises, it&#8217;s about as scientific as it gets (in our field).  In fact, it was scientific enough to earn Alistair his Ph.D.  His <a href="http://alistair.cockburn.us/index.php/People_and_methodologies_in_software_development"><span style="text-decoration: underline;">doctoral dissertation is on-line</span></a> and makes suprisingly easy reading.  (Or you can find a shorter outline <a href="http://alistair.cockburn.us/Characterizing+people+as+non-linear,+first-order+components+in+software+development">here</a>.) I encourage you to read it, to see how Alistair grappled with the very problems Steve describes. (Eventually, he solved them much more successfully than Steve would expect. He documented his results as Crystal Clear).</p>
<p>Steve makes some very valid criticisms of the Agile movement.   However, his assertion of a lack of scientific rigour is incorrect (in Alistair&#8217;s case, at least).  Alistair conducted exactly the kind of research which Steve calls for, without any pre-conceived notions of what the outcome should be (he started years before the agile movement was founded).  He came up with a simple, effective process &#8211; which happens to be agile.</p>
<p>Interestingly, Alistair&#8217;s research-based process is somewhat different from XP.  As I&#8217;ve said before, <a href="http://www.agilekiwi.com/definition.htm"><span style="text-decoration: underline;">XP is a subset of agile, not a synonym</span></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/scientific-experiments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Negotiating your Development Process</title>
		<link>http://www.agilekiwi.com/other/agile/negotiating-your-development-process/</link>
		<comments>http://www.agilekiwi.com/other/agile/negotiating-your-development-process/#comments</comments>
		<pubDate>Sat, 20 May 2006 20:27:00 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://dell-pc/AgileKiwiWordpress/news/negotiating-your-development-process/</guid>
		<description><![CDATA[<p><a href="/peopleskills/the-power-of-negotiation/">Principled Negotiation</a> also applies to defining your software development <em>process</em>.  You can&#8217;t choose Agile just because you like it.  You have to understand what your customers&#8217; interests are, and you have to seek a process which meets their interests and yours.</p>
<p>For instance: if the customer says they want a&#8230; <a href="http://www.agilekiwi.com/other/agile/negotiating-your-development-process/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="/peopleskills/the-power-of-negotiation/">Principled Negotiation</a> also applies to defining your software development <em>process</em>.  You can&#8217;t choose Agile just because you like it.  You have to understand what your customers&#8217; interests are, and you have to seek a process which meets their interests and yours.</p>
<p>For instance: if the customer says they want a detailed Gantt chart, that&#8217;s a <em>position. </em>(It&#8217;s a position which is not very compatible with most agile processes).  But their <em>interest </em>is in understanding the status of the project. A chart <a href="http://www.agilekiwi.com/agile_charts.htm"><span style="text-decoration: underline;">like this</span></a> might meet their interest equally well, while simultaneously meeting your interest in agility.</p>
<p>Customers also have a legitimate <em>interest </em>in protecting themselves from large cost increases and from <a href="http://www.agilekiwi.com/cutting_scope.htm"><span style="text-decoration: underline;">large scope cuts</span></a>.  Many agile teams <a href="http://www.agilekiwi.com/gurus_on_contracts.htm"><span style="text-decoration: underline;">unnecessarily</span></a> adopt an incompatible <em>position</em>.</p>
<p>This is why its so important to understand that <a href="http://www.agilekiwi.com/definition.htm"><span style="text-decoration: underline;">Agile is not just XP</span></a>.  You have a much wider <a href="http://alistair.cockburn.us/crystal/articles/wtatc/whattheagiletoolboxcontains.htm"><span style="text-decoration: underline;">toolbox </span></a>to draw on than just the practices in Extreme Programming.  Be prepared to draw on the whole toolbox, and your own creativity, to find the process that best suits your customer.  And be prepared to <em>not</em> use certain tools on certain projects.  For instance, <a href="http://www.agiledevelopmentconference.com/files/XR1-3.pdf"><span style="text-decoration: underline;">this XP team</span></a> (pdf) did not use pair programming; they replaced it with an alternative.</p>
<p>As agile developers, we know that <strong>good software is about customer-valued features. So is good process.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/negotiating-your-development-process/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Definition of Agile Development</title>
		<link>http://www.agilekiwi.com/other/agile/definition-of-agile-development/</link>
		<comments>http://www.agilekiwi.com/other/agile/definition-of-agile-development/#comments</comments>
		<pubDate>Wed, 22 Feb 2006 21:21:13 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://dell-pc/AgileKiwiWordpress/?p=46</guid>
		<description><![CDATA[<p>Agile development is hard to define, because most people define it by giving examples. For instance they give a specific description of Extreme Programming (XP), instead of defining of agile development in general.  We&#8217;ve ended up with a widespread misconception that agility is about XP techniques like Pair Programming and&#8230; <a href="http://www.agilekiwi.com/other/agile/definition-of-agile-development/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Agile development is hard to define, because most people define it by giving examples. For instance they give a specific description of Extreme Programming (XP), instead of defining of agile development in general.  We&#8217;ve ended up with a widespread misconception that agility is about XP techniques like Pair Programming and Test-Driven Development (TDD).<span id="more-46"></span></p>
<p style="padding-left: 30px;"><em>By the way, if XP is the only form of agile that you know, this page probably won&#8217;t make any sense.  Am I really saying that TDD is not part of the core definition of agile?  Yes I am.  Look for TDD in the <a href="http://www.agilemanifesto.org/">Agile Manifesto</a>.  It&#8217;s not there.  While TDD is a good thing, and I like it, it&#8217;s not the core essence of agility.  You&#8217;re welcome to define XP in prescriptive terms, mandating pairing and TDD, but those same prescriptive terms do not describe the agile movement as a whole.  It is, after all, about &#8220;<a href="http://www.agilemanifesto.org/">people and their interactions; over processes and tools</a>&#8220;.</em></p>
<p><em> </em><br />
Defining agility by describing XP is like defining democracy by describing America. Such a “definition” obscures the underlying concept with details of the chosen example.</p>
<p>Agility is not defined by TDD, just as democracy is not defined by having a President.  Democracy is defined as “choosing leaders in competitive elections”. It makes no difference whether you have a federal system <a href="http://en.wikipedia.org/wiki/Unitary_state">or not</a>;  whether the executive is or <a href="http://en.wikipedia.org/wiki/Parliamentary_system">isn&#8217;t</a> separate from the legislature; or which method you use to <a href="http://en.wikipedia.org/wiki/First_Past_the_Post_electoral_system">count</a> <a href="http://en.wikipedia.org/wiki/Proportional_representation">the</a> <a href="http://en.wikipedia.org/wiki/Electoral_college">votes</a> &#8211; it&#8217;s still democracy.</p>
<p>Do we have a similar definition of agile development?  One which is uncorrupted by specific examples and which defines the core underlying concept?  In many respects, we don&#8217;t.  The agile manifesto is the founding document of the agile movement (and the source of the term &#8220;agile development&#8221;).  It&#8217;s a great definition of what agile developers <em>think</em>; but it doesn&#8217;t concisely define what they <em>do</em>.  In other words, it talks about values and principles but not about practices.</p>
<p>Here&#8217;s my soundbite-size definition of agile:</p>
<blockquote><p>The agile movement asserts that software development works best under:<br />
<strong>Simple, iterative processes, which empahsise creativity and collaboration.</strong></p></blockquote>
<p>Other definitions include <a href="http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm">this one</a> from Scott Ambler and two really nice ones from Alistair Cockburn, <a href="http://bradapp.blogspot.com/2006/05/nutshell-definitions-of-agile.html">here</a>.</p>
<p><em>Notes:</em></p>
<p><em> </em></p>
<p><em>I use the word &#8220;creativity&#8221; to mean &#8220;inventiveness&#8221; &#8211; i.e. &#8220;producing solutions to difficult problems&#8221; (not just artistic ones).  <a href="http://en.wikipedia.org/wiki/Problem_solving#Characteristics_of_Difficult_Problems">The most difficult problems </a>are those involving (i) lack of clarity of the situation [e.g. requirements], (ii) multiple goals, (iii) complexity and (iv) time considerations &#8211; sounds like software!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/definition-of-agile-development/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Crystal Clear Methodology</title>
		<link>http://www.agilekiwi.com/other/agile/crystal-clear-methodology/</link>
		<comments>http://www.agilekiwi.com/other/agile/crystal-clear-methodology/#comments</comments>
		<pubDate>Sat, 14 Jan 2006 20:27:00 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://dell-pc/AgileKiwiWordpress/other/agile/crystal-clear-methodology/</guid>
		<description><![CDATA[<p>Crystal Clear is a methodology that summarises 10 years of research into successful software teams.  Which things really matter?  Which things most influence the project outcome?</p>
<p><span id="more-66"></span><br />
The Crystal Clear <a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201699478/ref=ase_alistaircockburn/102-9370806-2432911?v=glance&#38;s=books"><span style="text-decoration: underline;">book</span></a>, by <a href="http://alistair.cockburn.us/"><span style="text-decoration: underline;">Alistair Cockburn</span></a>, is now available.  <a href="http://www.aw-bc.com/catalog/academic/product/0,1144,0201699478-PRE,00.html"><span style="text-decoration: underline;">The preface</span></a> gives an excellent overview and <a href="http://www.informit.com/articles/article.asp?p=345009"><span style="text-decoration: underline;">this sample</span></a>&#8230; <a href="http://www.agilekiwi.com/other/agile/crystal-clear-methodology/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Crystal Clear is a methodology that summarises 10 years of research into successful software teams.  Which things really matter?  Which things most influence the project outcome?</p>
<p><span id="more-66"></span><br />
The Crystal Clear <a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201699478/ref=ase_alistaircockburn/102-9370806-2432911?v=glance&amp;s=books"><span style="text-decoration: underline;">book</span></a>, by <a href="http://alistair.cockburn.us/"><span style="text-decoration: underline;">Alistair Cockburn</span></a>, is now available.  <a href="http://www.aw-bc.com/catalog/academic/product/0,1144,0201699478-PRE,00.html"><span style="text-decoration: underline;">The preface</span></a> gives an excellent overview and <a href="http://www.informit.com/articles/article.asp?p=345009"><span style="text-decoration: underline;">this sample chapter</span></a> is also available on line.  (You&#8217;ll have to buy the book to read the rest :-)</p>
<h2>Briefly</h2>
<p>Crystal Clear is an agile methodology for projects with small teams, less than about 10 people in size.</p>
<p>Team size is important, because if you have a small team it&#8217;s easiest to adopt a methodology that already fits.  It is more difficult to start with a larger one and prune it back.</p>
<h2>Why Crystal Clear?</h2>
<p>Several aspects of Crystal Clear impress me:</p>
<ul>
<li>It&#8217;s based on <a href="http://www.agilekiwi.com/scientific_experiments.htm"><span style="text-decoration: underline;">observations of many successful teams</span></a>.  You can read the surprisingly entertaining story of Alistair&#8217;s observations <a href="http://alistair.cockburn.us/Characterizing+people+as+non-linear,+first-order+components+in+software+development">here</a>. This background gives Crystal a sounder base than most competing methodologies, which typically trace their roots back to a smaller number of projects. For example, XP was &#8220;born&#8221; on the <a href="http://www.martinfowler.com/bliki/C3.html"><span style="text-decoration: underline;">C3 project</span></a>.</li>
<li>It has a different slant on things.  We&#8217;ve come to expect a certain &#8220;mechanical&#8221; feel to processes, &#8220;Do A, B and C, and the result will be D, where D is great software!&#8221;.  We&#8217;ve come to expect methodologies to contain details such as diagramming notations and workflows.  And yet, somehow, that&#8217;s not what matters <em>most</em>.  Crystal Clear describes the things that really do matter, the things that make the <em>most </em>difference to the success or failure of a project.</li>
<li>It <a href="http://www.agilekiwi.com/fixed_price_contracts.htm"><span style="text-decoration: underline;">supports</span></a> fixed price contracts.  Whether you love them or hate them, you probably use them.  Crystal Clear is flexible enough to suit.</li>
<li>It&#8217;s not &#8220;all or nothing&#8221;.  Crystal Clear will be useful to the people who adopt it, but it will also be useful to people who <em>don&#8217;t</em> adopt it.  At least, not all of it. Teams using RUP, XP or other methodologies can &#8220;borrow&#8221; useful techniques from Crystal Clear.  Likewise, if you <em>are</em> doing Crystal Clear, you can borrow good bits from other methodologies.</li>
<li>It gives you useful guidance on how to adopt the methodology, and how to tailor it to your organisation.  I find this a stark contrast with RUP, which says &#8220;tailor me&#8221;, but doesn&#8217;t seem to give enough guidance on exactly <em>how</em> to do so.</li>
<li>It &#8220;feels right&#8221;, because it has a lot in common with the successful projects I&#8217;ve worked on in the past.  This is not surprising, considering it&#8217;s based on observations of successful projects!</li>
<li>Crystal Clear is just a book (and a growing community of users).  If you want to adopt Crystal Clear, it will only cost you the price of a book, plus a little of your time (days, rather than months).</li>
</ul>
<h2>More Information</h2>
<p>While the book is the best resource, you may also like to see:</p>
<ul>
<li><a href="http://alistair.cockburn.us/"><span style="text-decoration: underline;">The author&#8217;s site</span></a> (See <a href="http://alistair.cockburn.us/crystal/articles/clm/crystallightmethods.htm"><span style="text-decoration: underline;">this page</span></a> in particular.  It describes how Crystal Clear relates to other &#8220;Crystal&#8221; methodologies, which are for larger teams)</li>
<li><a href="http://c2.com/cgi/wiki/wiki?CrystalClearMethodology"><span style="text-decoration: underline;">Crystal Clear discussion</span></a> on Wiki Wiki web</li>
<li>My &#8220;<a href="http://www.agilekiwi.com/methodology_map.htm"><span style="text-decoration: underline;">Methodology Map&#8221;</span></a></li>
<li>Martin Fowler&#8217;s <a href="http://www.martinfowler.com/articles/newMethodology.html#Crystal"><span style="text-decoration: underline;">comments about Crystal</span></a></li>
</ul>
<p><em> </em></p>
<h2><em>Summary</em></h2>
<p>While no methodology is a <a href="http://www.agilekiwi.com/fads.htm"><span style="text-decoration: underline;">magic formula for success</span></a>, if you&#8217;re involved in small-team software development, you should read this book.  Crystal Clear is not mutually exclusive with other methodologies, so you&#8217;ll find its insights valuable no matter how your team is organised.</p>
<p>Amazon&#8217;s page for the book is <a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201699478/ref=ase_alistaircockburn/102-9370806-2432911?v=glance&amp;s=books"><span style="text-decoration: underline;">here</span></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/crystal-clear-methodology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparison to Traditional Development</title>
		<link>http://www.agilekiwi.com/other/agile/comparison-to-traditional-development/</link>
		<comments>http://www.agilekiwi.com/other/agile/comparison-to-traditional-development/#comments</comments>
		<pubDate>Thu, 29 Dec 2005 21:46:55 +0000</pubDate>
		<dc:creator>John Rusk</dc:creator>
				<category><![CDATA[Agile Software Development]]></category>

		<guid isPermaLink="false">http://dell-pc/AgileKiwiWordpress/?p=57</guid>
		<description><![CDATA[<p>In my on-going quest to answer the question &#8220;What is agile development?&#8221;, here is a point-by-point comparison with traditional development.<span id="more-57"></span>I&#8217;ll label the traditional approach with &#8220;T&#8221;, and the agile approach with &#8220;A&#8221;&#8230;</p>
<h2>Iterative vs Waterfall</h2>
<p>T: Serial (&#8220;waterfall&#8221;) development is best (or at least normal/acceptable)<br />
A: Always use&#8230; <a href="http://www.agilekiwi.com/other/agile/comparison-to-traditional-development/" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>In my on-going quest to answer the question &#8220;What is agile development?&#8221;, here is a point-by-point comparison with traditional development.<span id="more-57"></span>I&#8217;ll label the traditional approach with &#8220;T&#8221;, and the agile approach with &#8220;A&#8221;&#8230;</p>
<h2>Iterative vs Waterfall</h2>
<p>T: Serial (&#8220;waterfall&#8221;) development is best (or at least normal/acceptable)<br />
A: Always use iterative development</p>
<h2>Workflow</h2>
<p>T:  Design, Build and Test follow each other, in that order<br />
A: Design, Build and Test influence each other, so they should be concurrent and iterative</p>
<h2>Requirements Quality</h2>
<p>To ensure requirements are well-defined and well-understood:</p>
<p>T:  document them thoroughly; users see the system when finished<br />
A: document them concisely; users see the system early and often</p>
<h2>Knowledge Transfer</h2>
<p>To ensure everyone understands the system:</p>
<p>T:  Place importance on written documentation<br />
A: Place importance on frequent verbal communication; regular working releases; and clear, readable source code</p>
<h2>Team Composition</h2>
<p>T:  Team members should be specialists (BA, Designer, Developer, Tester etc)<br />
A: Team members should be generalists (each with <a href="http://www.agilemodeling.com/essays/generalizingSpecialists.htm">their own particular strengths</a>)</p>
<h2>Team Size</h2>
<p>A successful process is one that:</p>
<p>T:  Organises a large team<br />
A: Gets the same output from a small team</p>
<h2>Planning</h2>
<p>T:  Make a Gantt Chart at the start; maintain it during the project<br />
A: Make a Task/Feature List at the start; maintain it during the project</p>
<h2>Monitoring</h2>
<p>Measure progress:</p>
<p>T:  against the Plan<br />
A: against the Task/Feature List (tracking which ones are completed).  But don&#8217;t just monitor your progress; also monitor the quality of that progress by testing and releasing regularly.</p>
<h2>Managing Change</h2>
<p>It&#8217;s hard to change software that&#8217;s already written, so:</p>
<p>T:  Control or minimise change<br />
A: Make change easier</p>
<h2>Predicting Completion</h2>
<p>Predict final completion date and cost using:</p>
<p>T:  the updated Gantt Chart<br />
A: the team&#8217;s progress to date</p>
<h2>Process Definition</h2>
<p>To help people successfully follow it, the development process should be:</p>
<p>T:  thoroughly documented<br />
A: concise and memorable</p>
<h2>Process Improvement</h2>
<p>Process improvement is best driven by:</p>
<p>T:  metrics<br />
A: the people involved</p>
<h2>Philosophy</h2>
<p>T:  Software development is a construction process, so making detailed plans is advisable.<br />
A: Software development is a creative process, so making detailed plans is unrealistic.</p>
<p>Instead, agile processes make less-detailed plans and manage risk through iteration, continuous quality control, and feedback.</p>
<h2>Success is</h2>
<p>T:  Meeting the initial predictions of cost and schedule<br />
A:  Delivering value for money</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agilekiwi.com/other/agile/comparison-to-traditional-development/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

