<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.1" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Maintainable Programmers</title>
	<link>http://lesscode.org/2005/12/30/maintainable-programmers/</link>
	<description>AAaaaaahhhhrrrrrrr!</description>
	<pubDate>Mon, 17 Sep 2007 09:42:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.1</generator>

	<item>
		<title>by: Aristotle Pagaltzis</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-2159</link>
		<pubDate>Sat, 13 May 2006 18:29:26 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-2159</guid>
					<description>&lt;p&gt;&lt;a href=&quot;http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;#38;entry=3324906036&quot; title=&quot;Worrying about the wrong things&quot; rel=&quot;&quot;&gt;Interesting relevant post by James Robertson.&lt;/a&gt;&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p><a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3324906036" title="Worrying about the wrong things" rel="">Interesting relevant post by James Robertson.</a></p>
]]></content:encoded>
				</item>
	<item>
		<title>by: warpedvisions.org &#187; Blog Archive &#187; Maintainable programmers</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-1046</link>
		<pubDate>Mon, 06 Feb 2006 23:02:48 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-1046</guid>
					<description>&lt;p&gt;[...] February 6th, 2006 in Links Maintainable Programmers. Finding good programmers is really difficult. [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[&#8230;] February 6th, 2006 in Links Maintainable Programmers. Finding good programmers is really difficult. [&#8230;]</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Aristotle Pagaltzis</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-923</link>
		<pubDate>Sat, 07 Jan 2006 18:41:07 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-923</guid>
					<description>&lt;p&gt;I know. I find myself vigorously agreeing with half of each Hacknot article and vehemently disagreeing with the other half. I guess they are what one would call thought-provoking. &lt;tt&gt;:-)&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;What I mainly took away from that article is its primary subject: how the lack of any standards and ethics mean that software development is no profession; and that it is in our power, interest &lt;em&gt;and&lt;/em&gt; responsibility to change that.&lt;/p&gt;

&lt;p&gt;Which, as it happens, has a lot of overlap with lesscode.org’s mission.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I know. I find myself vigorously agreeing with half of each Hacknot article and vehemently disagreeing with the other half. I guess they are what one would call thought-provoking. <tt>:-)</tt></p>
<p>What I mainly took away from that article is its primary subject: how the lack of any standards and ethics mean that software development is no profession; and that it is in our power, interest <em>and</em> responsibility to change that.</p>
<p>Which, as it happens, has a lot of overlap with lesscode.org’s mission.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Kevin Smith</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-922</link>
		<pubDate>Sat, 07 Jan 2006 17:42:51 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-922</guid>
					<description>&lt;p&gt;I just read that &quot;crooked timber&quot; article. Loved the parts about ethics and responsibility. Hated the parts about turning software development into Software Engineering. College is vastly overrated, and many professional licensing schemes are harmful to practitioners and clients alike. Not to mention that most current Software Engineering advocacy is anti-agile. Let's not go down that road.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I just read that &#8220;crooked timber&#8221; article. Loved the parts about ethics and responsibility. Hated the parts about turning software development into Software Engineering. College is vastly overrated, and many professional licensing schemes are harmful to practitioners and clients alike. Not to mention that most current Software Engineering advocacy is anti-agile. Let&#8217;s not go down that road.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: How’s that for less code? [@lesscode.org]</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-921</link>
		<pubDate>Sat, 07 Jan 2006 17:24:30 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-921</guid>
					<description>&lt;p&gt;[...] about lesscode.org      &amp;#171; Maintainable Programmers [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[&#8230;] about lesscode.org      &laquo; Maintainable Programmers [&#8230;]</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Aristotle Pagaltzis</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-915</link>
		<pubDate>Tue, 03 Jan 2006 14:37:32 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-915</guid>
					<description>&lt;p&gt;&lt;a href=&quot;#comment-914&quot;&gt;Jayson&lt;/a&gt;: great stuff, thanks.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;#comment-911&quot;&gt;Kevin&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;It’s not compatible with my ideas of fun, productivity, and (in many cases) broad spiritual/ethical beliefs.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;You will probably enjoy &lt;a href=&quot;http://www.hacknot.info/hacknot/action/showEntry?eid=77&quot;&gt;The Crooked Timber Of Software Development&lt;/a&gt;.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p><a href="#comment-914">Jayson</a>: great stuff, thanks.</p>
