<?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>Agile Insider &#187; pragmatism</title>
	<atom:link href="http://www.agileinsider.org/tag/pragmatism/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agileinsider.org</link>
	<description>reality bytes...</description>
	<lastBuildDate>Fri, 23 Jul 2010 07:58:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Enterprise Agile &#8211; Evolutionary Standards</title>
		<link>http://www.agileinsider.org/2010/04/enterprise-agile-evolutionary-standards/</link>
		<comments>http://www.agileinsider.org/2010/04/enterprise-agile-evolutionary-standards/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 09:30:14 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[enterprise]]></category>
		<category><![CDATA[baby steps]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[just enough]]></category>
		<category><![CDATA[pragmatism]]></category>
		<category><![CDATA[simplicity]]></category>

		<guid isPermaLink="false">http://www.agileinsider.org/?p=236</guid>
		<description><![CDATA[At the risk of being lambasted by the agile community I will use the words enterprise and agile in the same sentence  
This article largely follows on from some previous entries and in particular my entry on user centred test driven development.
It is often a complaint that large organisations trundle along painfully and slowly.  [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_237" class="wp-caption alignleft" style="width: 237px"><a href="http://www.agileinsider.org/wp-content/uploads/2010/04/wf-markup.png"><img class="size-full wp-image-237   " title="simple wireframe markup" src="http://www.agileinsider.org/wp-content/uploads/2010/04/wf-markup.png" alt="" width="227" height="140" /></a><p class="wp-caption-text">Low Tech Evolutionary Standards</p></div>
<p>At the <a title="risk" href="http://www.agileinsider.org/tag/risk/">risk</a> of being lambasted by the agile community I will use the words enterprise and agile in the same sentence <img src='http://www.agileinsider.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>This article largely follows on from some previous entries and in particular my entry on <a href="/2010/04/top-tips-user-centred-automated-acceptance-tests/" target="_self">user centred test driven development</a>.</p>
<p>It is often a complaint that large organisations trundle along painfully and slowly.  Work can't start without following some process or other until you have sign-off.  Part of this sign-off will probably involve agreement to follow certain standards and guidelines, but if these standards don't yet exist how can we start???</p>
<p>To challenge this and present an alternative approach, why not make the "standards" part of the delivery itself.  Make it clear up front that rather than wait for the standards to be released (which would be the normal mode of attack in large organisations) you will actively work with whichever standard's body exists in the organisation to evolve <a title="just enough" href="http://www.agileinsider.org/tag/just-enough/">just enough</a> standards to support the actual work you are doing as you work through the backlog.</p>
<p>To make this work, <strong>COURAGE </strong>is imperative...  Someone has to have the courage to put a stake in the ground early, recognising there is a small <a title="risk" href="http://www.agileinsider.org/tag/risk/">risk</a> this may change.  Developers should embed the standards into their automated testing as early as possible, this means that when and if a standard does change, there are tests in place which will assist developers in ensuring that all work to date is easily brought up to date...</p>
<p>The results of this is a<strong> design language</strong> that everyone can understand, when someone says they are writing a test which is looking for the jobs tag in the currently featured news article, everyone should know what that refers to in the wireframes, and also know how this will be identified and marked up in the implementation.  This allows tests to be written before any code and even for the final "Look And Feel" to progress alongside development.</p>
<p>Of course, you're always free to continue in the traditional model and wait for three months until the standards body within the organisation <strong>produces a 300 page guidelines document </strong>before even starting that killer new feature that will storm the market...  Or make totally random guesses, which are much more likely to be wrong, and be safe in the knowledge you have the traditional saviour of projects - Hope and Prayer!!!</p><div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://www.agileinsider.org/2010/04/enterprise-agile-evolutionary-standards/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://www.agileinsider.org/2010/04/enterprise-agile-evolutionary-standards/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://www.agileinsider.org/2010/04/enterprise-agile-evolutionary-standards/&title=Enterprise+Agile+%26%238211%3B+Evolutionary+Standards" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://www.agileinsider.org/2010/04/enterprise-agile-evolutionary-standards/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://www.agileinsider.org/2010/04/enterprise-agile-evolutionary-standards/&title=Enterprise+Agile+%26%238211%3B+Evolutionary+Standards" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://www.agileinsider.org/2010/04/enterprise-agile-evolutionary-standards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vision &gt;= Solution &gt;= Problem</title>
		<link>http://www.agileinsider.org/2009/08/vision-solution-problem/</link>
		<comments>http://www.agileinsider.org/2009/08/vision-solution-problem/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 09:00:34 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[puzzles]]></category>
		<category><![CDATA[pragmatism]]></category>
		<category><![CDATA[vision]]></category>

		<guid isPermaLink="false">http://www.agileinsider.org/?p=185</guid>
		<description><![CDATA[I'll admit it, I'm not 100% agile since I tend to like solutions.  I would prefer a problem to solve, but if a problem is intangible I often find a solution is a great way to explore the potential and help express the underlying problem.
It is worth noting that innovation and invention are solutions [...]]]></description>
			<content:encoded><![CDATA[<p>I'll admit it, I'm not 100% agile since I tend to like solutions.  I would prefer a problem to solve, but if a problem is intangible I often find a solution is a great way to explore the potential and help express the underlying problem.</p>
<p>It is worth noting that innovation and invention are solutions and not problems.  When you apply for a patent, you don't patent the problem, you patent the solution, why?  If there are multiple solutions to any given problem then wouldn't we want to patent the problem?</p>
<p>I also find that quite often the solutions I am exploring are the result of a problem that I have assumed was well known and in actuality is not; it is in these moments that using the solution to derive the lowest common denominator of a problem stated as a user story can ensure that everyone is speaking the same language.</p>
<p>But given a solution, do we always need to know the problem?  My <a title="pragmatism" href="http://www.agileinsider.org/tag/pragmatism/">pragmatism</a> (and a few lean principles, i.e. waste) would state that if the solution brings value then run with it, if not ditch it.  If on the other hand the solution seems too constrained or lacking in features/functionality, then why not exploit the solution as the basis for a <a title="vision" href="http://www.agileinsider.org/tag/vision/">vision</a>?  Indeed many visions are just that, solutions to problems, expressed in a language alien to most developers.</p>
<p>So given a <a title="vision" href="http://www.agileinsider.org/tag/vision/">vision</a> expressed in an abstract form vs a vision that is pinned against an actual solution which is easier to understand and less likely to be misinterpreted?  I know which I'd prefer...</p>
<p>Do solutions have value, obviously; must we always mine problems, hmmm...</p><div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://www.agileinsider.org/2009/08/vision-solution-problem/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://www.agileinsider.org/2009/08/vision-solution-problem/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://www.agileinsider.org/2009/08/vision-solution-problem/&title=Vision+%3E%3D+Solution+%3E%3D+Problem" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://www.agileinsider.org/2009/08/vision-solution-problem/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://www.agileinsider.org/2009/08/vision-solution-problem/&title=Vision+%3E%3D+Solution+%3E%3D+Problem" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://www.agileinsider.org/2009/08/vision-solution-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Real Value of Test First is the Thought Process</title>
		<link>http://www.agileinsider.org/2009/06/real-value-of-test-first/</link>
		<comments>http://www.agileinsider.org/2009/06/real-value-of-test-first/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 16:51:31 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[test driven]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[just enough]]></category>
		<category><![CDATA[pragmatism]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[test first]]></category>

		<guid isPermaLink="false">http://www.agileinsider.org/?p=141</guid>
		<description><![CDATA[Thanks to a colleague at emergn I'm left questioning the real value of TDD.]]></description>
			<content:encoded><![CDATA[<div id="attachment_143" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-143" title="A Bit Too Simple" src="http://www.agileinsider.org/wp-content/uploads/2009/06/simple_test-300x299.jpg" alt="TDD found the simple solution ;)" width="300" height="299" /><p class="wp-caption-text">TDD found the simple solution <img src='http://www.agileinsider.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p></div>
<p><a title="Test Driven" href="http://www.agileinsider.org/tag/test-driven/">Test Driven</a> is a loaded term and means different things to different people.  I much prefer the term <a title="Test First" href="http://www.agileinsider.org/tag/test-first/">Test First</a> which clearly states that the test comes before the implementation.  However, for me, the value is not necessarily in creating an executable test, but in the thought processes that <a title="Test First" href="http://www.agileinsider.org/tag/test-first/">Test First</a> brings out.</p>
<p>One of my colleagues at <a href="http://www.agileinsider.org/emergn" target="_blank">emergn</a> is constantly reminding me that when presented with a solution you need to ask yourself what is the problem. This is what lead me to question TDD and it's variants.  If you search the web for <a title="Test Driven" href="http://www.agileinsider.org/tag/test-driven/">Test Driven</a> Development, you'll uncover a wealth of information from many of the authors in my BlogRoll, as well as many variants on a theme. I think the <a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">wikipedia entry</a> is a particularly good summary of Test Driven as it is currently understood by the community but for the real meat and bones you need to look at the articles from the thought leaders behind the practises.</p>
<p>However, when I look at this wealth of information, I'm now faced with the question...  OK, these are all solutions, but what is the fundamental problem they are solving?  Is it</p>
<ul>
<li>Code <a title="quality" href="http://www.agileinsider.org/tag/quality/">quality</a>/design is poor</li>
<li>Code is overly complex/difficult to test</li>
<li>Unused functionality within the code</li>
<li>Too many bugs</li>
</ul>
<p>It is only when we understand the underlying problem fully that we can then evaluate the applicability/suitability of a particular approach.  Indeed, it is this lack of a clearly defined problem which makes it impossible to determine which approach is best, since we can't define any tests up front...  This is actually a little bit of a paradox, but highlights for me one of the most important points about TDD.  TDD is a solution to too many problems and in certain cases is not a very good solution.</p>
<p>Testing should be about proving functionality, but unfortunately we too often see TDD trying to address non testing issues like design and code <a title="quality" href="http://www.agileinsider.org/tag/quality/">quality</a>.  Of course, code needs to be testable, but it is not the responsibility of the Testing to enforce this, it is the responsibility of the design, but this is (unfortunately IMHO) the missing piece in most methodologies...  Indeed, the approach of writing the "Simplest Possible Thing" to pass a test is possibly my biggest bug-bear with TDD.  This approach often means you can <strong>pass tests with no functionality</strong> other than hard coded return values, now that has to be the biggest process smell ever.</p>
<p>I'm going to stop using TDD, or Test Driven now and use instead the term I prefer which is Test First.  For me, this means that before I do anything, I will <strong>determine</strong> ahead of time how I <strong>would</strong> test it.  The immediate benefit (a.k.a value) I get from determining how to test something is I'm also starting to think about (dare I suggest design) things like apis/design/interaction/responsibilities.  This is not the same as BDUF (big design up front), instead it is <a title="just enough" href="http://www.agileinsider.org/tag/just-enough/">just enough</a> thought at just the right moment to (hopefully)  prevent a disaster.  I can then apply some cost/benefit <a title="analysis" href="http://www.agileinsider.org/tag/analysis/">analysis</a> with a pinch of <a title="risk" href="http://www.agileinsider.org/tag/risk/">risk</a> <a title="analysis" href="http://www.agileinsider.org/tag/analysis/">analysis</a> to assign a value to actually writing all the tests that TDD would have forced you to write, or just a small percentage to cover the important or more complex functionality.</p>
<p>Of course, in many cases I will actually create executable tests for many of those uncovered during this thought exercise, but will I go through the whole Red/Green/Refactor cycle, possibly not.  For me the Red/Green/Refactor is like micro context switching.  I prefer a slightly longer period of focus and therefore I may write quite a few tests at the same time before applying that context switch to go into coding mode.  This of course is my personal preference and undoubtedly would be scorned upon by the dogmatic TDD zealots, but if this is what makes me more productive, and without a baseline problem statement I challenge them to prove that this is not the best way to do your testing.</p>
<p>Test First allows me to</p>
<ul>
<li>Understand the problem I'm trying to solve</li>
<li>Think about how I will solve it (<a title="just enough" href="http://www.agileinsider.org/tag/just-enough/">just enough</a> design)</li>
<li>Uncover any unknowns or risks hidden in the initial problem statement</li>
<li>Produce high quality code which has just enough tests</li>
</ul>
<p>Many of the Test Driven approaches do indeed address many of the initial problems stated earlier, but are they the only solution to these problems?  Indeed, are these problems actually just symptoms of even deeper problems?  If the problem is simply that your code is very tightly coupled and difficult to test then the best ROI will probably come not from TDD but from up-skilling your development <a title="team" href="http://www.agileinsider.org/tag/team/">team</a> on fundamental design principles (unskilled developers was the <strong>real problem</strong> in the first place and TDD can't solve that).</p>
<p>Resources:</p>
<ul>
<li>Wikipedia entry for Test Driven Development:  <a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">http://en.wikipedia.org/wiki/Test-driven_development</a></li>
<li>Introducing BDD by Dan North: <a href="http://dannorth.net/introducing-bdd" target="_blank">http://dannorth.net/introducing-bdd</a> (highly recommended reading)</li>
<li>C2 wiki entry for Test Driven: <a href="http://c2.com/cgi/wiki?TestDriven" target="_blank">http://c2.com/cgi/wiki?TestDriven</a></li>
</ul><div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://www.agileinsider.org/2009/06/real-value-of-test-first/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://www.agileinsider.org/2009/06/real-value-of-test-first/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://www.agileinsider.org/2009/06/real-value-of-test-first/&title=The+Real+Value+of+Test+First+is+the+Thought+Process" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://www.agileinsider.org/2009/06/real-value-of-test-first/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://www.agileinsider.org/2009/06/real-value-of-test-first/&title=The+Real+Value+of+Test+First+is+the+Thought+Process" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://www.agileinsider.org/2009/06/real-value-of-test-first/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Big Red Button</title>
		<link>http://www.agileinsider.org/2009/06/big-red-button/</link>
		<comments>http://www.agileinsider.org/2009/06/big-red-button/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 16:42:52 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[fun]]></category>
		<category><![CDATA[pragmatism]]></category>
		<category><![CDATA[risk]]></category>

		<guid isPermaLink="false">http://www.agileinsider.org/?p=136</guid>
		<description><![CDATA[Here's my little user story:
As a blogger,
I want to use Threely as my url shortener.
So that I get more letters on Twitter.
Pretty simple story, and also very simple to implement, but impossible to test?  I can certainly test the API to twitter, but given I use a wordpress plugin (developed by someone else) to do [...]]]></description>
			<content:encoded><![CDATA[<p>Here's my little user story:</p>
<p>As a blogger,<br />
I want to use <a href="http://3.ly/" target="_blank">Threely</a> as my url shortener.<br />
So that I get more letters on Twitter.</p>
<p>Pretty simple story, and also very simple to implement, but impossible to test?  I can certainly test the API to twitter, but given I use a wordpress plugin (developed by someone else) to do the auto-posting is it worth the effort for the addition of 6 lines of code?</p>
<p>For me, the pragmatic solution is to take the <a title="risk" href="http://www.agileinsider.org/tag/risk/">risk</a> based approach.  I'm going live with Threely (<a href="http://3.ly/" target="_blank">http://3.ly</a>) (again, fixed a small typo), but have an escape plan (extremely important when there are known risks) which is the ability to revert if anything untowards happens and revisit my approach.</p>
<p>So, here goes, pressing the big red button <img src='http://www.agileinsider.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p><div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://www.agileinsider.org/2009/06/big-red-button/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://www.agileinsider.org/2009/06/big-red-button/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://www.agileinsider.org/2009/06/big-red-button/&title=Big+Red+Button" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://www.agileinsider.org/2009/06/big-red-button/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://www.agileinsider.org/2009/06/big-red-button/&title=Big+Red+Button" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://www.agileinsider.org/2009/06/big-red-button/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qualities of a Good Developer?</title>
		<link>http://www.agileinsider.org/2009/05/qualities-of-a-good-developer/</link>
		<comments>http://www.agileinsider.org/2009/05/qualities-of-a-good-developer/#comments</comments>
		<pubDate>Thu, 28 May 2009 11:33:38 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[coaching]]></category>
		<category><![CDATA[baby steps]]></category>
		<category><![CDATA[human nature]]></category>
		<category><![CDATA[pragmatism]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://www.agileinsider.org/?p=78</guid>
		<description><![CDATA[It is often quoted that a good developer can be up to 10 times more productive than an average developer, so how can you tell whether a developer is good or not?]]></description>
			<content:encoded><![CDATA[<p>Just what exactly is it that distinguishes a good developer from an average developer?  Certification in a particular language or technology demonstrates the ability to be "average", but certainly doesn't demonstrate good.  I believe a good developer is someone who has an aptitude for developing, which is inherently extremely difficult to measure or quantify.  However, there are possibly a few things that can help you identify your good developers:</p>
<ul>
<li>They are capable of using several languages to get things done</li>
<li>They are pragmatic in their approach</li>
<li>They understand the concepts as well as the solutions</li>
<li>They can think at multiple levels of abstraction</li>
<li>They can get things moving despite uncertainty</li>
<li>They champion <a title="quality" href="http://www.agileinsider.org/tag/quality/">quality</a> and continuous improvement</li>
<li>They like to share their knowledge and expertise</li>
</ul>
<p>Of course, these are very subjective measures and very hard to qualify or quantify.  It can be very hard to demonstrate an ability to use several languages if the working environment dictates a single language.  Red tape may prevent <a title="pragmatism" href="http://www.agileinsider.org/tag/pragmatism/">pragmatism</a>.  If the environment prevents these qualities being expressed then it is very likely the most important qualities of the best developers are being suppressed.</p>
<p>If you wish to get the best from your best developers, and achieve that 10 times productivity that is often quoted, you should look to make sure that you have provided them with an environment that allows them to demonstrate (through action) the above characteristics.  If there is anyone you can think of right now with some or most of these characteristics, why not <strong>take the opportunity to ask them</strong> how <strong>you can help</strong> to allow them to improve.</p><div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://www.agileinsider.org/2009/05/qualities-of-a-good-developer/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://www.agileinsider.org/2009/05/qualities-of-a-good-developer/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://www.agileinsider.org/2009/05/qualities-of-a-good-developer/&title=Qualities+of+a+Good+Developer%3F" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://www.agileinsider.org/2009/05/qualities-of-a-good-developer/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://www.agileinsider.org/2009/05/qualities-of-a-good-developer/&title=Qualities+of+a+Good+Developer%3F" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://www.agileinsider.org/2009/05/qualities-of-a-good-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Should I Bother?</title>
		<link>http://www.agileinsider.org/2009/05/should-i-bother/</link>
		<comments>http://www.agileinsider.org/2009/05/should-i-bother/#comments</comments>
		<pubDate>Fri, 22 May 2009 07:53:03 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[baby steps]]></category>
		<category><![CDATA[benefits]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[pragmatism]]></category>

		<guid isPermaLink="false">http://www.agileinsider.org/?p=61</guid>
		<description><![CDATA[You've never done agile before and you work on a legacy system which is extremely fragile and bug-ridden.  I'm guessing quite a few developers will be able to identify with this scenario.  Does this mean agile is a no-go?  On the contrary, applying agile techniques will probably make it easier to fix those bugs, faster and in the process improve the code just a little bit.]]></description>
			<content:encoded><![CDATA[<p>You've never done "agile" before and you work on a <a title="legacy" href="http://www.agileinsider.org/tag/legacy/">legacy</a> system which is extremely large, complex, fragile and bug-ridden.  I'm guessing quite a few developers will be able to identify with this scenario.  Does this mean "agile" is a no-go?  On the contrary, applying "agile" techniques will probably make it easier to fix those bugs, faster and in the process improve the code just a little bit.</p>
<p>Here are my tips (prerequisites) before attempting "agile" within a <a title="legacy" href="http://www.agileinsider.org/tag/legacy/">legacy</a> project:</p>
<ul>
<li>Remove blockers
<ul>
<li>Legacy builds tend to be painfully long - setup an environment that allows you to build and test the changes you will make quickly.</li>
</ul>
</li>
<li>Protect yourself
<ul>
<li>The changes you'll want to make are probably buried extremely deep within existing methods - use <a title="refactoring" href="http://www.agileinsider.org/tag/refactoring/">refactoring</a> to pull out the code you want to change into a new method/class.</li>
<li>Write tests that capture the existing functionality of the code you just extracted.</li>
</ul>
</li>
</ul>
<p>If it is too difficult to perform any of the above steps then don't bother with "agile" just yet (although by all means apply <a title="pragmatism" href="http://www.agileinsider.org/tag/pragmatism/">pragmatism</a>), choose your "agile" battles carefully and you'll live to fight another day.</p><div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://www.agileinsider.org/2009/05/should-i-bother/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://www.agileinsider.org/2009/05/should-i-bother/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://www.agileinsider.org/2009/05/should-i-bother/&title=Should+I+Bother%3F" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://www.agileinsider.org/2009/05/should-i-bother/" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://www.agileinsider.org/2009/05/should-i-bother/&title=Should+I+Bother%3F" target="_new"><img src="http://www.agileinsider.org/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://www.agileinsider.org/2009/05/should-i-bother/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
