<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: An experienced programmer doesn&#8217;t use SOLID as a checklist &#8211; he internalises it.</title>
	<atom:link href="http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/</link>
	<description>Dhananjay Nene's opinions on software programming, design, architecture and the internet</description>
	<lastBuildDate>Sun, 28 Feb 2010 03:58:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Mitch</title>
		<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/comment-page-1/#comment-4082</link>
		<dc:creator>Mitch</dc:creator>
		<pubDate>Fri, 13 Feb 2009 00:24:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=450#comment-4082</guid>
		<description>SOLID?  Pffftt.  I invented BFD - Brute Force Development:

http://softwareindustrialization.com/BruteForceDevelopmentBFD.aspx</description>
		<content:encoded><![CDATA[<p>SOLID?  Pffftt.  I invented BFD &#8211; Brute Force Development:</p>
<p><a href="http://softwareindustrialization.com/BruteForceDevelopmentBFD.aspx" rel="nofollow">http://softwareindustrialization.com/BruteForceDevelopmentBFD.aspx</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/comment-page-1/#comment-4080</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Thu, 12 Feb 2009 19:01:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=450#comment-4080</guid>
		<description>I&#039;m not familiar with SOLID, and I&#039;m frankly skeptical of all OO consultant-speak, but I&#039;d be very wary of adopting a stance of &quot;I&#039;m too smart and experienced to use a checklist&quot;.  This reminds me way too much of this study, showing how rigorous use of a &quot;trivial&quot; checklist by surgeons cuts surgery mortality by half:

http://www.time.com/time/health/article/0,8599,1871759,00.html</description>
		<content:encoded><![CDATA[<p>I&#8217;m not familiar with SOLID, and I&#8217;m frankly skeptical of all OO consultant-speak, but I&#8217;d be very wary of adopting a stance of &#8220;I&#8217;m too smart and experienced to use a checklist&#8221;.  This reminds me way too much of this study, showing how rigorous use of a &#8220;trivial&#8221; checklist by surgeons cuts surgery mortality by half:</p>
<p><a href="http://www.time.com/time/health/article/0,8599,1871759,00.html" rel="nofollow">http://www.time.com/time/health/article/0,8599,1871759,00.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arne Claassen</title>
		<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/comment-page-1/#comment-4079</link>
		<dc:creator>Arne Claassen</dc:creator>
		<pubDate>Thu, 12 Feb 2009 17:08:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=450#comment-4079</guid>
		<description>@Dhananjay Very well put. I kind of stumbled into a certain way of programming through painful lessons of difficult maintainability and hard to test code. It wasn&#039;t until about 6 months ago that I even heard of SOLID, but as i went through it, it was almost a checklist of all the little things i&#039;ve learned to make my life of writing and maintaining code easier. It&#039;s not a ruleset, it&#039;s just some really useful advice that if applied judiciously makes your life a lot simpler, imho.</description>
		<content:encoded><![CDATA[<p>@Dhananjay Very well put. I kind of stumbled into a certain way of programming through painful lessons of difficult maintainability and hard to test code. It wasn&#8217;t until about 6 months ago that I even heard of SOLID, but as i went through it, it was almost a checklist of all the little things i&#8217;ve learned to make my life of writing and maintaining code easier. It&#8217;s not a ruleset, it&#8217;s just some really useful advice that if applied judiciously makes your life a lot simpler, imho.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Imagist</title>
		<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/comment-page-1/#comment-4077</link>
		<dc:creator>Imagist</dc:creator>
		<pubDate>Thu, 12 Feb 2009 16:50:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=450#comment-4077</guid>
		<description>@Dhananjay I agree that pair programming provides a suitable and probably less painful alternative to checklisting, but in my opinion it&#039;s even better to have both.  Even very experienced programmers are humans, and make mistakes.

Some other things to consider:

How does a programmer know if he/she is senior enough to elide checklisting?  If you aren&#039;t experienced enough to not checklist, there&#039;s a reasonable chance that you&#039;re also not experienced enough to know you need to checklist.

How do you form a team policy on this?  Most programmers need checklisting, but many won&#039;t do it unless they are told to, and there&#039;s no good metric to determine who should be exempt.

How do you measure individual compliance with SOLID principles?  One bad apple can spoil the bunch, and checklisting helps to expose these bad apples.</description>
		<content:encoded><![CDATA[<p>@Dhananjay I agree that pair programming provides a suitable and probably less painful alternative to checklisting, but in my opinion it&#8217;s even better to have both.  Even very experienced programmers are humans, and make mistakes.</p>
<p>Some other things to consider:</p>
<p>How does a programmer know if he/she is senior enough to elide checklisting?  If you aren&#8217;t experienced enough to not checklist, there&#8217;s a reasonable chance that you&#8217;re also not experienced enough to know you need to checklist.</p>
<p>How do you form a team policy on this?  Most programmers need checklisting, but many won&#8217;t do it unless they are told to, and there&#8217;s no good metric to determine who should be exempt.</p>
<p>How do you measure individual compliance with SOLID principles?  One bad apple can spoil the bunch, and checklisting helps to expose these bad apples.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/comment-page-1/#comment-4076</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Thu, 12 Feb 2009 16:02:23 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=450#comment-4076</guid>
		<description>@Imagist I am not too sure if using a checklist to evaluate ones own designs especially if one has reached a high experience level will be particularly useful. Checklists help when doing peer reviews, and alternate methods such as pair programming often bring in an ability to achieve similar intents without the same rigour. Having said that, I think the amount of rigour is a function of context of the software, and I am sure there are many contexts where explicit checklist review might be quite helpful.</description>
		<content:encoded><![CDATA[<p>@Imagist I am not too sure if using a checklist to evaluate ones own designs especially if one has reached a high experience level will be particularly useful. Checklists help when doing peer reviews, and alternate methods such as pair programming often bring in an ability to achieve similar intents without the same rigour. Having said that, I think the amount of rigour is a function of context of the software, and I am sure there are many contexts where explicit checklist review might be quite helpful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/comment-page-1/#comment-4075</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Thu, 12 Feb 2009 15:58:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=450#comment-4075</guid>
		<description>@Fogus you raise an interesting point - the customer feedback is often measured at the end of the first release, the maintenance cycle continues for a long long time thereafter.</description>
		<content:encoded><![CDATA[<p>@Fogus you raise an interesting point &#8211; the customer feedback is often measured at the end of the first release, the maintenance cycle continues for a long long time thereafter.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Imagist</title>
		<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/comment-page-1/#comment-4074</link>
		<dc:creator>Imagist</dc:creator>
		<pubDate>Thu, 12 Feb 2009 15:50:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=450#comment-4074</guid>
		<description>While SOLID principles should be internalized, they should also be checked off.  People make mistakes, and checklists help people self-evaluate and catch mistakes before they become problems.

Of course, there&#039;s always a tradeoff.  Checking against a checklist takes time.  In the case of a painter, the time isn&#039;t worth it; time spent finding and correcting the 1 in 100 paint-misuse mistake that turns a $500 painting into a $50 painting would be better spent producing another $500 painting.  A mistake in one painting won&#039;t damage your other paintings.

However, in the case of software development, catching mistakes IS worth it, even if you only make 1 mistake in 100.  That could be the mistake that crashes millions of Zunes, hits your own bunker with a SCUD, takes down a space shuttle, or makes your Mars rover run in circles.  Even if your code doesn&#039;t cause such catastrophic failures as these, the cost of maintenance will certainly rise, which over a long or large project can be just as costly.</description>
		<content:encoded><![CDATA[<p>While SOLID principles should be internalized, they should also be checked off.  People make mistakes, and checklists help people self-evaluate and catch mistakes before they become problems.</p>
<p>Of course, there&#8217;s always a tradeoff.  Checking against a checklist takes time.  In the case of a painter, the time isn&#8217;t worth it; time spent finding and correcting the 1 in 100 paint-misuse mistake that turns a $500 painting into a $50 painting would be better spent producing another $500 painting.  A mistake in one painting won&#8217;t damage your other paintings.</p>
<p>However, in the case of software development, catching mistakes IS worth it, even if you only make 1 mistake in 100.  That could be the mistake that crashes millions of Zunes, hits your own bunker with a SCUD, takes down a space shuttle, or makes your Mars rover run in circles.  Even if your code doesn&#8217;t cause such catastrophic failures as these, the cost of maintenance will certainly rise, which over a long or large project can be just as costly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fogus</title>
		<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/comment-page-1/#comment-4072</link>
		<dc:creator>Fogus</dc:creator>
		<pubDate>Thu, 12 Feb 2009 14:29:10 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=450#comment-4072</guid>
		<description>A common theme that I see in the comment section of that post is as follows: 

&quot;I created tons of software w/o SOLID and the  customer was happy, so that&#039;s all that matters in the real world.&quot;

The statement above would be laughable if it wasn&#039;t so darn true.  That is, software development is an interesting field in that there is a very large spectrum of competence.  It&#039;s almost like a pyramidal structure where for every all-star developer at the top there are two below them in skill, and two below them, etc...  Sadly, at any stage software can be developed that &quot;gets the job done and makes the customer happy&quot;.  The problem really comes in for the developers downstream who are tasked with maintenance; you know, the majority.  I think Mr. Atwood is completely dismissive of these developers by preaching such a laissez-faire approach.  But honestly, there is often very little that is sexy about the maintenance cycle, and he certainly wouldn&#039;t have such a following if he chose it as the focus of his blog.
-m</description>
		<content:encoded><![CDATA[<p>A common theme that I see in the comment section of that post is as follows: </p>
<p>&#8220;I created tons of software w/o SOLID and the  customer was happy, so that&#8217;s all that matters in the real world.&#8221;</p>
<p>The statement above would be laughable if it wasn&#8217;t so darn true.  That is, software development is an interesting field in that there is a very large spectrum of competence.  It&#8217;s almost like a pyramidal structure where for every all-star developer at the top there are two below them in skill, and two below them, etc&#8230;  Sadly, at any stage software can be developed that &#8220;gets the job done and makes the customer happy&#8221;.  The problem really comes in for the developers downstream who are tasked with maintenance; you know, the majority.  I think Mr. Atwood is completely dismissive of these developers by preaching such a laissez-faire approach.  But honestly, there is often very little that is sexy about the maintenance cycle, and he certainly wouldn&#8217;t have such a following if he chose it as the focus of his blog.<br />
-m</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ferengi Programmer and the Dreyfus Model at Mark Needham</title>
		<link>http://blog.dhananjaynene.com/2009/02/an-experienced-programmer-doesnt-use-solid-as-a-checklist-he-internalises-it/comment-page-1/#comment-4071</link>
		<dc:creator>Ferengi Programmer and the Dreyfus Model at Mark Needham</dc:creator>
		<pubDate>Thu, 12 Feb 2009 14:03:39 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=450#comment-4071</guid>
		<description>[...] these levels at which any person may be at for a given set of skills, as Dhananjay Nene points out someone who is an expert in this area is not going to be referring to a checklist of design [...]</description>
		<content:encoded><![CDATA[<p>[...] these levels at which any person may be at for a given set of skills, as Dhananjay Nene points out someone who is an expert in this area is not going to be referring to a checklist of design [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.806 seconds -->