<p><a href="#comment-911">Kevin</a>:</p>
<blockquote><p>It’s not compatible with my ideas of fun, productivity, and (in many cases) broad spiritual/ethical beliefs.</p>
</blockquote>
<p>You will probably enjoy <a href="http://www.hacknot.info/hacknot/action/showEntry?eid=77">The Crooked Timber Of Software Development</a>.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Jayson Vantuyl</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-914</link>
		<pubDate>Tue, 03 Jan 2006 07:35:41 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-914</guid>
					<description>&lt;p&gt;I think there's an even different disconnect here than mentioned above:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Those who can do a thing, do it.  Those who can't, manage.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;At the core of the arguements is either &quot;Your people should know what they're doing.  Hire good programmers and get good results.&quot; versus &quot;We want to engineer a process that takes the endless supply of cheaper codemonkeys and generates something usable.&quot;.&lt;/p&gt;

&lt;p&gt;Ironically, both of these are correct answers to different questions from different people.&lt;/p&gt;

&lt;p&gt;Good programmers rarely can suffer working for someone who can't do what they are capable of doing.  Enumerate the possibilities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Management can't understand what you do and doesn't give you the support needed to exceed (Management into Oblivion).  This is not sustainable because generally gifted programmers quit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Management can't understand what you do but gives you the room and support to succeed (Effective Middlemen).  This isn't sustainable because eventually the programmer recognize the uselessness of their management and starts a startup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Management can understand what you do and manages effectively.  Of course, in this situation, good programmers usually ARE the management (usually this is a startup).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essentially, gifted programmers don't work for corporate management types for long.&lt;/p&gt;

&lt;p&gt;Conversely, these people (henceforthe referred to as &quot;MBAs&quot;, used pejoratively) are left to do what they can.  Since your average codemonkey will waste his time humping a stupid project for a visionless manager, these same management-types ALWAYS get the best out of codemonkeys.  It's a self fulfilling prophecy.  If you manage capable people so badly that they leave, you'll naively believe that capable people are &quot;unreliable&quot; and that the less capable are suitable because they are replacable and that your &quot;process&quot; will make everything work anyways.&lt;/p&gt;

&lt;p&gt;This article essentially says that the corporate management (MBA) mindset is not even close to the right way to solve the problem.  It is correct.&lt;/p&gt;

&lt;p&gt;The referenced article says that, within the context of being a corporate manager who is incapable of writing good code yourself (and thus managing people who can), this process takes low quality programmers and forces them to behave a little better.  In this way, that article is correct as well.&lt;/p&gt;

&lt;p&gt;The problem is not that these people don't understand what solves a problem.  Programmers write code because they want to solve problems.  MBAs us to work in such a way as to enabling the mediocre to repeatedly succeed cheaply enough that the savings amortized over the lifetime of the enterprise offsets the loss expended to later achieve optimal solutions (the above Franchise Scenario).  Business types have no problem with a net loss if the short term win keeps them in business.&lt;/p&gt;

&lt;p&gt;I love how some respondents use the word &quot;artist&quot; as a pejorative.  It's kind of like the way certain people use the word &quot;Republican&quot;, &quot;Democrat&quot;, &quot;Feminist&quot;, &quot;Management&quot;, etc.  Essentially its a way to appear polite when covertly signalling other people which share your lack of respect for your opposition.  A way of coopting the naming of a thing to communicate disdain for it.&lt;/p&gt;

&lt;p&gt;In this case, the implication is that caring about &quot;design&quot; or &quot;craftsmanship&quot; is impractical, or at least that a process can somehow make a solution &quot;good enough&quot;.  This is, of course, classic code monkey / management groupthink--and it benefits both of them to feel that way.  Of course, they may be right.  Hiring good programmers is useless if you're out of business.&lt;/p&gt;

&lt;p&gt;That said, the mistake is to then blindly trust management to sort it out because &quot;it's their job&quot;, which is ironic because they are least suited (well, they do wear suits) to make the calls necessary to design their products.  In the end, I don't even bother to explain it anymore.  People who need to ask the question are already too far gone to affect.  How do you explain to someone that quality companies are built on quality people?  If you don't understand, it will be up to repeated failures at the hands of quality people to teach you.&lt;/p&gt;

