<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>let x=x &#187; teams</title>
	<atom:link href="http://www.crazymcphee.net/x/tag/teams/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.crazymcphee.net/x</link>
	<description>programming idiom and methodology</description>
	<lastBuildDate>Wed, 11 Aug 2010 01:13:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Code quality and development teams</title>
		<link>http://www.crazymcphee.net/x/2009/02/04/code-qualit-and-development-team/</link>
		<comments>http://www.crazymcphee.net/x/2009/02/04/code-qualit-and-development-team/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 08:28:33 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[professional practice]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[teams]]></category>
		<category><![CDATA[test driven design]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=135</guid>
		<description><![CDATA[Robert C. Martin, aka &#8220;Uncle Bob&#8221;, lays into Joel Spolsky and Jeff Atwood: I was riding my exercise bike, listening to Stack Overflow #38 when I heard Jeff Atwood and Joel Spolsky say “Quality just doesn’t matter that much.” I nearly fell off my bike. (There&#8217;s a transcript of part of the podcast on Joel&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Robert C. Martin, aka &#8220;Uncle Bob&#8221;, <a href="http://blog.objectmentor.com/articles/2009/01/31/quality-doesnt-matter-that-much-jeff-and-joel" target="_blank">lays into Joel Spolsky and Jeff Atwood</a>:</p>
<blockquote><p>I was riding my exercise bike, listening to <a href="http://blog.stackoverflow.com/2009/01/podcast-38/">Stack Overflow #38</a> when I heard Jeff Atwood and Joel Spolsky say <em>“Quality just doesn’t matter that much.”</em> I nearly fell off my bike.</p></blockquote>
<p>(There&#8217;s a <a href="http://joelonsoftware.com/items/2009/01/31.html" target="_blank">transcript of part of the podcast</a> on Joel&#8217;s blog &#8220;Joel On Software&#8221; if you don&#8217;t want to listen to it).</p>
<p>Of course I&#8217;m going to say here that I completely agree with Uncle Bob. The more extraordinary parts of the actual podcast come along when Joel attacks the idea of TDD &#8211; test-driven design (although he refers to test-driven <em>development</em>):</p>
<blockquote><p>But the real problem with unit tests as I&#8217;ve discovered is that the type of changes that you tend to make as code evolves tend to break a constant percentage of your unit tests. Sometimes you will make a change to your code that, somehow, breaks 10% of your unit tests. Intentionally. [ ... ] And you have to be able to go in and recreate those tests to reflect the new reality of the code.</p></blockquote>
<p>This stuff is just a sheer obtuse misunderstanding about the very <em>nature</em> of TDD. Uncle Bob takes him to task for it I&#8217;m not going to repeat them here other to say I utterly agree with everything Mr. Martin has to say. Go and read the link above, it&#8217;s very effective and thorough pulling apart of Joel&#8217;s position on the matter.</p>
<p>I just want to talk about some other things, about the nature of software development, as against <a href="http://www.joelonsoftware.com/articles/fog0000000043.html" target="_blank">some of the things that Joel says</a> is the <a href="http://www.joelonsoftware.com/articles/FieldGuidetoDevelopers.html" target="_blank">best way</a> to <a href="http://www.joelonsoftware.com/articles/Wrong.html" target="_blank">organise</a> development and development teams. Joel just doesn&#8217;t seem to get agile engineering practices, and never has, but even  worse, he <em>willfully misrepresents</em> its disciplines and practices in order to demolish a straw man of his own making. The stuff above about TDD is clearly the prosecution&#8217;s exhibit A. He&#8217;s a respected development guru, and a lot of people trust what he says about code and the business of running a development sales organisation, which I admit, it&#8217;s reasonably sensible most of the time. However when he starts to talk about development practices and team organisation, while he says some things that are highly insightful, some of the others are full of horse manure. Or even worse than that, it&#8217;s 50% good advice, and 25% outright harmful advice.  There&#8217;s plenty of manure spread around by everybody else of course, me included, but due to his position as an exhalted spokesperson, and due to the wrongful nature of the things he says,  I find that his is particularly <em>dangerous</em> horse manure.</p>
<p>For example, all that stuff regarding &#8220;developers get offices of their own&#8221;. The best teams I&#8217;ve worked in are all in the one room, clustered on desks together and as noisy as hell. It&#8217;s usually best to put the <em>whole team</em> in a large office space of their own &#8211; so they don&#8217;t annoy the hell out of other teams. Joel maintains that <em>individual</em> developer offices are the only way &#8211; the illusion of the developer as a single genius toiling away in silence &#8211; rather than a member of a multifunctional, communicating, effective team. I disagree, and vehemently. Sure a big &#8216;TEAMWORK&#8217; banner is just self-deception, but effective teams aren&#8217;t make effective through slogans and exhortations. Effective teams are made through actual action. If you have offices, they should be large team-based spaces where whole teams are co-located. And small temporary, hot-desk&#8217;d offices, if for good reasons, a developer (or better, a <em>pair</em>) need some quiet time to concentrate on solving some particularly hard problem. But mostly, delivering effective software is about <em>team communication</em>, not <em>developer concentration</em>.</p>
<p>Joel&#8217;s totally focused on the notion of the hero-developer.</p>
<p>There&#8217;s a bell curve of developer ability (like all such talent) which guarantees the vast majority of developers are &#8220;average&#8221;. Focusing your effort on finding only the top 5th percentile for your team is <em>futile</em>. Especially when you&#8217;ve already got a team you have to work with. Are you going to fire them all if they don&#8217;t come up to standard? Or just fire maybe the incompetant ones and work to improve the <em>team</em>. Sure, when you find you&#8217;ve <em>got</em> one of these &#8220;rock star developers&#8221; on your team, maybe you <em>do</em> have to treat him (or her) a little different to the others, to keep him (or her) motivated and interested at the tasks you offer. Nonetheless, 70% of your developers are going to fall within the standard deviation, almost by <em>definition</em>. An additional consideration is, you can get an absolute <em>genius</em> developer who is a complete social misfit and can&#8217;t work in a team very effectively. We all know (and maybe some of us <em>are</em>) this guy. At the end of the day sometimes these people are <em>destructive</em> to teams &#8211; reducing the teams productive capacity, if they can&#8217;t play nice with others. I&#8217;m not advocating some sort of we-are-all-mediocre approach and, yes, everyone&#8217;s an individual &#8211; but we do generally have to work in teams in order to achieve productive software development outcomes.</p>
<p>It&#8217;s the agile approach to value &#8216;people and interactions&#8217; over &#8216;processes and tools&#8217; but also notice it&#8217;s <em>people</em>, in the plural, and not individuals, and <em>interactions</em> implies work is multiplied when those people exchange information effectively and work together as a team. Information exchange bandwidth is greatest face-to-face, or better yet across entire teams. Private conversations that can&#8217;t be interrupted are only useful in the context of personal, and therefore truly private, information. <em>Not team interactions</em>. Any team member should be able to &#8216;stick their oar in&#8217; on any matter being handled by the team &#8211; that&#8217;s how you get the best ideas! The idea of hierarchicalised, compartmentalised, information exchanges in the context of a private office sounds to me like an MI6 operation, not a software development practice.</p>
<p>Joel might know heaps about the <em>micro</em>-algorithms of manipulating data structures and carrying out instructions efficiently but ultimately it&#8217;s the <em>macro</em>-algorithms as to how software is effectively developed and how teams can deliver the best and quickest value to the customer that are the <em>really hard </em>problems. These are also the very problems that IT the whole world over have with the greater business world &#8211; how to prove to them we can organise, manage and deliver development effectively. Wearing a pointy hat and talking obtusely about pointer arithmetic and demanding expensive offices for all the prima-donna developers you&#8217;re going to employ to toil away in silence won&#8217;t convince the suits in charge of the <em>actual</em> money of anything other than you&#8217;re a crazy nerd who can&#8217;t be trusted with a budget.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/02/04/code-qualit-and-development-team/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
