<?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>{codesqueeze} &#187; Quality Controls</title>
	<atom:link href="http://www.codesqueeze.com/category/quality-controls/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codesqueeze.com</link>
	<description>Ideas for building efficient developers and software</description>
	<lastBuildDate>Wed, 28 Dec 2011 16:55:01 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The 3 L&#8217;s Towards Loving The Code We Hate</title>
		<link>http://www.codesqueeze.com/the-3-ls-towards-loving-the-code-we-hate/</link>
		<comments>http://www.codesqueeze.com/the-3-ls-towards-loving-the-code-we-hate/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 07:15:23 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Personal Improvement]]></category>
		<category><![CDATA[Quality Controls]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/?p=1005</guid>
		<description><![CDATA[

We all do it.
File, Open.  Scroll down, scroll down, pause.  WTF!^$%@!.  Scroll up, pause.  Scroll down. &#8220;Wow&#8230;&#8230;, dude you have to come look at this&#8230;&#8221;
Yeah, we have all been there, finding code that we love to hate.  It&#8217;s sloppy, hard to read, and looks like a monkey with no fingers [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-3-ls-towards-loving-the-code-we-hate/">The 3 L&#8217;s Towards Loving The Code We Hate</a></p>
]]></description>
			<content:encoded><![CDATA[<p class="inline">
<img src="http://www.codesqueeze.com/wp-content/2009/07/love-hate.jpg" alt="Love Hate" title="Love and Hate" class="right"/>
</p>
<p>We all do it.</p>
<p>File, Open.  Scroll down, scroll down, pause.  WTF!^$%@!.  Scroll up, pause.  Scroll down. &#8220;Wow&#8230;&#8230;, dude you have to come look at this&#8230;&#8221;</p>
<p>Yeah, we have all been there, finding code that we love to hate.  It&#8217;s sloppy, hard to read, and looks like a monkey with no fingers pounded it out.  <strong>Code so ugly only it&#8217;s mother could love.</strong></p>
<p>But really who can blame software developers for hating other developers code? <strong> A large part of software development is artistry and intellectual matter.</strong>  I assume that literary authors have a difficult time truly enjoying other authors&#8217; work because either they believe it is horrible or they deeply respect it but then have a sense of jealousy.</p>
<p>So what can we do to find enlightenment instead of anger in these moments of discovering rotten intellectual stew?</p>
<h3>Laugh</h3>
<p>It is very easy to get angry, but why? The damage is already done, so let&#8217;s do something constructive. </p>
<p><strong> Pretend that you wrote the code 5 years ago.</strong> Hell, maybe you are looking at your own old code &#8211; oh the irony!  Whether a co-worker, past employee, or you wrote the code &#8211; take a moment to chuckle at it.  Chuckle at it&#8217;s complexity, chuckle at it&#8217;s comments, but most important <strong>chuckle at fact that you once were at this point too</strong> and that is why you are now wise enough to recognize a better way of doing things.</p>
<h3>Learn</h3>
<p>One of the largest life lessons I could ever learned was to take every single moment, reflect on it, and attempt to learn something new.</p>
<p>Although there may be a dozen better technical implementations, take the opportunity to speak to the original author and try and understand what they were thinking.  In my career, the <strong>most enlightening moments have been listening to the innocence of interns</strong>.</p>
<p>Learning goes both ways, and be sure to also teach offenders why some code is smelly.  Teach the wisdom, direct the plan, and help (or review) the execution.</p>
<h3>Leave It Better</h3>
<p>I don&#8217;t know who started the &#8220;Campground Rule&#8221; but Uncle Bob used it in his book <a href="http://www.amazon.com/gp/product/0132350882?ie=UTF8&#038;tag=codes-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0132350882">Clean Code</a>:</p>
<blockquote><p>
We should leave the code cleaner than we found it &#8211; Robert Martin
</p></blockquote>
<p>Identifying and laughing at bad code helps you accept it, but only fixing it helps you find new love in it.<br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/dont-unit-test-start-counting-your-oh-shits/" rel="bookmark" title="November 14, 2007">Don&#8217;t Unit Test? Start Counting Your &#8220;Oh Shits!&#8221;</a></li>
<li><a href="http://www.codesqueeze.com/the-art-of-harvesting-abstraction/" rel="bookmark" title="December 17, 2007">The Art of Harvesting Abstraction</a></li>
<li><a href="http://www.codesqueeze.com/concentrated-codesqueeze-february-2008/" rel="bookmark" title="March 3, 2008">Concentrated Codesqueeze: February 2008</a></li>
<li><a href="http://www.codesqueeze.com/the-wisdom-of-insecurity/" rel="bookmark" title="December 3, 2008">The Wisdom Of Insecurity</a></li>
<li><a href="http://www.codesqueeze.com/nobody-has-a-duty-to-teach/" rel="bookmark" title="July 27, 2009">Nobody Has A Duty To Teach</a></li>
</ul>
<p><!-- Similar Posts took 3.708 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-3-ls-towards-loving-the-code-we-hate/">The 3 L&#8217;s Towards Loving The Code We Hate</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-3-ls-towards-loving-the-code-we-hate%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-3-ls-towards-loving-the-code-we-hate%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/the-3-ls-towards-loving-the-code-we-hate/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Metrics and Wealth &#8211; It&#8217;s All Relative</title>
		<link>http://www.codesqueeze.com/metrics-and-weath-its-all-relative/</link>
		<comments>http://www.codesqueeze.com/metrics-and-weath-its-all-relative/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 07:12:02 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Quality Controls]]></category>
		<category><![CDATA[Software Process]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/?p=623</guid>
		<description><![CDATA[

While in the midst of other developers, I often find myself in funny little debates about metric analysis.  Which metric values determine complexity, which determine quality, and most importantly which of these values are &#8220;correct&#8221;.
A common target of these debates is Code Coverage Percentages (case in point &#8211; Is Code Coverage Really All That [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/metrics-and-weath-its-all-relative/">Metrics and Wealth &#8211; It&#8217;s All Relative</a></p>
]]></description>
			<content:encoded><![CDATA[<p class="inline">
<img src="http://www.codesqueeze.com/wp-content/2009/02/turtle.gif" alt="Turtle with Rocket" title="turtle" width="250" height="136" class="right" />
</p>
<p>While in the midst of other developers, I often find myself in funny little debates about metric analysis.  Which metric values determine complexity, which determine quality, and most importantly which of these values are &#8220;correct&#8221;.</p>
<p>A common target of these debates is Code Coverage Percentages (case in point &#8211; <a href="http://www.kevinwilliampang.com/post/Is-Code-Coverage-Really-All-That-Useful.aspx">Is Code Coverage Really All That Useful</a>).  Some argue that 100% code coverage must be maintained, others argue that there is low <a href="http://www.codesqueeze.com/whiteboard-wednesday-the-roi-of-testing/">ROI in maintaining that level of testing</a>. </p>
<p>However in the end, regardless of metric and regardless of it&#8217;s value &#8211; what matters most is that metrics relation to your satisfaction.  In other words, <strong>a metric value is only as valuable as the relational context and environment in which it is applied</strong>.</p>
<p>Alright, I still feel that definition is a little to wordy, so let me explain with an analogy&#8230;</p>
<p>It has been scientifically proven numerous times that <a href="http://www.telegraph.co.uk/scienceandtechnology/science/sciencenews/3315638/Relative-wealth-%27makes-you-happier%27.html">people are happier when they are relatively wealthier</a> than their neighbors, rather than just being wealthy.  In short, a upper middle class family surrounded by middle class families is more content with their monetary status than the poorest man living on Billionare&#8217;s Avenue.  Hard to imagine I know&#8230;</p>
<p>Metric analysis needs to be perceived in the same way.  There is no &#8220;correct&#8221; value of Code Coverage Percent (nor any other metric) because <strong>it is all relative to your team and previous metric goals</strong>.  For example, a team just learning to unit test might find it a great achievement to hit 70% code coverage results, a venerated team might find shame in not achieving 100%, while another team&#8217;s goals might be transfixed on ROI and call 90% &#8220;good enough&#8221;.  All of these metric goals are perfectly correct in their own ways because they are directly proportional to the teams attempting to achieve them.</p>
<p>Just remember the fundamental reason why you started caring about the metrics in the first place, so that you can drive yourself to become healthier, wealthier, and wiser each and every day.  Focus on that and before you know it you will be the richest kid on the block.<br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/squeezed-links-november-2007/" rel="bookmark" title="November 21, 2007">Squeezed Links: November 2007</a></li>
<li><a href="http://www.codesqueeze.com/the-blame-game-how-necessary-is-traceability/" rel="bookmark" title="July 14, 2008">The Blame Game: How Necessary Is Traceability?</a></li>
<li><a href="http://www.codesqueeze.com/concentrated-codesqueeze-january-2008/" rel="bookmark" title="February 1, 2008">Concentrated Codesqueeze: January 2008</a></li>
<li><a href="http://www.codesqueeze.com/does-your-team-have-stds/" rel="bookmark" title="November 26, 2007">Does Your Team Have STDs?</a></li>
<li><a href="http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/" rel="bookmark" title="July 9, 2007">3 Simple Ways To Avoid Making Code Smells</a></li>
</ul>
<p><!-- Similar Posts took 3.702 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/metrics-and-weath-its-all-relative/">Metrics and Wealth &#8211; It&#8217;s All Relative</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fmetrics-and-weath-its-all-relative%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fmetrics-and-weath-its-all-relative%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/metrics-and-weath-its-all-relative/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Flaunt Your Best Code, Show Us Your Broken Crap</title>
		<link>http://www.codesqueeze.com/dont-flaunt-your-best-code-show-us-your-broken-crap/</link>
		<comments>http://www.codesqueeze.com/dont-flaunt-your-best-code-show-us-your-broken-crap/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 07:27:07 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Quality Controls]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/dont-flaunt-your-best-code-show-us-your-broken-crap/</guid>
		<description><![CDATA[

What is the difference between intelligence and wisdom?  
Some would venture to say experience, and I would agree to a point.  I believe it is our failed experiences that continue forcing life&#8217;s lessons down our throats.  An additional injection of humbleness through humility, and we have the perfect dose of much needed [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/dont-flaunt-your-best-code-show-us-your-broken-crap/">Don&#8217;t Flaunt Your Best Code, Show Us Your Broken Crap</a></p>
]]></description>
			<content:encoded><![CDATA[<p class="inline">
<img src='http://www.codesqueeze.com/wp-content/2009/01/chain.gif' alt='Broken Chain' class="right"/>
</p>
<p>What is the difference between intelligence and wisdom?  </p>
<p>Some would venture to say experience, and I would agree to a point.  <strong>I believe it is our <em>failed</em> experiences</strong> that continue forcing life&#8217;s lessons down our throats.  An additional <strong>injection of humbleness through humility</strong>, and we have the perfect dose of much needed medicine to aid us in our journey towards personal improvement.</p>
<p>So what is stopping us from traveling down the path of enlightenment through failure?  Simple.  The <strong>fear of perceived failure</strong>.</p>
<p>Notice I did not just say &#8220;failure&#8221;, &#8220;fear&#8221;, or even &#8220;fear of failure&#8221;.  What I am after is &#8220;<em>perceived failure</em>&#8220;, which can be interrupted into many things including:</p>
<p>Perceived lack of&#8230;</p>
<ul>
<li>Knowledge</li>
<li>Artistry</li>
<li>Intellect</li>
<li>Ability</li>
<li>Skills</li>
</ul>
<p>You need to <a href="http://www.codesqueeze.com/quit-sweeping-known-uncertainity-under-the-rug/">quit sweeping known uncertainty under the rug</a> and <strong>this includes your <em>code</em></strong>.</p>
<p>I grow weary of code reviews where the author (with a nice sized grin) proudly shows their clean solution, and then [being the asshole I am] call to see where they hid all of their crap code that I know is truly holding the house of cards up.  Their grin quickly turns to a defensive posture, and the true code review begins&#8230;</p>
<p>I don&#8217;t care what you best code is &#8211; <strong>I want to see the weakest link!</strong>  You and your solution are only as strong as the weakest link, so let&#8217;s take a look at it and improve it.  <strong>We all have them, so let&#8217;s quit hiding them.</strong>  Sure you might not look like superman now, but at least you won&#8217;t look like a liar later when your bad designs and hacks come back to haunt you (and they will).</p>
<p>Find it hard to open up to a group of people?  <strong>Find those one or two buddies you always show your crap to.</strong>  They don&#8217;t even have to work on the same team or even in the same company as you.  As long as you think they can help you out, confide in them and allow yourself to take criticism. </p>
<p>The road to being better is to simply allow yourself to become better.  <strong>Your pride is your own worst enemy</strong> in this scenario, and overcoming it will start to open many doors that lead to learning opportunities.    </p>
<p>So after all this, why should you never flaunt your best code?  Because self pride leads to a lack of humbleness&#8230;plus it&#8217;s probably not all that great to start with.</p>
<p> <br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/your-software-process-sucks-resistance-to-change/" rel="bookmark" title="June 14, 2007">Your Software Process Sucks : Resistance To Change</a></li>
<li><a href="http://www.codesqueeze.com/metrics-and-weath-its-all-relative/" rel="bookmark" title="February 16, 2009">Metrics and Wealth &#8211; It&#8217;s All Relative</a></li>
<li><a href="http://www.codesqueeze.com/do-managers-prey-on-developer-pride/" rel="bookmark" title="October 10, 2007">Do Managers Prey on Developer Pride?</a></li>
<li><a href="http://www.codesqueeze.com/why-are-you-asking-me-this-question/" rel="bookmark" title="May 26, 2009">Why Are You Asking Me This Question?</a></li>
<li><a href="http://www.codesqueeze.com/geek-speak-when-developers-attack/" rel="bookmark" title="April 7, 2008">Geek Speak: When Developers Attack!</a></li>
</ul>
<p><!-- Similar Posts took 3.941 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/dont-flaunt-your-best-code-show-us-your-broken-crap/">Don&#8217;t Flaunt Your Best Code, Show Us Your Broken Crap</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fdont-flaunt-your-best-code-show-us-your-broken-crap%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fdont-flaunt-your-best-code-show-us-your-broken-crap%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/dont-flaunt-your-best-code-show-us-your-broken-crap/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Diminishing Return on Code Uniformity</title>
		<link>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/</link>
		<comments>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 07:09:14 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Quality Controls]]></category>
		<category><![CDATA[Software Process]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/</guid>
		<description><![CDATA[Last week Steve Rowe had a nice discussion on the question &#8211; Is There Value In Code Uniformity?  Although I left a comment, I thought I would expand upon my thoughts a little more.
I do agree that every team must have (and enforce) some basic standards of code uniformity.  These may include items [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/">The Diminishing Return on Code Uniformity</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Last week <a href="http://blogs.msdn.com/steverowe/default.aspx">Steve Rowe</a> had a nice discussion on the question &#8211; <a href="http://blogs.msdn.com/steverowe/archive/2008/02/19/is-there-value-in-code-uniformity.aspx">Is There Value In Code Uniformity?</a>  Although I left a comment, I thought I would expand upon my thoughts a little more.</p>
<p>I do agree that every team must have (and enforce) some basic standards of code uniformity.  These may include items such as:</p>
<ul>
<li>Use PascalCase over camelCasing or Hungarian notation</li>
<li>Prefer language keywords over hard types (as in &#8211; int not Int32)</li>
<li>No single line <em>if</em> statements or use of ternary operators such as <em>?</em></li>
<li>All references to class member variables will be prefixed with <em>this.</em></li>
</ul>
<p>These types of standards give a <strong>clear outline of the fundamentals of code cleanliness and uniformity</strong> that can aid in a team environment.</p>
<p>However, often I see <strong>team leads attempting to micro-manage</strong> these coding standards.  The majority of these standards have very low impact on overall readability and maintainability.  I have see religious wars break out over stupid standards such as:</p>
<ul>
<li>{ on new line or same line</li>
<li>_ or m_ in front of private variables</li>
<li>The order of class member declarations (private vars, ctors, props, methods [in alphabetical order], etc&#8230;)</li>
</ul>
<p>It is unfortunate that I see teams creating standards not only littered with these types of rules, but fore-running as the core foundation. These types of standards do have worth, but must be enforced with a much lighter touch as <strong>policing these types of infractions just does not yield overall benefit</strong> to the application.</p>
<p>In the large scheme of things these types of code uniformity infractions are small potatoes.  It is the equivalent of creating a standard way of <strong>monotone communication for optimal office efficiency &#8211; <em>yeah ok</em></strong>.</p>
<p>I am not advocating that we should not have coding standards nor that they should not be enforced by frequent code inspections; however, I am of the belief that developers write code with <strong>minor deviations that show the same uniqueness you would see in articulated words or drawn pictures</strong>.  Instead of attempting to find a happy standard, let&#8217;s celebrate our minor differences in writing code and be more adaptive to different flavors.</p>
<p>Sometimes the small things do matter &#8211; but not in this case.</p>
<p><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/best-of-codesqueeze-2008/" rel="bookmark" title="December 22, 2008">Best of Codesqueeze 2008</a></li>
<li><a href="http://www.codesqueeze.com/the-dangers-of-git-r-done/" rel="bookmark" title="June 25, 2007">The Dangers of Git &#8216;R Done</a></li>
<li><a href="http://www.codesqueeze.com/burning-down-the-architect-title/" rel="bookmark" title="August 14, 2007">Burning Down the Architect Title</a></li>
<li><a href="http://www.codesqueeze.com/whiteboard-wednesday-keeping-teams-small/" rel="bookmark" title="April 30, 2008">Whiteboard Wednesday: Keeping Teams Small</a></li>
<li><a href="http://www.codesqueeze.com/metrics-and-weath-its-all-relative/" rel="bookmark" title="February 16, 2009">Metrics and Wealth &#8211; It&#8217;s All Relative</a></li>
</ul>
<p><!-- Similar Posts took 4.293 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/">The Diminishing Return on Code Uniformity</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-diminishing-return-on-code-uniformity%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-diminishing-return-on-code-uniformity%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/the-diminishing-return-on-code-uniformity/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Does Gaining Experience Lower Your Software Quality?</title>
		<link>http://www.codesqueeze.com/does-gaining-experience-lower-your-software-quality/</link>
		<comments>http://www.codesqueeze.com/does-gaining-experience-lower-your-software-quality/#comments</comments>
		<pubDate>Wed, 12 Sep 2007 11:17:14 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Quality Controls]]></category>
		<category><![CDATA[Thought Stuff]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/does-gaining-experience-lower-your-software-quality/</guid>
		<description><![CDATA[Great software developers have inevitably learned from previous failures.  Is the cost of lessons learned always the implicit lowering of project quality?
  As Steven Wright said:

Experience is something you don&#8217;t get until just after you need it.

It is true that you can learn from books, blogs, and colleagues without impacting your current project, [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/does-gaining-experience-lower-your-software-quality/">Does Gaining Experience Lower Your Software Quality?</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Great software developers have inevitably <a href="http://www.codinghorror.com/blog/archives/000300.html">learned from previous failures</a>.  <strong>Is the cost of lessons learned always the implicit lowering of project quality?<br />
</strong>  As Steven Wright said:</p>
<blockquote><p>
Experience is something you don&#8217;t get until just after you need it.
</p></blockquote>
<p>It is true that you can learn from books, blogs, and colleagues without impacting your current project, but <strong>wasn&#8217;t their wisdom derived from failure as well?</strong></p>
<p>With technology moving at the pace that it is, <strong>will software development always be viewed as the bumbling idiot?</strong></p>
<p>Lots of questions, willing to hear lots of opinions&#8230;<br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/the-wisdom-of-insecurity/" rel="bookmark" title="December 3, 2008">The Wisdom Of Insecurity</a></li>
<li><a href="http://www.codesqueeze.com/comfort-vs-confidence-a-thin-line-between-apathy-and-assurance/" rel="bookmark" title="March 24, 2008">Comfort vs. Confidence &#8211; A Thin Line Between Apathy and Assurance</a></li>
<li><a href="http://www.codesqueeze.com/your-new-process-some-assembly-required/" rel="bookmark" title="June 23, 2008">Your New Process (Some Assembly Required)</a></li>
<li><a href="http://www.codesqueeze.com/when-quality-service-affects-quality-software/" rel="bookmark" title="August 27, 2007">When Quality Service Affects Quality Software</a></li>
<li><a href="http://www.codesqueeze.com/dont-flaunt-your-best-code-show-us-your-broken-crap/" rel="bookmark" title="January 26, 2009">Don&#8217;t Flaunt Your Best Code, Show Us Your Broken Crap</a></li>
</ul>
<p><!-- Similar Posts took 4.305 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/does-gaining-experience-lower-your-software-quality/">Does Gaining Experience Lower Your Software Quality?</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fdoes-gaining-experience-lower-your-software-quality%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fdoes-gaining-experience-lower-your-software-quality%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/does-gaining-experience-lower-your-software-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Zen of Unit Testing</title>
		<link>http://www.codesqueeze.com/the-zen-of-unit-testing/</link>
		<comments>http://www.codesqueeze.com/the-zen-of-unit-testing/#comments</comments>
		<pubDate>Thu, 06 Sep 2007 11:42:58 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Quality Controls]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/the-zen-of-unit-testing/</guid>
		<description><![CDATA[

The pupil asked the master programmer:
&#160;&#160;&#160;&#160;“When can I stop writing tests?”

The master answered:
&#160;&#160;&#160;&#160;“When you stop writing code.”

The pupil asked:
&#160;&#160;&#160;&#160;“When do I stop writing code?”
The master answered:
&#160;&#160;&#160;&#160;“When you become a manager.”
The pupil trembled and asked:
&#160;&#160;&#160;&#160;“When do I become a manager?”
The master answered:
&#160;&#160;&#160;&#160;“When you stop writing tests.”
The pupil rushed to write some tests.

If the code deserves to [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-zen-of-unit-testing/">The Zen of Unit Testing</a></p>
]]></description>
			<content:encoded><![CDATA[<p class='inline'>
<img src='http://www.codesqueeze.com/wp-content/2007/09/bamboo.gif' alt='Lucky Bamboo' class='right'/>
</p>
<p>The pupil asked the master programmer:</p>
<p>&#160;&#160;&#160;&#160;<em>“When can I stop writing tests?”<br />
</em><br />
The master answered:</p>
<p>&#160;&#160;&#160;&#160;<em>“When you stop writing code.”<br />
</em><br />
The pupil asked:</p>
<p>&#160;&#160;&#160;&#160;<em>“When do I stop writing code?”</em></p>
<p>The master answered:</p>
<p>&#160;&#160;&#160;&#160;<em>“When you become a manager.”</em></p>
<p>The pupil trembled and asked:</p>
<p>&#160;&#160;&#160;&#160;<em>“When do I become a manager?”</em></p>
<p>The master answered:</p>
<p>&#160;&#160;&#160;&#160;<em>“When you stop writing tests.”</em></p>
<p>The pupil rushed to write some tests.<br />
<strong><br />
If the code deserves to be written, it deserves to have tests.</strong><br />
<em><br />
More great zen testing lessons can be found in <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=203994">The Way of Testivus</a> by <a href="http://www.artima.com/weblogs/index.jsp?blogger=agitator">Alberto Savoia<br />
</a><br />
</em><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/ye-pirates-of-unit-testing/" rel="bookmark" title="September 19, 2007">Ye Pirates of Unit Testing</a></li>
<li><a href="http://www.codesqueeze.com/squeezed-links-august-2007/" rel="bookmark" title="August 22, 2007">Squeezed Links: August 2007</a></li>
<li><a href="http://www.codesqueeze.com/extra-squeezed-links-july-2007/" rel="bookmark" title="July 26, 2007">Extra Squeezed Links: July 2007</a></li>
<li><a href="http://www.codesqueeze.com/bizzaro-development/" rel="bookmark" title="September 17, 2007">Bizzaro Development</a></li>
<li><a href="http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/" rel="bookmark" title="July 9, 2007">3 Simple Ways To Avoid Making Code Smells</a></li>
</ul>
<p><!-- Similar Posts took 4.125 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-zen-of-unit-testing/">The Zen of Unit Testing</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-zen-of-unit-testing%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-zen-of-unit-testing%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/the-zen-of-unit-testing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Lobsters Attack the Gut Instinct Equation</title>
		<link>http://www.codesqueeze.com/lobsters-attack-the-gut-instinct-equation/</link>
		<comments>http://www.codesqueeze.com/lobsters-attack-the-gut-instinct-equation/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 09:04:23 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Quality Controls]]></category>
		<category><![CDATA[Thought Stuff]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/lobsters-attack-the-gut-instinct-equation/</guid>
		<description><![CDATA[A recent analogy comparing software maintainability with a lobster triggered a moment of inspiration about the Gut Instinct Equation. 
From the Gut Instinct Equation we know that progress is not linear.  What I am now pondering is if this is because of the cost of maintenance.  Even on greenfield projects this cost starts [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/lobsters-attack-the-gut-instinct-equation/">Lobsters Attack the Gut Instinct Equation</a></p>
]]></description>
			<content:encoded><![CDATA[<p class='inline'><img src='http://www.codesqueeze.com/wp-content/2007/08/lobster.gif' alt='Lobster' class='right'/></p>
<p>A recent <a href="http://evanhoff.com/archive/2007/08/15/46.aspx">analogy comparing software maintainability with a lobster</a> triggered a moment of inspiration about the <a href="http://www.codesqueeze.com/the-gut-instinct-equation/">Gut Instinct Equation</a>. </p>
<p>From the <a href="http://www.codesqueeze.com/the-gut-instinct-equation/">Gut Instinct Equation</a> we know that <strong>progress is not linear</strong>.  What I am now pondering is <strong>if this is because of the cost of maintenance</strong>.  Even on greenfield projects this cost starts coming into play once you write one line of code.  For each added feature, <strong>you must maintain the integrity of every feature you wrote before it</strong>.  </p>
<blockquote><p>
Could it be that the developer on the project never realizes that the system is unmaintainable, <strong>much like a lobster in a slowly heating pot</strong>.  The lobster has no idea what&#8217;s coming. </p>
<p>Slowly over time, much like the lobster, the team slowly finds itself grinding its wheels.  Productivity has not decreased, in fact, they are probably starting to work overtime even.  Costs are starting to very slowly spiral in terms of labor per feature.  Bugs might be incrementally getting worse.  The team, however, hasn&#8217;t noticed any drastic change in the project or the way they work. &#8211; <a href="http://evanhoff.com/Default.aspx">Evan Hoff</a>
</p></blockquote>
<p>After reading the above analogy, I became very aware that perception is not always reality.  Perceived progress stays linear because ensuring previously built features don&#8217;t break is a subconscious and automatic response.  However, the cost of doing <strong>feature maintenance increases with refactoring, more testing, or just the time to slow down and think</strong>. </p>
<p>If this is the case, <strong>TDD and unit testing becomes very important</strong>.  Having <a href="http://blogs.msdn.com/steverowe/archive/2007/08/01/the-comfort-of-unit-tests.aspx">the comfort of unit tests</a> allows developers to do fearless refactoring, quicker testing, and reduces the drag time pondering if something will break.</p>
<p>Remember young grasshopper&#8230;you may not be a grasshopper at all&#8230;but a lobster in a pot!</p>
<p><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/the-gut-instinct-equation/" rel="bookmark" title="August 20, 2007">The Gut Instinct Equation</a></li>
<li><a href="http://www.codesqueeze.com/dont-unit-test-start-counting-your-oh-shits/" rel="bookmark" title="November 14, 2007">Don&#8217;t Unit Test? Start Counting Your &#8220;Oh Shits!&#8221;</a></li>
<li><a href="http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/" rel="bookmark" title="July 9, 2007">3 Simple Ways To Avoid Making Code Smells</a></li>
<li><a href="http://www.codesqueeze.com/refactorbation/" rel="bookmark" title="June 28, 2007">Refactorbation</a></li>
<li><a href="http://www.codesqueeze.com/adding-people-to-a-late-project-makes-it-later/" rel="bookmark" title="September 10, 2008">Adding People To A Late Project Makes It Later</a></li>
</ul>
<p><!-- Similar Posts took 4.283 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/lobsters-attack-the-gut-instinct-equation/">Lobsters Attack the Gut Instinct Equation</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Flobsters-attack-the-gut-instinct-equation%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Flobsters-attack-the-gut-instinct-equation%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/lobsters-attack-the-gut-instinct-equation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When Quality Service Affects Quality Software</title>
		<link>http://www.codesqueeze.com/when-quality-service-affects-quality-software/</link>
		<comments>http://www.codesqueeze.com/when-quality-service-affects-quality-software/#comments</comments>
		<pubDate>Mon, 27 Aug 2007 09:48:35 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Quality Controls]]></category>
		<category><![CDATA[Thought Stuff]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/when-quality-service-affects-quality-software/</guid>
		<description><![CDATA[Imagine this, you are in a meeting with a client and they request something absurd.  You respond that it is a bad idea from a technology view.  Your business analyst (program manager, whatever) shoots you a look while calming the client and saying &#8220;of course we can do that feature&#8220;.
Sound familiar?  If [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/when-quality-service-affects-quality-software/">When Quality Service Affects Quality Software</a></p>
]]></description>
			<content:encoded><![CDATA[<p class="inline"><img src='http://www.codesqueeze.com/wp-content/2007/08/waiter.gif' alt='Waiter' class='right'/></p>
<p>Imagine this, you are in a meeting with a client and they request something absurd.  You respond that it is a bad idea from a technology view.  Your business analyst (program manager, whatever) shoots you a look while calming the client and saying &#8220;<em>of course we can do that feature</em>&#8220;.</p>
<p>Sound familiar?  If it doesn&#8217;t you haven&#8217;t been in the business long. While the last few years in the software consulting business have been great, I have had <strong>problems adapting to some of the consultant mentality</strong>.</p>
<p>The saying &#8220;<em>provide a great customer experience</em>&#8221; floats around often.  I can completely agree with this; however it appears that <strong>engineers and businessmen view quality service from different perspectives</strong>.</p>
<p>Engineers would like to believe that a great customer experience is derived from two things: <strong>the delivered software</strong> and their <strong>professional opinions and expertise</strong> that created the software.  </p>
<p>Businessmen view <strong>great customer experience as being as accommodating as possible</strong>.  Making customers feel important and in control.  This part of business should be accredited as well, it is an important part that keeps customers returning.</p>
<p>But here is the problem with these polar views&#8230;</p>
<p>Engineers may not care if the client experience is blunt, harsh, or hard-to-swallow; as long as the delivered software perfectly fits the customer&#8217;s need and is something the engineer is proud of.  </p>
<p>On the other hand, the businessman is more interested in ensuring that the client walks away with a feeling of satisfaction over quality software, which might lead to feature creep and unrealistic promises. The perspective is that a happy customer with a piece of crap is better than a customer with great software but an unpleasant experience. </p>
<p>Maintaining customer relationships is like running a restaurant &#8211; <strong>you need to provide both quality service and product</strong>.  If your favorite Italian restaurant is out of the lasagna, they will politely say they are out of the lasagna and give you other options &#8211; realistic and polite.  They do not bluntly declare &#8220;<em>Impossible!</em>&#8220;, nor do they say &#8220;<em>Sure! We will look into that&#8230;</em>&#8220;.  </p>
<p>When asked for a feature enhancement, most clients are asking if it can be done.  If it can &#8211; accommodate.  If it can&#8217;t &#8211; politely explain why not and provide some new options.<br />
<br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/customer-polarizing-why-microsoft-will-always-be-a-mediocre-giant/" rel="bookmark" title="July 7, 2008">Customer Polarizing &#8211; Why Microsoft Will Always Be A Mediocre Giant</a></li>
<li><a href="http://www.codesqueeze.com/quit-putting-your-solution-in-my-feature-request/" rel="bookmark" title="November 24, 2008">Quit Putting Your Solution In My Feature Request!</a></li>
<li><a href="http://www.codesqueeze.com/does-gaining-experience-lower-your-software-quality/" rel="bookmark" title="September 12, 2007">Does Gaining Experience Lower Your Software Quality?</a></li>
<li><a href="http://www.codesqueeze.com/rearranging-furniture-for-an-unfocused-client/" rel="bookmark" title="September 10, 2007">Rearranging Furniture for an Unfocused Client</a></li>
<li><a href="http://www.codesqueeze.com/the-dangers-of-git-r-done/" rel="bookmark" title="June 25, 2007">The Dangers of Git &#8216;R Done</a></li>
</ul>
<p><!-- Similar Posts took 4.348 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/when-quality-service-affects-quality-software/">When Quality Service Affects Quality Software</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fwhen-quality-service-affects-quality-software%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fwhen-quality-service-affects-quality-software%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/when-quality-service-affects-quality-software/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3 Simple Ways To Avoid Making Code Smells</title>
		<link>http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/</link>
		<comments>http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 06:41:02 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Quality Controls]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/</guid>
		<description><![CDATA[I was pondering about how quick hacks can contribute to code destabilization and the previous post The Dangers of Git R&#8217; Done.  How many hacks or code smells should be allowed per project? The obvious theoretical answer is none, but the realistic answer is too many. Here are 3 easy ways to reduce the [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/">3 Simple Ways To Avoid Making Code Smells</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I was pondering about how quick hacks can contribute to code destabilization and the previous post <a href="http://www.codesqueeze.com/the-dangers-of-git-r-done/">The Dangers of Git R&#8217; Done</a>.  <strong>How many hacks or code smells should be allowed per project?</strong> The obvious theoretical answer is none, but the realistic answer is too many. Here are 3 easy ways to reduce the number of hacks and code smells in your projects.</p>
<p><strong>1. Eliminate gold plating</strong></p>
<p>I looked over the artifacts for my last couple projects in order to find some insight.  Habitually, I allowed <strong>1-2 moderate to high smell hacks per project</strong>.  Further investigation found these hacks were implemented during the last iterations of each respective project.</p>
<p>Late game hacks are not an uncommon thing; however I did find the correlation between end game <a href="http://www.codinghorror.com/blog/archives/000150.html">gold plating</a> and these hacks interesting.  Over the past couple of years, <strong>every hack was associated with a gold plated requirement</strong> (both developer and client initiated).</p>
<p>The mere speak of the acronyms <a href="http://en.wikipedia.org/wiki/You_Ain't_Gonna_Need_It">YAGNI </a> and <a href="http://en.wikipedia.org/wiki/KISS_principle">KISS</a> should send gold plating packing.  Awareness of budget and quality impacts is also great motivation for not allowing gold plating and feature creep.  </p>
<p><strong>2. Negotiate for time to refactor</strong></p>
<p>Lots to do, with very little time.  How you handle this situation will determine if you will be adding new features or new code smells. </p>
<p>Repeat after me: </p>
<blockquote><p>&#8220;After the core requirements are complete, I do not have to cram all of the enhancements only using the remaining budget.&#8221;</p></blockquote>
<p>Negotiate with the client or management to prioritize the remaining requirements.  This will give you the time you need to <strong>complete as many as you can <em>correctly</em></strong>.  </p>
<p><strong>3. Go heavy on unit testing and documentation</strong></p>
<p>Push comes to shove and it is time to throw in a hack.  <strong>Unit test it harder</strong> than normal, and never assume people will be able to follow the hack through code so <strong>document it more</strong> than normal.  Personally, I explicitly use the notation <em>//HACK</em> just as much as I use <em>//TODO</em>.<br />
<br />
In short, code smells and hacks are just like mother-in-laws. The best way to handle them is to just avoid them all together.  If that is not possible, negotiation, documentation, and testing will make a ton of difference.  Happy Coding. <br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/the-dangers-of-git-r-done/" rel="bookmark" title="June 25, 2007">The Dangers of Git &#8216;R Done</a></li>
<li><a href="http://www.codesqueeze.com/the-broken-iron-triangle-is-broken/" rel="bookmark" title="September 24, 2007">The Broken Iron Triangle Is Broken</a></li>
<li><a href="http://www.codesqueeze.com/concentrated-codesqueeze-july-2007/" rel="bookmark" title="July 31, 2007">Concentrated Codesqueeze: July 2007</a></li>
<li><a href="http://www.codesqueeze.com/the-gut-instinct-equation/" rel="bookmark" title="August 20, 2007">The Gut Instinct Equation</a></li>
<li><a href="http://www.codesqueeze.com/how-many-bedrooms-did-you-say/" rel="bookmark" title="May 4, 2009">How Many Bedrooms Did You Say?</a></li>
</ul>
<p><!-- Similar Posts took 4.322 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/">3 Simple Ways To Avoid Making Code Smells</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2F3-simple-ways-to-avoid-making-code-smells%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2F3-simple-ways-to-avoid-making-code-smells%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Dangers of Git &#8216;R Done</title>
		<link>http://www.codesqueeze.com/the-dangers-of-git-r-done/</link>
		<comments>http://www.codesqueeze.com/the-dangers-of-git-r-done/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 18:19:45 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Human Factors]]></category>
		<category><![CDATA[Quality Controls]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/the-dangers-of-git-r-done/</guid>
		<description><![CDATA[Jay Kimble recently wrote a post titled Git &#8216;R Done coding.  I will agree that there is a needs to be a trade off between expediency and maintainability, but it saddens me to see that a lot of people are blindly supporting this mentality without researching the dangers.  
Morts and younger programmers may [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-dangers-of-git-r-done/">The Dangers of Git &#8216;R Done</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Jay Kimble recently wrote a post titled <a href="http://codebetter.com/blogs/jay.kimble/archive/2007/06/22/quot-git-r-done-quot-coding.aspx">Git &#8216;R Done coding</a>.  I will agree that there is a needs to be a <a href="http://blog.magenic.com/blogs/aarone/archive/2007/06/20/On-Technical-Debt-_2D00_-Revisiting-the-Technical-Mortgage.aspx">trade off between expediency and maintainability</a>, but it saddens me to see that a lot of <strong>people are blindly supporting</strong> this mentality without researching the dangers.  </p>
<p><a href="http://www.nikhilk.net/Personas.aspx">Morts</a> and younger programmers may not have the experience to walk the fine line between responsible software architecture and &#8216;quick hacks&#8217;.  As a result, this is a <strong>very dangerous message</strong> to those developers with not enough maturity to make these decisions (but are forced out of necessity).  </p>
<p>A number of driving factors exist why developers practice unhealthy expedient programming techniques:</p>
<ul>
<li>Trying to match fictitious budgets or timelines</li>
<li>Attempting to pull higher profit margins off of fixed budget projects</li>
<li>Fighting potential embarrassment of not finishing on-time</li>
<li>Egotists attempting to over-deliver </li>
</ul>
<p>Walking this line is tough for even veteran developers. I would argue that this is because it is an art form in mostly client communication and compromising.  But I digress&#8230;let&#8217;s stay with the situation where a developer has to make a client assumption on expediency vs. maintainability.  What are the top 3 questions you would ask yourself?</p>
<h4>1. Does the client appreciate Expedience over Stability?</h4>
<p>For example, assume we are talking about auto mechanics.  Would you rather have your car fixed faster but run the risk of breaking down, or have your car fixed correctly but be in the shop longer?  A small survey at <a href="http://sundog.net">where I work</a> reveled that clients would rather have 3 working features than 5 semi-working features.  This seems common sense, but many developers forced to make assumptions will choose to create more features than fix the ones they have already coded.</p>
<h4>2. Will the solution significantly destabilize if I make a hack?</h4>
<p>Can your application handle another hack?  Has it been a fortress until now, or has it slowly turned into a card house?  This is the judgment call of the developers.  Unfortunately, it is often incorrectly left to the client to decide.  This is where the developer needs to be honest and propose compromises.  </p>
<p>For example, a client requests a feature that will not easily fit into your current architecture. If a hack will not destabilize anything, a hack might not hurt. If you have to refactor code just to fit the hack in, you might be in trouble.  In either situation the solution is simple, lay the cards on the table and <strong>when in doubt ask the client Question 1.</strong>.</p>
<h4>3. Is the client willing to compromise on this feature? </h4>
<p>Most clients are not married to the features that they request, instead they are passionate about the domain problems that the features solve.  Proposing new features that accomplish the same task can satisfy both client and programmer.  </p>
<p>Other compromises can be made:</p>
<ul>
<li>Reduced Price</li>
<li>Delivery of feature in next version</li>
<li>Trade some features for others</li>
</ul>
<p>
Still not sure of what to do? When in doubt,  <strong>error on the side of quality</strong> and <a href="http://codebetter.com/blogs/scott.bellware/archive/2007/06/19/164379.aspx">aim for perfection</a>. Anything short of asking the above 3 questions and you are making dangerous assumptions.</p>
<p><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/squeezed-links-october-2007/" rel="bookmark" title="October 24, 2007">Squeezed Links: October 2007</a></li>
<li><a href="http://www.codesqueeze.com/3-simple-ways-to-avoid-making-code-smells/" rel="bookmark" title="July 9, 2007">3 Simple Ways To Avoid Making Code Smells</a></li>
<li><a href="http://www.codesqueeze.com/how-to-sell-agile-to-fixed-bid-contract-clients/" rel="bookmark" title="November 5, 2007">How To Sell Agile To Fixed Bid Contract Clients</a></li>
<li><a href="http://www.codesqueeze.com/lobsters-attack-the-gut-instinct-equation/" rel="bookmark" title="August 29, 2007">Lobsters Attack the Gut Instinct Equation</a></li>
<li><a href="http://www.codesqueeze.com/the-gut-instinct-equation/" rel="bookmark" title="August 20, 2007">The Gut Instinct Equation</a></li>
</ul>
<p><!-- Similar Posts took 4.873 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-dangers-of-git-r-done/">The Dangers of Git &#8216;R Done</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-dangers-of-git-r-done%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-dangers-of-git-r-done%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/the-dangers-of-git-r-done/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