&lt;p&gt;I'm afraid that the only way to solve this problem will be for engineers and programmers to systematically remove MBAs from companies by repeatedly founding valuable startups and dominate business with value.  Don't sell out.  Be brutal in keeping your environment pure.  You'll have to spend generations draining the money from the MBA types, since their primary skill is retaining it.  &lt;/p&gt;

&lt;p&gt;The proof is in the pudding.  MBAs pull the double whammy.  They get to trade in the analysis of what is &quot;valuable&quot;.  They get to turn real world situations into &quot;valuations&quot;.  It is no surprise that they dominate management decisions when they are the ones that assign relative value.  It's no wonder they hijack control of business.&lt;/p&gt;

&lt;p&gt;The market is more discerning than this.  Just crank out good software at a fraction of the cost and work to destroy the credibility of the MBA (believe me, most of Wall Street, Tyco, Worldcom, and Enron have already gone a long way).&lt;/p&gt;

&lt;p&gt;Along the way, it may be necessary to reclaim the courts and the government, but that's another discussion...  :)&lt;/p&gt;

&lt;p&gt;Seriously though, I can only hope that real, honest-to-goodness MBAs can read this and appreciate what I'm saying.  People in management are competitive.  This competition becomes manipulative.  It is a matter of ethics and responsibility for MBAs to keep reality in their numbers and work as a group to prevent those of their number from &quot;minimizing&quot; in these ways.&lt;/p&gt;

&lt;p&gt;They have a profound effect on the market.  They determine which languages get press and nourishment.  Agile languages are supremely important regardless of the supply of programmers for them.  If IBM wants Python or Ruby programmers, there will be Python or Ruby programmers.  Don't underestimate your role in this.&lt;/p&gt;

&lt;p&gt;Realize that employees (good programmers in particular) aren't just a &quot;resource&quot;, but more appropriately an &quot;asset&quot;.  Realize that you are fooling yourself if you can't see where good programmers fit into your balance sheet.&lt;/p&gt;

&lt;p&gt;When hiring a cheap programmer or two in place of a good one, realize that you're replacing an asset with a much less valuable one.  It may look like you've saved if you don't properly value the assets you're trading...&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I think there&#8217;s an even different disconnect here than mentioned above:</p>
<p><b>Those who can do a thing, do it.  Those who can&#8217;t, manage.</b></p>
<p>At the core of the arguements is either &#8220;Your people should know what they&#8217;re doing.  Hire good programmers and get good results.&#8221; versus &#8220;We want to engineer a process that takes the endless supply of cheaper codemonkeys and generates something usable.&#8221;.</p>
<p>Ironically, both of these are correct answers to different questions from different people.</p>
<p>Good programmers rarely can suffer working for someone who can&#8217;t do what they are capable of doing.  Enumerate the possibilities.</p>
<ul>
<li>
<p>Management can&#8217;t understand what you do and doesn&#8217;t give you the support needed to exceed (Management into Oblivion).  This is not sustainable because generally gifted programmers quit.</p>
</li>
<li>
<p>Management can&#8217;t understand what you do but gives you the room and support to succeed (Effective Middlemen).  This isn&#8217;t sustainable because eventually the programmer recognize the uselessness of their management and starts a startup.</p>
</li>
<li>
<p>Management can understand what you do and manages effectively.  Of course, in this situation, good programmers usually ARE the management (usually this is a startup).</p>
</li>
</ul>
<p>Essentially, gifted programmers don&#8217;t work for corporate management types for long.</p>
<p>Conversely, these people (henceforthe referred to as &#8220;MBAs&#8221;, used pejoratively) are left to do what they can.  Since your average codemonkey will waste his time humping a stupid project for a visionless manager, these same management-types ALWAYS get the best out of codemonkeys.  It&#8217;s a self fulfilling prophecy.  If you manage capable people so badly that they leave, you&#8217;ll naively believe that capable people are &#8220;unreliable&#8221; and that the less capable are suitable because they are replacable and that your &#8220;process&#8221; will make everything work anyways.</p>
<p>This article essentially says that the corporate management (MBA) mindset is not even close to the right way to solve the problem.  It is correct.</p>
<p>The referenced article says that, within the context of being a corporate manager who is incapable of writing good code yourself (and thus managing people who can), this process takes low quality programmers and forces them to behave a little better.  In this way, that article is correct as well.</p>
<p>The problem is not that these people don&#8217;t understand what solves a problem.  Programmers write code because they want to solve problems.  MBAs us to work in such a way as to enabling the mediocre to repeatedly succeed cheaply enough that the savings amortized over the lifetime of the enterprise offsets the loss expended to later achieve optimal solutions (the above Franchise Scenario).  Business types have no problem with a net loss if the short term win keeps them in business.</p>
<p>I love how some respondents use the word &#8220;artist&#8221; as a pejorative.  It&#8217;s kind of like the way certain people use the word &#8220;Republican&#8221;, &#8220;Democrat&#8221;, &#8220;Feminist&#8221;, &#8220;Management&#8221;, etc.  Essentially its a way to appear polite when covertly signalling other people which share your lack of respect for your opposition.  A way of coopting the naming of a thing to communicate disdain for it.</p>
<p>In this case, the implication is that caring about &#8220;design&#8221; or &#8220;craftsmanship&#8221; is impractical, or at least that a process can somehow make a solution &#8220;good enough&#8221;.  This is, of course, classic code monkey / management groupthink&#8211;and it benefits both of them to feel that way.  Of course, they may be right.  Hiring good programmers is useless if you&#8217;re out of business.</p>
<p>That said, the mistake is to then blindly trust management to sort it out because &#8220;it&#8217;s their job&#8221;, which is ironic because they are least suited (well, they do wear suits) to make the calls necessary to design their products.  In the end, I don&#8217;t even bother to explain it anymore.  People who need to ask the question are already too far gone to affect.  How do you explain to someone that quality companies are built on quality people?  If you don&#8217;t understand, it will be up to repeated failures at the hands of quality people to teach you.</p>
<p>I&#8217;m afraid that the only way to solve this problem will be for engineers and programmers to systematically remove MBAs from companies by repeatedly founding valuable startups and dominate business with value.  Don&#8217;t sell out.  Be brutal in keeping your environment pure.  You&#8217;ll have to spend generations draining the money from the MBA types, since their primary skill is retaining it.  </p>
<p>The proof is in the pudding.  MBAs pull the double whammy.  They get to trade in the analysis of what is &#8220;valuable&#8221;.  They get to turn real world situations into &#8220;valuations&#8221;.  It is no surprise that they dominate management decisions when they are the ones that assign relative value.  It&#8217;s no wonder they hijack control of business.</p>
<p>The market is more discerning than this.  Just crank out good software at a fraction of the cost and work to destroy the credibility of the MBA (believe me, most of Wall Street, Tyco, Worldcom, and Enron have already gone a long way).</p>
<p>Along the way, it may be necessary to reclaim the courts and the government, but that&#8217;s another discussion&#8230;  :)</p>
<p>Seriously though, I can only hope that real, honest-to-goodness MBAs can read this and appreciate what I&#8217;m saying.  People in management are competitive.  This competition becomes manipulative.  It is a matter of ethics and responsibility for MBAs to keep reality in their numbers and work as a group to prevent those of their number from &#8220;minimizing&#8221; in these ways.</p>
<p>They have a profound effect on the market.  They determine which languages get press and nourishment.  Agile languages are supremely important regardless of the supply of programmers for them.  If IBM wants Python or Ruby programmers, there will be Python or Ruby programmers.  Don&#8217;t underestimate your role in this.</p>
<p>Realize that employees (good programmers in particular) aren&#8217;t just a &#8220;resource&#8221;, but more appropriately an &#8220;asset&#8221;.  Realize that you are fooling yourself if you can&#8217;t see where good programmers fit into your balance sheet.</p>
<p>When hiring a cheap programmer or two in place of a good one, realize that you&#8217;re replacing an asset with a much less valuable one.  It may look like you&#8217;ve saved if you don&#8217;t properly value the assets you&#8217;re trading&#8230;</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Marginalia &#187; Blog Archive &#187; Easy Programming Languages</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-913</link>
		<pubDate>Tue, 03 Jan 2006 01:46:48 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-913</guid>
					<description>&lt;p&gt;[...] Update: I came across a related essay by Aristotle Pagaltzis called Maintainable Programmers. [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[&#8230;] Update: I came across a related essay by Aristotle Pagaltzis called Maintainable Programmers. [&#8230;]</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Kevin Smith</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-911</link>
		<pubDate>Mon, 02 Jan 2006 04:45:51 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-911</guid>
					<description>&lt;p&gt;What's wrong with the [traditional/mainstream] corporate management world view? &lt;/p&gt;

&lt;p&gt;It's not compatible with my ideas of fun, productivity, and (in many cases) broad spiritual/ethical beliefs. I've worked at about twenty companies (salary and contract) over about 25 years. From banks and IBM to 3-person startups. I know what environments work best for me.&lt;/p&gt;

&lt;p&gt;If you want to be a corporate coder, I have no problem with that. But the more shops that switch to an agile process, the more job opportunities that I would actually consider. Hence, my low-level advocacy for all things agile.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>What&#8217;s wrong with the [traditional/mainstream] corporate management world view? </p>
<p>It&#8217;s not compatible with my ideas of fun, productivity, and (in many cases) broad spiritual/ethical beliefs. I&#8217;ve worked at about twenty companies (salary and contract) over about 25 years. From banks and IBM to 3-person startups. I know what environments work best for me.</p>
<p>If you want to be a corporate coder, I have no problem with that. But the more shops that switch to an agile process, the more job opportunities that I would actually consider. Hence, my low-level advocacy for all things agile.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Aristotle Pagaltzis</title>
		<link>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-910</link>
		<pubDate>Sun, 01 Jan 2006 14:17:35 +0000</pubDate>
		<guid>http://lesscode.org/2005/12/30/maintainable-programmers/#comment-910</guid>
					<description>&lt;p&gt;&lt;a href=&quot;#comment-890&quot;&gt;Brian&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This turned out to be untrue. It was a surprise to me. I wanted to convince people in my previous situation what I learned.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah. That does put your article in quite a different light. I wish you had phrased it along the lines of this comment, though, that is, framed the &lt;i&gt;Java = maintainable&lt;/i&gt; assertions as convictions rather than fact (even if only subversively &lt;tt&gt;;-)&lt;/tt&gt;). I don't think I'd have taken issue at all in that case.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;#comment-892&quot;&gt;Brian&lt;/a&gt;, again:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The main problems are there’s no easy way to judge them, and you can’t hit deadlines with artists.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Careful: I don't equate artists with great programmers. Great programmers are craftsmen and pragmatists. They may express themselves through their work, but they don't do it &lt;em&gt;to&lt;/em&gt; express themselves.&lt;/p&gt;

&lt;p&gt;That said, it is true that they are hard to identify. The moral is probably that programmers need to be involved in the hiring process if you want to hire good programmers. I am reminded once more of &lt;a href=&quot;http://www.paulgraham.com.nyud.net:8090/gh.html&quot; title=&quot;Paul Graham: Great Hackers&quot;&gt;things Paul Graham has said&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As for paradigm shifts, be sure not to miss &lt;a href=&quot;http://www.crynwr.com/cgi-bin/ezmlm-cgi?mss:9216:200406:jpcgfncgeegifacaebdc&quot; title=&quot;Benjamin Tilly: Re: Tim's paradigm shift&quot;&gt;Ben Tilly on Kuhn on Paradigm Shifts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;#comment-893&quot;&gt;Tony&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Comparing 5 great coders to 1,000,000 “codemonkeys” is silly. Instead, compare the 5 great coders to 1 great coder (as tech lead) with 4 solid mid-level/junior programmers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'd rather have two great programmers than one great teach lead and 4 juniors. But that example doesn't really highlight the point, because in small teams, the randomness factor is, as you say, large.&lt;/p&gt;

&lt;p&gt;OTOH, a team of 30, consisting almost exclusively of mediocre programmers, is worth less than a team of only 5 developers who can &lt;a href=&quot;http://www.joelonsoftware.com/articles/HighNotes.html&quot; title=&quot;Joel Spolsky: Hitting the High Notes&quot;&gt;hit the high notes&lt;/a&gt;. I'd rather spend the resources required up front to find a small number of excellent developers than burn a lot more resources, over the course of the project, on a huge team of monkeys.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;So in the business reality where you have to hire some mid-level and junior-level coders (cause that’s all you can find/afford), what will help you succeed? Business systems and coding frameworks will!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Frameworks help; but they do only to the extent that they match the application's requirements. The more specialised your needs, the more architecture you will be building outside the structure afforded by the framework.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The difference isn’t that the franchise businesses hire the absolute elite people in their field (usually the opposite is true). The different is that there is a system and framework that allows average people to produce above-average work (yet still command only an average salary).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I disagree that this is a good analogy. Franchises are not frameworks in the software sense. Franchises instruct you on how to execute basic tasks of business. A franchise business is a processor that runs a franchise business executable. A franchise plan is equivalent to an application in the software sense, not a framework.&lt;/p&gt;

&lt;p&gt;In software, things written repeatedly by programmers will sooner or later be abstracted away. Following a fixed, repeatable plan for building software really means that you haven't abstracted away enough yet. &lt;a href=&quot;http://www.paulgraham.com/avg.html&quot; title=&quot;Paul Graham: Beating the Averages&quot;&gt;A competitor who does will eat your lunch.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hence RoR: a software framework extracted from an application in order for the team behind it not to have to repeat the same work in the next application. Your claim that what I wrote amounts to &quot;we don't need Rails, we'll just hire smart programmers&quot; misses the mark completely and misstates the purpose of software frameworks. Those smart programmers will build a Rails of their own if they find themselves doing repeated work and a Rails does not yet exist. (And will choose to build upon Rails by themselves if they find themselves doing a lot of work which the use of Rails would preempt.)&lt;/p&gt;

&lt;p&gt;Kragen has an excellent article on this issue in the pipeline. I hope he manages to finish and publish it, one day. &lt;tt&gt;:-)&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;Of course, the analogy to a franchise looks believable on the surface and appeals greatly to business types; no wonder middle management generally operates on the delusions it does.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;#comment-908&quot;&gt;Kragen&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I think that’s overstating the case.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So it is.&lt;/p&gt;

&lt;p&gt;The problem I faced is that I saw no easy way to incorporate those nuances within the frame of the argument I was trying to present. They are why the published revision of the article does not simply state, as earlier versions did, that:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Comparatively, the chosen language is barely more than a neglibility.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;but goes on to qualify:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;assuming it has a good impendance match with the type of application being written.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I agree that even this insufficiently captures the points in question.&lt;/p&gt;

&lt;p&gt;I had been wanting to discuss this in greater detail with you prior to publishing, but I didn't know how to get hold of you and the article had already languished for such a long time that I decided to forge ahead anyway.&lt;/p&gt;

&lt;p&gt;I hope that aspect doesn't detract greatly from the overall argument.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p><a href="#comment-890">Brian</a>:</p>
<blockquote>
<p>This turned out to be untrue. It was a surprise to me. I wanted to convince people in my previous situation what I learned.</p>
</blockquote>
<p>Ah. That does put your article in quite a different light. I wish you had phrased it along the lines of this comment, though, that is, framed the <i>Java = maintainable</i> assertions as convictions rather than fact (even if only subversively <tt>;-)</tt>). I don&#8217;t think I&#8217;d have taken issue at all in that case.</p>
<p><a href="#comment-892">Brian</a>, again:</p>
<blockquote>
<p>The main problems are there’s no easy way to judge them, and you can’t hit deadlines with artists.</p>
</blockquote>
<p>Careful: I don&#8217;t equate artists with great programmers. Great programmers are craftsmen and pragmatists. They may express themselves through their work, but they don&#8217;t do it <em>to</em> express themselves.</p>
<p>That said, it is true that they are hard to identify. The moral is probably that programmers need to be involved in the hiring process if you want to hire good programmers. I am reminded once more of <a href="http://www.paulgraham.com.nyud.net:8090/gh.html" title="Paul Graham: Great Hackers">things Paul Graham has said</a>.</p>
<p>As for paradigm shifts, be sure not to miss <a href="http://www.crynwr.com/cgi-bin/ezmlm-cgi?mss:9216:200406:jpcgfncgeegifacaebdc" title="Benjamin Tilly: Re: Tim's paradigm shift">Ben Tilly on Kuhn on Paradigm Shifts</a>.</p>
<p><a href="#comment-893">Tony</a>:</p>
<blockquote>
<p>Comparing 5 great coders to 1,000,000 “codemonkeys” is silly. Instead, compare the 5 great coders to 1 great coder (as tech lead) with 4 solid mid-level/junior programmers.</p>
</blockquote>
<p>I&#8217;d rather have two great programmers than one great teach lead and 4 juniors. But that example doesn&#8217;t really highlight the point, because in small teams, the randomness factor is, as you say, large.</p>
<p>OTOH, a team of 30, consisting almost exclusively of mediocre programmers, is worth less than a team of only 5 developers who can <a href="http://www.joelonsoftware.com/articles/HighNotes.html" title="Joel Spolsky: Hitting the High Notes">hit the high notes</a>. I&#8217;d rather spend the resources required up front to find a small number of excellent developers than burn a lot more resources, over the course of the project, on a huge team of monkeys.</p>
<blockquote>
<p>So in the business reality where you have to hire some mid-level and junior-level coders (cause that’s all you can find/afford), what will help you succeed? Business systems and coding frameworks will!</p>
</blockquote>
<p>Frameworks help; but they do only to the extent that they match the application&#8217;s requirements. The more specialised your needs, the more architecture you will be building outside the structure afforded by the framework.</p>
<blockquote>
<p>The difference isn’t that the franchise businesses hire the absolute elite people in their field (usually the opposite is true). The different is that there is a system and framework that allows average people to produce above-average work (yet still command only an average salary).</p>
</blockquote>
<p>I disagree that this is a good analogy. Franchises are not frameworks in the software sense. Franchises instruct you on how to execute basic tasks of business. A franchise business is a processor that runs a franchise business executable. A franchise plan is equivalent to an application in the software sense, not a framework.</p>
<p>In software, things written repeatedly by programmers will sooner or later be abstracted away. Following a fixed, repeatable plan for building software really means that you haven&#8217;t abstracted away enough yet. <a href="http://www.paulgraham.com/avg.html" title="Paul Graham: Beating the Averages">A competitor who does will eat your lunch.</a></p>
<p>Hence RoR: a software framework extracted from an application in order for the team behind it not to have to repeat the same work in the next application. Your claim that what I wrote amounts to &#8220;we don&#8217;t need Rails, we&#8217;ll just hire smart programmers&#8221; misses the mark completely and misstates the purpose of software frameworks. Those smart programmers will build a Rails of their own if they find themselves doing repeated work and a Rails does not yet exist. (And will choose to build upon Rails by themselves if they find themselves doing a lot of work which the use of Rails would preempt.)</p>
<p>Kragen has an excellent article on this issue in the pipeline. I hope he manages to finish and publish it, one day. <tt>:-)</tt></p>
<p>Of course, the analogy to a franchise looks believable on the surface and appeals greatly to business types; no wonder middle management generally operates on the delusions it does.</p>
<p><a href="#comment-908">Kragen</a>:</p>
<blockquote>
<p>I think that’s overstating the case.</p>
</blockquote>
<p>So it is.</p>
<p>The problem I faced is that I saw no easy way to incorporate those nuances within the frame of the argument I was trying to present. They are why the published revision of the article does not simply state, as earlier versions did, that:</p>
<blockquote>
<p>Comparatively, the chosen language is barely more than a neglibility.</p>
</blockquote>
<p>but goes on to qualify:</p>
<blockquote>
<p>assuming it has a good impendance match with the type of application being written.</p>
</blockquote>
<p>I agree that even this insufficiently captures the points in question.</p>
<p>I had been wanting to discuss this in greater detail with you prior to publishing, but I didn&#8217;t know how to get hold of you and the article had already languished for such a long time that I decided to forge ahead anyway.</p>
<p>I hope that aspect doesn&#8217;t detract greatly from the overall argument.</p>
]]></content:encoded>
				</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.414 seconds -->
<!-- Cached page served by WP-Cache -->
