<?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>cwash into software &#187; software development</title>
	<atom:link href="http://cwash.org/tag/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://cwash.org</link>
	<description>+= construction + craftsmanship;</description>
	<lastBuildDate>Thu, 29 Sep 2011 04:23:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.2</generator>
		<item>
		<title>OSGi-ggity-Giggity</title>
		<link>http://cwash.org/2009/04/15/osgi-ggity-giggity/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=osgi-ggity-giggity</link>
		<comments>http://cwash.org/2009/04/15/osgi-ggity-giggity/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 21:40:01 +0000</pubDate>
		<dc:creator>Chris Wash</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[CapTech]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[modularity]]></category>
		<category><![CDATA[osgi]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://cwash.org/?p=205</guid>
		<description><![CDATA[Thoughts on the OSGi service platform for modularity.]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2009/04/15/osgi-ggity-giggity/";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><p><strong>Update:</strong> A great article on OSGi popped up on Javalobby today.  <a href="http://java.dzone.com/articles/dozen-osgi-myths-and">Check it out</a>.</p>
<p>I haven&#8217;t yet written any thoughts about OSGi but it&#8217;s something that&#8217;s increasingly found its way on to my radar over the past year and a half or so.  I&#8217;ve been doing a little bit of reading and research on it lately, (a quick introduction can be found via <a href="http://www.infoq.com/interviews/osgi-adrian-colyer">Adrian Colyer&#8217;s talks on InfoQ</a> about it).  Needless to say it&#8217;s got me excited.  Really excited &#8211; to the point where I&#8217;m catching myself geeking out uncontrollably like Quagmire from Family Guy.  What&#8217;s got me all giggity? <span id="more-205"></span> Let&#8217;s take a step back first.</p>
<p>With Java there has always been a focus on modularity, but it&#8217;s come up in different intermediate forms.  Any typical Java developer can go on for hours about the importance for layering and properly isolating, decoupling and packaging components and subsystems.  Java has the idea of a package, and the idea of JARs came about fairly early on in the process.  But what became difficult was that often each layer had to have its own supporting infrastructure in place to be built independently, and someone needed to know how all of those JAR dependencies mapped out at build time and runtime.  This was a necessary evil so that we could have individually deployable modules or subsystems.  Once you got there, it was all worth it.</p>
<p>The problem was that while you may have been diligent and rigorous in your approach to applying how your projects were laid out and built, quite often the framework space solved this problem over and over again in many different ways.  Going to upgrade a library was not an easy task, because you had to typically upgrade it across each of your layers, and what&#8217;s more, there was no consistent approach to manage transitive dependencies amongst the modules each library used.  Library selection and dependency management was the work of a greybeard within your project and it took a while to change a library or upgrade.  Not to mention a near certainty that you&#8217;d need to execute your entire suite of regression tests to make sure nothing broke.</p>
<p>After seeing many Java frameworks being cajoled into a Maven build in order to manage builds and transitive dependencies, there has been increased awareness on the part of the vendor (be it commercial or open source) space on modularity.  But we&#8217;ve only focused on the problem of solving modularity from a build-centric view.  In other words, &#8220;How can I package and manage these build artifacts in such a way that consumers can easily integrate them into their project in a consistent and automated way?&#8221;  This was the pie-in-the-sky idea behind Maven as I see it, and they pretty much made it happen.  You&#8217;d be hard pressed to find a framework today that doesn&#8217;t support it in some fashion.</p>
<p>But there&#8217;s a whole separate piece of modularity that takes place at <em>runtime</em>.  In the context of my historical explanation of modularity within Java, you can look at OSGi&#8217;s ability to manage dependencies dynamically at runtime (via a header in your JAR MANIFEST file) as a &#8220;modularity win&#8221; and icing on the cake.  But OSGi indeed goes farther than that.  OSGi gives you the ability to install/uninstall, start and stop bundles dynamically (think Eclipse plugins) via its lifecycle, and that just plain gives me the &#8220;giggities.&#8221;  To account for truly dynamic modularity OSGi also gives you requires and provides semantics (also declared via headers) akin to the requires and provides semantics you see in dynamic languages like Ruby and some Javascript packaging/dependency management frameworks.  While this may seem like its strength is only in making a clear separation between APIs you use and export, its real strength is that this allows you to truly isolate your modules at runtime from trickery that can (and has) happened on a classloader level.  &#8220;That couldn&#8217;t possibly work on an App server,&#8221; you say?  I was skeptical, too, but not so fast&#8230;</p>
<p>If you&#8217;re the type that keeps up with the JCP space, you probably know there is a JSR &#8220;trinity&#8221; (equally as mysterious as its holy counterpart to the outside viewer) to provide a more robust modularization mechanism in varying degrees.  That &#8220;quagmire&#8221; withstanding, OSGi has been mounting a considerable lead as <em>the</em> modularization system of choice in the JavaSE and EE/App server space.  (It was already a formidable player in the embedded/mobile space, where it evolved from.)  Nearly all major App server vendors have integrated the OSGi model into their core, which means they&#8217;ve probably cleaned up any classloader nastiness they&#8217;ve resorted to in the past.  And now you&#8217;re seeing some of the leading frameworks like Spring and Web Beans/Seam 3 (and subsequently have signed up to publish themselves as OSGi bundles.)  Not to mention the success that Eclipse has seen since refactoring itself to work off its OSGi implementation, Equinox.</p>
<p>If OSGi can continue to make inroads in the framework space,  I think its prospects to the &#8220;in the trenches&#8221; Java developer are very exciting indeed.  Expect me to babble on more about this in the future&#8230;</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;</div></div>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;</div></div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://cwash.org/2009/04/15/osgi-ggity-giggity/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=24&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
		<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=207&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=6&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=4&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=OSGi-ggity-Giggity&amp;link=http://cwash.org/2009/04/15/osgi-ggity-giggity/&amp;notes=Thoughts%20on%20the%20OSGi%20service%20platform%20for%20modularity.&amp;short_link=http://bit.ly/99Hc01&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div></div>

<h3  class="related_post_title">More Related Content</h3><ul class="related_post"><li>July 24, 2009 -- <a href="http://cwash.org/2009/07/24/the-elements-of-reusable-code/" title="The Elements of Reusable Code">The Elements of Reusable Code</a> (0)</li><li>June 3, 2009 -- <a href="http://cwash.org/2009/06/03/what-is-hamcrest/" title="What is Hamcrest?">What is Hamcrest?</a> (0)</li><li>November 28, 2008 -- <a href="http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/" title="Must Haves/References For Modern Java EE Developers">Must Haves/References For Modern Java EE Developers</a> (1)</li><li>November 19, 2008 -- <a href="http://cwash.org/2008/11/19/java-6-and-maven-209-on-leopard/" title="Java 6 and Maven 2.0.9 on Leopard">Java 6 and Maven 2.0.9 on Leopard</a> (7)</li><li>March 19, 2008 -- <a href="http://cwash.org/2008/03/19/new-wave-logging/" title="New Wave Logging">New Wave Logging</a> (0)</li><li>July 8, 2010 -- <a href="http://cwash.org/2010/07/08/transactions-part-1/" title="Transactions, Part 1">Transactions, Part 1</a> (0)</li><li>January 7, 2010 -- <a href="http://cwash.org/2010/01/07/eliminate-branching-if-statements-to-produce-better-code/" title="Eliminate Branching (IF Statements) to Produce Better Code">Eliminate Branching (IF Statements) to Produce Better Code</a> (0)</li><li>July 29, 2009 -- <a href="http://cwash.org/2009/07/29/what-id-tell-myself-about-design-if-i-were-just-beginning/" title="What I&#8217;d Tell Myself About Design If I Were Just Beginning">What I&#8217;d Tell Myself About Design If I Were Just Beginning</a> (5)</li><li>June 9, 2009 -- <a href="http://cwash.org/2009/06/09/mocking-with-jmockit/" title="Mocking with JMockit">Mocking with JMockit</a> (5)</li><li>January 31, 2009 -- <a href="http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/" title="In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel ">In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel </a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cwash.org/2009/04/15/osgi-ggity-giggity/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel</title>
		<link>http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel</link>
		<comments>http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 01:16:05 +0000</pubDate>
		<dc:creator>Chris Wash</dc:creator>
				<category><![CDATA[Meta/Blog]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog fight]]></category>
		<category><![CDATA[Bob Martin]]></category>
		<category><![CDATA[Cal Henderson]]></category>
		<category><![CDATA[Cedric Beust]]></category>
		<category><![CDATA[Clean Code]]></category>
		<category><![CDATA[creativity]]></category>
		<category><![CDATA[development practices]]></category>
		<category><![CDATA[Gavin King]]></category>
		<category><![CDATA[Hanselminutes]]></category>
		<category><![CDATA[Jared Richardson]]></category>
		<category><![CDATA[Jeff Atwood]]></category>
		<category><![CDATA[Jim Coplien]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[pragmatic]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[stackoverflow]]></category>
		<category><![CDATA[technical debt]]></category>
		<category><![CDATA[testng]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://cwash.org/?p=107</guid>
		<description><![CDATA[Weighing in on the recent ideological classes between Stackoverflow's recent podcast with Jeff Atwood and Joel Spolsky in which they call out Robert "UncleBob" Martin on his views of Unit Testing and his SOLID principles.]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><div class="content">
<p><strong>Update:</strong> Robert Martin is scheduled to appear on the Feb 10 episode of the SO Podcast.  Should be interesting to see where things go.  Also, Jay Fields has <a href="http://blog.jayfields.com/2009/02/thoughts-on-developer-testing.html">weighed in on the topic</a>.</p>
<p><strong>Update #2:</strong> Listened to the new SO podcast and am working on a short followup post.  I just met another local boy and kindred spirit in <a href="http://www.codethinked.com/">Justin Etheredge who has also had a few things to say</a> about this whole debacle.</p>
<p>I wanted to add my two cents to this philosophical, in my view very important, but not very pragmatic debate. For the uninitiated, the argument begins with the <a href="http://blog.stackoverflow.com/2009/01/podcast-38/">Stackoverflow Podcast Episode #38</a> which is a discussion between Joel Spolsky and Jeff Atwood.  They discussed, among many other topics, some of &#8220;UncleBob&#8221; Martin&#8217;s recent material found in his book <em><a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882">Clean Code</a></em>, (actually, Spolsky cited Martin&#8217;s appearance on <a href="http://www.hanselminutes.com/default.aspx?showID=163">Hanselminutes</a> as the spark to his comments), which Martin responded to with a number of tweets and a <a href="http://blog.objectmentor.com/articles/2009/01/31/quality-doesnt-matter-that-much-jeff-and-joel">blog post</a>.<span id="more-107"></span></p>
<p><a href="http://agileartisans.com/main">Jared Richardson</a> introduced me to the idea of <strong>technical debt</strong>, (term was coined, like so many other terms, by Ward Cunningham) which I think is a pragmatic way to cut through the philosophical differences in this argument.  But in the interest of carrying on the debate, and because it&#8217;s the weekend, I&#8217;ve decided to (perhaps) add some fuel to the fire.  Please don&#8217;t read this at work.</p>
<p>The gist of the argument is about how much emphasis you should focus on robustness/code hygiene/maintainability in your code, even if it is unclear there is much business value in doing so.  Essentially, if we consider impacts to budgets, deadlines, etc., and even in terms of its impact to your code (see Antipattern: &#8220;Yet Another Useless Layer&#8221;) &#8212; is it worth it?  It&#8217;s very much a discussion of what software quality is and why is it important, which raises questions like:</p>
<ul>
<li>Are robustness and business value mutually exclusive?</li>
<li>Does quality require rigor and conceptual cleanliness?</li>
<li>Is code hygiene a purely academic pursuit, or is there intrinsic value in it?</li>
</ul>
<p>These are interesting questions.  Atwood and Spolsky take what they feel is a more pragmatic position; Atwood explaining quality in terms of a Frank Zappa quote [paraphrasing] &#8220;Nobody gives a crap if we&#8217;re great musicians,&#8221; meaning that what matters is ultimately what is delivered to the customer. He explains further that &#8220;Quality is just another axis&#8221; &#8212; another set of competing concerns for your development time and interest.  Spolsky&#8217;s comments constitute a self-professed rant that there is a thread of zealotry in the OO community around TDD.  It reminded me a lot of what <a href="http://beust.com/weblog/archives/000477.html">Cedric Beust has argued</a> in reference to what <a href="http://www.infoq.com/interviews/coplien-martin-tdd">Jim Coplien has debated with Martin himself</a>.  While Spolksy could be playing devil&#8217;s advocate, or could have been looking to start a &#8220;blog fight&#8221; (already popping up in comment threads) I think he could have gone about it in a more pragmatic way.  While Beust does paint Martin as a zealot as well, at least his main point didn&#8217;t portray unit testing as just short of completely useless; rather, he is one of the creators of the popular <a href="http://testng.org/doc/">TestNG </a>framework:</p>
<blockquote><p>&#8220;Tests first&#8221; or &#8220;tests last&#8221; is unimportant as long as there are tests.</p></blockquote>
<p>I might be wrong, but I even remember reading a section of <em>Clean Code</em> in Borders last week and essentially reading Beust&#8217;s point in Martin&#8217;s book.  It stuck out in my mind after watching his debate with Coplian.  But I digress.</p>
<p>Before going further, I wanted to point out how much this debate reminds me of <a href="http://www.plasticbag.org/archives/2004/03/from_pirate_dwarves_to_ninja_elves/">From pirate dwarves to ninja elves&#8230;</a>, which I believe is a great way to classify personality types &#8212; especially those of people writing code.  We know for sure that UncleBob falls into the Ninja-Elf quadrant.  He thinks practicing TDD is a professional responsibilty and lays out his own definition for TDD in <em>Clean Code</em>.  I think this is the very definition of a Ninja-Elf.  My personal leanings are toward that quadrant as well. When you are innundated with Dijsktra, the ulitmate Ninja-Elf, in school, the following quote really sticks with you:</p>
<blockquote><p>I mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself &#8220;Dijkstra would not have liked this&#8221;, well, that would be enough immortality for me.</p></blockquote>
<p>But there are people whose opinions I respect with Dwarf-Pirate leanings, too.  Obviously Atwood and Spolsky lean in this direction (though they may not fall directly into that quadrant).  I’ve heard some others that I respect espouse the same opinion as Spolsky; Gavin King, for example, I’ve heard him say, “The types of bugs that I introduce usually aren’t caught by a <strong>unit</strong> test.”  He wasn’t as over the top in his argument, he simply explained that he prefers integration tests.  And I don&#8217;t think you&#8217;d hear any of the people mentioned in this post say that they never write any tests.  For a great argument from the ultimate Pirate-Dwarf see Cal Henderson&#8217;s <a href="http://www.ludicorp.com/flickr/flickr_php_final.zip">normalized data is for sissies</a> (slide #27); it is pretty entertaining and compelling when scalability is of utmost concern.</p>
<p>I think Atwood’s argument ultimately came down to championing the idea of <a href="http://www.infoq.com/news/2008/02/continuous-production">continuous production</a>; that being able to respond to change or bugs found and having a quick no-brainer deployment process is the Zen-like state you&#8217;d like to get to.  But the idea of getting there is that it comes out of some notion of continuous integration, which is predicated on the idea of testing.  Henderson himself makes this very argument (I believe in this <a href="http://cdn4.libsyn.com/carsonsystems/Cal_Henderson.mp3?nvb=20090201003132&amp;nva=20090202004132&amp;t=0cab6219613db05c73c82">talk</a>, but perhaps in another). You need to trust your team enough to get changes and fixes out to address problems quickly, and be smart about what you spend time on. Testing is great and if you can find people that can test their code well and be productive, that’s awesome. But Henderson’s point is those people are extremely hard to find and retain.</p>
<p>All this goes back to the old question, is producing code an artistic or engineering practice?  (Interesting that Atwood supported his comment with a Frank Zappa quote about art.)  Obviously you need a talented and cohesive team to be able to make it work either way. I think the answer is it <strong>has to be</strong> a little bit of both.  You&#8217;ll need some measure of creativity, some degree of engineering aptitude, also strong analytical skills, and to succeed in a business environment, some acumen in decision making and managing (at the very least your own time).</p>
<p>The fact is, though, that we’ve come leaps and bounds in terms of being able to efficiently produce these tests, and balance their production and maintenance out with constraints, business expectations, budgets and deadlines.  And <a href="http://rubyconf.org/talks/24">it can fuel your creative side</a>, too.</p>
<p>As for professional responsibilities, I definitely wouldn’t recommend trying to write code without at least <em>some</em> tests if you expect anyone else to have to maintain your code. If you&#8217;ve got a close knit team and an overwhelmingly urgent need to deliver untested code (and are of the Pirate-Dwarf persuasion) then go for it.  But that being said, I’d say I agree with Martin and Jared Richardson that argue it’s a professional responsibility to <strong>not take on the technical debt of untested code</strong>. Of course, if tests mean you can get maintainability (and other -ilities) along the way then I think that you&#8217;re well on your way to a quality product.</p>
<p>One final way to look at this: would you say it&#8217;s better for your team to take the view that code is innocent until proven guilty, or guilty until proven innocent?  In the interest of skepticism, considering the teams that most developers &#8220;in the trenches&#8221; have to work on, and how far we&#8217;ve come in making testing easier and more efficient, I&#8217;d need a very strong team to make the assumption that all they code they write is innocent.  We all make mistakes.  I believe this is also brought up in <em>Clean Code</em>.</p>
<p>Ultimately the message Atwood and Spolsky send in their Stackoverflow podcast is that unit testing and efforts to support it are not a silver bullet.  Personal slights aside (&#8220;I don&#8217;t think these people write very much code.&#8221;) they have a point &#8212; and Martin agrees in his blog post.  But I think it took them a long time to make that point which is certainly no great revelation.  In the end, I did not feel they explained a whole lot about what the <em>right approach to quality</em> is, but communicated their distaste for an attempt (especially if accepted dogmatically) that aims to do so.  I can relate to this, and agree you must treat what you read, hear and are taught with a healthy dose of skepticism.  Martin&#8217;s ideas may seem dogmatic on the surface but I don&#8217;t think it&#8217;s fair to paint him in that light.  If you really read what he writes, I think he realizes that he is a voice many people are listening to, and works hard to say what he thinks is the right.  Martin defends a style of development that favors more rigor and discipline than many others feel is necessary, but in an industry that can be categorized by its lack of discipline, I can&#8217;t do much but respect him for that.</div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=24&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
		<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=207&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=6&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=4&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=In+response+to+Stackoverflow+%2338%2F%22Quality+Doesn%27t+Matter+That+Much%22+--+Jeff+and+Joel+&amp;link=http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/&amp;notes=Weighing%20in%20on%20the%20recent%20ideological%20classes%20between%20Stackoverflow%27s%20recent%20podcast%20with%20Jeff%20Atwood%20and%20Joel%20Spolsky%20in%20which%20they%20call%20out%20Robert%20%22UncleBob%22%20Martin%20on%20his%20views%20of%20Unit%20Testing%20and%20his%20SOLID%20principles.&amp;short_link=http://bit.ly/a3OkUe&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div></div>

<h3  class="related_post_title">More Related Content</h3><ul class="related_post"><li>November 28, 2008 -- <a href="http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/" title="Must Haves/References For Modern Java EE Developers">Must Haves/References For Modern Java EE Developers</a> (1)</li><li>February 17, 2009 -- <a href="http://cwash.org/2009/02/17/dont-unit-test-anymore-no-really/" title="Don&#8217;t Unit Test Anymore&#8230; No, Really!">Don&#8217;t Unit Test Anymore&#8230; No, Really!</a> (6)</li><li>January 13, 2009 -- <a href="http://cwash.org/2009/01/13/on-software-quality/" title="On Software Quality">On Software Quality</a> (8)</li><li>March 13, 2008 -- <a href="http://cwash.org/2008/03/13/continuous-integration-dissected/" title="Continuous Integration Dissected">Continuous Integration Dissected</a> (0)</li><li>March 11, 2008 -- <a href="http://cwash.org/2008/03/11/bugs-detectives-and-test-automation/" title="Bugs, Detectives, and Test Automation">Bugs, Detectives, and Test Automation</a> (2)</li><li>June 9, 2009 -- <a href="http://cwash.org/2009/06/09/mocking-with-jmockit/" title="Mocking with JMockit">Mocking with JMockit</a> (5)</li><li>August 2, 2008 -- <a href="http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/" title="How I Escape the &#8220;Reuse Trap&#8221;">How I Escape the &#8220;Reuse Trap&#8221;</a> (0)</li><li>July 8, 2010 -- <a href="http://cwash.org/2010/07/08/transactions-part-1/" title="Transactions, Part 1">Transactions, Part 1</a> (0)</li><li>January 7, 2010 -- <a href="http://cwash.org/2010/01/07/eliminate-branching-if-statements-to-produce-better-code/" title="Eliminate Branching (IF Statements) to Produce Better Code">Eliminate Branching (IF Statements) to Produce Better Code</a> (0)</li><li>July 24, 2009 -- <a href="http://cwash.org/2009/07/24/the-elements-of-reusable-code/" title="The Elements of Reusable Code">The Elements of Reusable Code</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://cdn4.libsyn.com/carsonsystems/Cal_Henderson.mp3?nvb=20090201003132&amp;amp" length="46243558" type="audio/mpeg" />
		</item>
		<item>
		<title>16 Apps That Lessen TEH SUCK of Web Development in XP</title>
		<link>http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=16-apps-that-lessen-teh-suck-of-web-development-in-xp</link>
		<comments>http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 00:43:48 +0000</pubDate>
		<dc:creator>Chris Wash</dc:creator>
				<category><![CDATA[Meta/Blog]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[clcl]]></category>
		<category><![CDATA[CommandBar]]></category>
		<category><![CDATA[cygwin]]></category>
		<category><![CDATA[DOMercury]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Google Desktop]]></category>
		<category><![CDATA[HttpFox]]></category>
		<category><![CDATA[Pidgin]]></category>
		<category><![CDATA[PSPad]]></category>
		<category><![CDATA[SoapUI]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[Squirrel]]></category>
		<category><![CDATA[TCPMon]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[WinMerge]]></category>
		<category><![CDATA[WinSCP]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://cwash.org/?p=96</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/";</script>Update: Sysinternals puts out some great developer friendly tools. They come in handy! Update #2: I&#8217;ve made the switch to using Launchy over DOMercury. Working on Windows XP is unavoidable at my job. While it&#8217;s not my favorite environment, I&#8217;ve found a decent baseline of software tools to augment the barebones OS that can get [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><p><strong>Update</strong>: <a title="Sysinternals" href="http://technet.microsoft.com/en-us/sysinternals/default.aspx">Sysinternals</a> puts out some great developer friendly tools.  They come in handy!<br />
<strong>Update #2</strong>: I&#8217;ve made the switch to using <a href="http://www.launchy.net/">Launchy</a> over DOMercury.</p>
<p>Working on Windows XP is unavoidable at my job.  While it&#8217;s not my favorite environment, I&#8217;ve found a decent baseline of software tools to augment the barebones OS that can get me to a place where it isn&#8217;t <em>that</em> bad.  Note, I&#8217;m not including any tools for doing off-development related things, anything development related that is on the web or any cool plugins for any of these programs.</p>
<p>Here is what <em>I</em> need, in roughly the order I download them:<span id="more-96"></span></p>
<ol>
<li><strong><a href="http://www.mozilla.com/firefox/">Firefox</a></strong> &#8211; I open IE, download Firefox with the purest intentions never to open IE again.  Of course, my job gets in the way.  I&#8217;ll save all the addons for this I install for a rainy day.</li>
<li><strong><a href="http://www.cygwin.com/">cygwin</a></strong> &#8211; first thing I do after making necessary LAF adjustments and installing Firefox.  I don&#8217;t know how some people can survive without a robust command line&#8230; at the very least find, grep, sed, xargs.  Also, if you don&#8217;t know what Ctrl+R does in Bash, check it out immediately.</li>
<li><strong><a href="http://desktop.google.com/">Google Desktop</a></strong> &#8211; in lieu of not having Spotlight or anything similar, I set this to work early indexing</li>
<li><strong><a href="http://www.eclipse.org/">Eclipse</a></strong> &#8211; there is so much I use Eclipse for.  Always one of my first downloads/installs even if it&#8217;s not needed immediately.  Contains <strong>TCPMon</strong>, a Diff/Merge tool, great refactoring support, and about a million plugins to do many development tasks you&#8217;ll inevitably need to do (or want).</li>
<li><strong>TCPMon</strong> &#8211; Whether you use Eclipse&#8217;s or some other, track this down and figure out how to use it.  (<a href="https://addons.mozilla.org/en-US/firefox/addon/6647">HttpFox</a> is great, but it can&#8217;t capture requests you make outside of the browser.  Sorry, we&#8217;re not supposed to be talking about Firefox extensions, I know.)</li>
<li><strong><a href="http://www.pidgin.im/">Pidgin</a></strong> &#8211; best F/OS IM client out there for Windows (and other platforms). You can do some crazy stuff with Jabber, ladies and gents.  But that&#8217;s another blog.</li>
<li><strong><a href="http://winscp.net/eng/index.php">WinSCP</a></strong> &#8211; I don&#8217;t need to FTP or SCP files everyday, but when I do it&#8217;s usually easier to do it using WinSCP, and I can save my connection information incase I need to do something similar later.</li>
<li><strong><a href="http://www.pspad.com/">PSPad</a></strong> &#8211; currently my favorite Windows-based &#8220;barebones++&#8221; text editor.  In addition to the &#8220;coder-style&#8221; basics, a neat trick is that you can launch hyperlinks or filepaths by selecting and right-clicking.</li>
<li><strong><a href="http://www.vim.org/">vim</a></strong> &#8211; &#8230;Because none of these editors are perfect, though, I always keep ole&#8217; vim on hand incase I get annoyed with PSPad.  Honestly, I find myself in it just as frequently.</li>
<li><strong><a href="http://winmerge.org/">WinMerge</a></strong> &#8211; best F/OS Windows diff tool I know of &#8211; can compare directories which you can&#8217;t get the Eclipse merge tool to do.</li>
<li><strong><a href="http://www.soapui.org/">SoapUI</a></strong> &#8211; general swiss army knife for anything related to web services. (Contains <strong>TCPMon</strong>, too.)</li>
<li><strong><a href="http://www.squirrelsql.org/">Squirrel</a></strong> &#8211; Ditch the Toad, go F/OS.  Well, there is a free version of Toad but it can&#8217;t compete.  As Jack White says, &#8220;<a href="http://songza.com/z/prk5i4">Be like the squirrel</a>.&#8221;  Does whatever you want to a Database.  Any database (well, almost).  Written in Java, communicates using JDBC.  Driver manager is a good way to get correct JDBC connection strings if you ever forget or can&#8217;t seem to get one right.</li>
<li><strong><a href="http://www.codeproject.com/KB/cs/commandbar.aspx">CommandBar</a></strong> &#8211; Found this mentioned in the <em>Productive Programmer</em> as a way to marry an Explorer and Cmd window.  Comes in handy.</li>
<li><strong><a href="http://www.nakka.com/soft/clcl/index_eng.html">clcl</a></strong> &#8211; Another <em>Productive Programmer</em> recommendation for a simple multiple clipboard manager.</li>
<li><strong><a href="http://code.google.com/p/msysgit/">git</a></strong> &#8211; while I don&#8217;t always need this, I have been using it more lately because the version control software I have to comply with (eventually) on my current client sucks so mightily.  I&#8217;m using git for day to day development and then I create a repo to interoperate with Harvest when I need to.  (Be thankful you don&#8217;t have to use Harvest.)</li>
<li><strong><a href="http://www.odierno.com/domercury/">DOMercury</a></strong> &#8211; Recent find that provides a Quicksilver-like launcher for Windows.  It also includes an Alias manager.  A priceless easter egg: &#8216;wtf&#8217; launches IE.  This sold me immediately.  I&#8217;m not sure how well it keeps itself indexed, but I usually install it after everything else to keep it simple.</li>
</ol>
<p>What am I leaving out?  What kinds of things do you need to make your time in XP bearable?</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=24&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
		<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=207&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=6&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=4&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=16+Apps+That+Lessen+TEH+SUCK+of+Web+Development+in+XP&amp;link=http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/&amp;notes=Update%3A%20Sysinternals%20puts%20out%20some%20great%20developer%20friendly%20tools.%20%20They%20come%20in%20handy%21%0D%0AUpdate%20%232%3A%20I%27ve%20made%20the%20switch%20to%20using%20Launchy%20over%20DOMercury.%0D%0A%0D%0AWorking%20on%20Windows%20XP%20is%20unavoidable%20at%20my%20job.%20%20While%20it%27s%20not%20my%20favorite%20environment%2C%20I%27ve%20found%20a%20decent%20baseline%20of%20software%20tools%20to%20augm&amp;short_link=http://bit.ly/b6Otgz&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div></div>

<h3  class="related_post_title">More Related Content</h3><ul class="related_post"><li>April 15, 2009 -- <a href="http://cwash.org/2009/04/15/osgi-ggity-giggity/" title="OSGi-ggity-Giggity">OSGi-ggity-Giggity</a> (4)</li><li>January 31, 2009 -- <a href="http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/" title="In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel ">In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel </a> (3)</li><li>January 13, 2009 -- <a href="http://cwash.org/2009/01/13/on-software-quality/" title="On Software Quality">On Software Quality</a> (8)</li><li>December 1, 2008 -- <a href="http://cwash.org/2008/12/01/24ways/" title="24ways">24ways</a> (1)</li><li>November 28, 2008 -- <a href="http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/" title="Must Haves/References For Modern Java EE Developers">Must Haves/References For Modern Java EE Developers</a> (1)</li><li>August 2, 2008 -- <a href="http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/" title="How I Escape the &#8220;Reuse Trap&#8221;">How I Escape the &#8220;Reuse Trap&#8221;</a> (0)</li><li>March 19, 2008 -- <a href="http://cwash.org/2008/03/19/new-wave-logging/" title="New Wave Logging">New Wave Logging</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>On Software Quality</title>
		<link>http://cwash.org/2009/01/13/on-software-quality/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=on-software-quality</link>
		<comments>http://cwash.org/2009/01/13/on-software-quality/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 02:27:04 +0000</pubDate>
		<dc:creator>Chris Wash</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://cwash.org/?p=71</guid>
		<description><![CDATA[A brief discussion of how "the devil is in the details," especially when we're talking about Software Quality.]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2009/01/13/on-software-quality/";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><p>Dwight D. Eisenhower said &#8220;In preparing for battle I have always found that plans are useless, but planning is indispensable.&#8221;  After reading Jason Yip&#8217;s <a href="http://jchyip.blogspot.com/2009/01/no-matter-how-many-times-you-say-it-we.html">No matter how many times you say it, we still don&#8217;t need a QA on the team</a>, I started thinking about how similar this is to the correlation between (software) quality and exploring what software quality is.  In the spirit of Jason&#8217;s article, thinking about how you &#8220;get quality right&#8221; will have more positive results for the sake of quality than searching out defects.  So the question stands, how do you get quality right?  I&#8217;m not sure there&#8217;s a cut and dry answer, but I have a feeling it&#8217;s in the details.  I know it sounds anecdotal, but quality isn&#8217;t easy.  It requires a lot of effort applied constantly.  It requires reward and incentive, not punishment and fear.  It&#8217;s caring about small things, and shifting how your team thinks, communicates and works together.<span id="more-71"></span></p>
<p>Jason wisely points out, &#8220;Everyone has a responsibility for quality.&#8221;  But how are you ever to translate this to your team that plays the blame game, avoids at all real issues of quality, or blindly assumes that the &#8220;QA&#8221; (sic) will find all the product defects?  How do you start this discussion, much less keep it going constantly?</p>
<p>Do you simply say, &#8220;Quality is your responsibility&#8221;?  Or hang a sign on the wall to the same effect?  I wouldn&#8217;t.  The very idea of it undermines the ideal you&#8217;re trying to espouse: taking personal responsibility.  It does nothing to encourage people to care about quality, outside of fear of losing your respect, <em>maybe</em>.</p>
<p>It&#8217;s leading by example.  If someone finds a defect in my work, or takes issue with something I&#8217;m responsible for, I congratulate them with a &#8220;Good catch &#8211; thanks!&#8221;  It may sound silly.  It may even sound sissy.  That&#8217;s natural.  After all, we&#8217;re brought up, educated, cultivated with instincts to defend our own work.  I wouldn&#8217;t be the least bit surprised to learn the average adult brain is predisposed to think this way due to the way its been &#8220;wired&#8221; through learning, and even, more philosophically, through our own sense of ego and intellectual self-worth.  But think about psychologically what &#8220;good catch&#8221; does instead:  </p>
<ol>
<li>It acknowledges your teammate&#8217;s effort, and encourages that person to continue to put forth the same effort.  Or more.  </li>
<li>It encourages me to be more diligent in the future, even if I don&#8217;t agree 100%.  </li>
<li>Most importantly, it tells my teammate that I care about quality, too.</li>
</ol>
<p>Yet, all of this assumes people on your team desire to produce quality software.  Somehow I had to tie this into <a href="http://www.codinghorror.com/blog/archives/001202.html">Programming: Love It or Leave It</a>, right?  More rambling to come on this topic later.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://cwash.org/2009/01/13/on-software-quality/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=24&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
		<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=207&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=6&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=4&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=On+Software+Quality&amp;link=http://cwash.org/2009/01/13/on-software-quality/&amp;notes=A%20brief%20discussion%20of%20how%20%22the%20devil%20is%20in%20the%20details%2C%22%20especially%20when%20we%27re%20talking%20about%20Software%20Quality.&amp;short_link=http://bit.ly/clR2hH&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div></div>

<h3  class="related_post_title">More Related Content</h3><ul class="related_post"><li>January 31, 2009 -- <a href="http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/" title="In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel ">In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel </a> (3)</li><li>November 28, 2008 -- <a href="http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/" title="Must Haves/References For Modern Java EE Developers">Must Haves/References For Modern Java EE Developers</a> (1)</li><li>August 2, 2008 -- <a href="http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/" title="How I Escape the &#8220;Reuse Trap&#8221;">How I Escape the &#8220;Reuse Trap&#8221;</a> (0)</li><li>July 8, 2010 -- <a href="http://cwash.org/2010/07/08/transactions-part-1/" title="Transactions, Part 1">Transactions, Part 1</a> (0)</li><li>January 7, 2010 -- <a href="http://cwash.org/2010/01/07/eliminate-branching-if-statements-to-produce-better-code/" title="Eliminate Branching (IF Statements) to Produce Better Code">Eliminate Branching (IF Statements) to Produce Better Code</a> (0)</li><li>July 24, 2009 -- <a href="http://cwash.org/2009/07/24/the-elements-of-reusable-code/" title="The Elements of Reusable Code">The Elements of Reusable Code</a> (0)</li><li>April 15, 2009 -- <a href="http://cwash.org/2009/04/15/osgi-ggity-giggity/" title="OSGi-ggity-Giggity">OSGi-ggity-Giggity</a> (4)</li><li>January 21, 2009 -- <a href="http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/" title="16 Apps That Lessen TEH SUCK of Web Development in XP">16 Apps That Lessen TEH SUCK of Web Development in XP</a> (8)</li><li>December 1, 2008 -- <a href="http://cwash.org/2008/12/01/24ways/" title="24ways">24ways</a> (1)</li><li>March 19, 2008 -- <a href="http://cwash.org/2008/03/19/new-wave-logging/" title="New Wave Logging">New Wave Logging</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cwash.org/2009/01/13/on-software-quality/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>24ways</title>
		<link>http://cwash.org/2008/12/01/24ways/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=24ways</link>
		<comments>http://cwash.org/2008/12/01/24ways/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 15:08:37 +0000</pubDate>
		<dc:creator>Chris Wash</dc:creator>
				<category><![CDATA[Meta/Blog]]></category>
		<category><![CDATA[24ways]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://cwash.org/?p=58</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2008/12/01/24ways/";</script>I can&#8217;t believe it&#8217;s already December! I came across 24ways last year and thought it was a neat concept: an &#8216;advent calendar for web geeks&#8217; – take a look! They had a pretty good variety last year and I&#8217;m expecting some good things this year. Subscribe to the comments for this post? Share this on [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2008/12/01/24ways/";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><p>I can&#8217;t believe it&#8217;s already December!  I came across <a href="http://24ways.org/">24ways</a> last year and thought it was a neat concept: an &#8216;advent calendar for web geeks&#8217; – take a look!  They had a pretty good variety last year and I&#8217;m expecting some good things this year.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://cwash.org/2008/12/01/24ways/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=24&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
		<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=207&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=6&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=4&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=24ways&amp;link=http://cwash.org/2008/12/01/24ways/&amp;notes=I%20can%27t%20believe%20it%27s%20already%20December%21%20%20I%20came%20across%2024ways%20last%20year%20and%20thought%20it%20was%20a%20neat%20concept%3A%20an%20%27advent%20calendar%20for%20web%20geeks%27%20%E2%80%93%20take%20a%20look%21%20%20They%20had%20a%20pretty%20good%20variety%20last%20year%20and%20I%27m%20expecting%20some%20good%20things%20this%20year.&amp;short_link=http://bit.ly/9DwXLJ&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div></div>

<h3  class="related_post_title">More Related Content</h3><ul class="related_post"><li>August 2, 2008 -- <a href="http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/" title="How I Escape the &#8220;Reuse Trap&#8221;">How I Escape the &#8220;Reuse Trap&#8221;</a> (0)</li><li>July 29, 2009 -- <a href="http://cwash.org/2009/07/29/what-id-tell-myself-about-design-if-i-were-just-beginning/" title="What I&#8217;d Tell Myself About Design If I Were Just Beginning">What I&#8217;d Tell Myself About Design If I Were Just Beginning</a> (5)</li><li>July 24, 2009 -- <a href="http://cwash.org/2009/07/24/the-elements-of-reusable-code/" title="The Elements of Reusable Code">The Elements of Reusable Code</a> (0)</li><li>April 15, 2009 -- <a href="http://cwash.org/2009/04/15/osgi-ggity-giggity/" title="OSGi-ggity-Giggity">OSGi-ggity-Giggity</a> (4)</li><li>January 31, 2009 -- <a href="http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/" title="In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel ">In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel </a> (3)</li><li>January 21, 2009 -- <a href="http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/" title="16 Apps That Lessen TEH SUCK of Web Development in XP">16 Apps That Lessen TEH SUCK of Web Development in XP</a> (8)</li><li>January 13, 2009 -- <a href="http://cwash.org/2009/01/13/on-software-quality/" title="On Software Quality">On Software Quality</a> (8)</li><li>November 28, 2008 -- <a href="http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/" title="Must Haves/References For Modern Java EE Developers">Must Haves/References For Modern Java EE Developers</a> (1)</li><li>July 31, 2008 -- <a href="http://cwash.org/2008/07/31/help-the-good-guys/" title="Help the Good Guys">Help the Good Guys</a> (0)</li><li>March 19, 2008 -- <a href="http://cwash.org/2008/03/19/new-wave-logging/" title="New Wave Logging">New Wave Logging</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cwash.org/2008/12/01/24ways/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Must Haves/References For Modern Java EE Developers</title>
		<link>http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=must-havesreferences-for-modern-java-ee-developers</link>
		<comments>http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 01:10:54 +0000</pubDate>
		<dc:creator>Chris Wash</dc:creator>
				<category><![CDATA[JBoss Seam]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[guice]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javaee]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[references]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[testng]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://cwash.org/?p=46</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/";</script>I&#8217;ve been doing a lot of reading lately and have been meaning to plug some of my favorite reads, and one of the things that I&#8217;ve been trying to read with an eye toward is for converting those that have been stuck on &#8220;behind-the-curve&#8221; projects to the new way of thinking and doing things. As [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><p>I&#8217;ve been doing a lot of reading lately and have been meaning to plug some of my favorite reads, and one of the things that I&#8217;ve been trying to read with an eye toward is for converting those that have been stuck on &#8220;behind-the-curve&#8221; projects to the new way of thinking and doing things.  As such, and just in time for the weekend, I&#8217;ve compiled a list of my favorites with an eye to the &#8220;movers and shakers&#8221; that have driven innovation in the Enterprise Java world recently.  Note that even though some of these links are specific to certain frameworks/technologies, there is a common thread throughout most of these that have a bigger focus on the best way to solve problems using Java 5/EE 5 constructs and concepts.</p>
<p>A book that should be on any Java developer&#8217;s shelf is <a href="http://www.amazon.com/gp/product/0321356683?ie=UTF8&#038;tag=cwasintosoft-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0321356683">Effective Java (2nd Edition)</a><img src="http://www.assoc-amazon.com/e/ir?t=cwasintosoft-20&#038;l=as2&#038;o=1&#038;a=0321356683" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.  <em>Make sure you get the second edition</em>, for all of the Java 5 changes.  <a href="http://www.youtube.com/watch?v=pi_I7oD_uGI">This talk by Joshua</a> should whet your appetite.  (His <a href="http://www.youtube.com/watch?v=aAb7hSCtvGw">talk on good API design</a> is also very good.)  You should also take a look at Bob Lee&#8217;s <a href="http://www.youtube.com/watch?v=FFXhXZnmEQM">talk on Guice</a>.  Guice&#8217;s philosophy and focus on typesafety has spilled over into Web Beans (and newer versions of Seam) and its annotation based approach has heavily influenced newer Spring features.  I especially like his points on type safety around the 11-minute mark.  The walkthrough at the end of the talk from &#8220;old way&#8221; to &#8220;new way&#8221; is great for people who haven&#8217;t really gotten away from Factories, Delegates, and Service Locators yet.</p>
<p>The Guice video mentions that a common thread in modern Java frameworks is a focus on testability. Testing is a very important concept that nearly all new frameworks have embraced, but you still need know-how to be successful with testing.  I&#8217;ve come across some great books recently in the automated (developer) testing arena.  I&#8217;ve found the most thorough book on the topic out there is Lasse Koskela&#8217;s <a href="http://www.amazon.com/gp/product/1932394850?ie=UTF8&#038;tag=cwasintosoft-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1932394850">Test Driven</a><img src="http://www.assoc-amazon.com/e/ir?t=cwasintosoft-20&#038;l=as2&#038;o=1&#038;a=1932394850" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.  The ideas and topics discussed in the book are really language independent, and work equally well with other languages.  To cut your teeth on TestNG, which the Seam documentation turned me onto, I recommend the TestNG developers&#8217; book <a href="http://www.amazon.com/gp/product/0321503104?ie=UTF8&#038;tag=cwasintosoft-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0321503104">Next Generation Java Testing: TestNG and Advanced Concepts</a><img src="http://www.assoc-amazon.com/e/ir?t=cwasintosoft-20&#038;l=as2&#038;o=1&#038;a=0321503104" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.  Cedric Beust, also the author of EJBGen, and Hani Suleiman, author of the Bile Blog, produced a book that was a suprisingly good read.  It&#8217;s packed with a lot of knowledge and some interesting takes on EE concepts.  Newer versions of JUnit also include many of these features and concepts, so you&#8217;ll get the underpinnings of these concepts in this book.  <a href="http://www.youtube.com/watch?v=TtcEpryRy44">This video</a> gives you a basis to TestNG&#8217;s approach.</p>
<p>As one of the growing number of developers who have an application in the <a href="http://seamframework.org/Documentation/SeamInProductionListing" target="_new">Seam In Production</a> page, there are a few Seam resources I have to share.  Even if you don&#8217;t get into Seam, it should be on your radar because a lot of the core concepts around conversations have evolved into Web Beans, and are found other frameworks like Apache Orchestra and Spring WebFlow.  Pete Muir did a <a href="https://jboss.webex.com/ec0600l/eventcenter/recording/recordAction.do;jsessionid=JwTdnQw2TZrh1Zq715zmXWwHBD2ZW2fDynhW2dh7NxYnK1pKkLly!-1137412519?theAction=poprecord&#038;actname=%2Feventcenter%2Fframe%2Fg.do&#038;apiname=lsr.php&#038;renewticket=0&#038;renewticket=0&#038;actappname=ec0600l&#038;entappname=url0106l&#038;needFilter=false&#038;&#038;isurlact=true&#038;entactname=%2FnbrRecordingURL.do&#038;rID=34057132&#038;rKey=F88E0DE2EA1FAC2D&#038;recordID=34057132&#038;rnd=9027886079&#038;siteurl=jboss&#038;SP=EC&#038;AT=pb&#038;format=short">Webcast</a> that&#8217;s a great introduction to Seam 2.  </p>
<p>Author of <a href="http://solutionsfit.com/blog/" target="_new">one of my favorite Seam blogs</a>, Jacob Orshalick, has created a <a href="http://refcardz.dzone.com/refcardz/core-seam?oid=hom6084">DZone RefCard for Seam 2.1 Core</a>.  It&#8217;s right off the presses, being published this week, but is a great quick-capsule review of what Seam can do for you, and nice to have on your desk if you&#8217;re writing Seam.  If you need more in-depth descriptions of what&#8217;s on the RefCard, Jacob also coauthored the latest edition of the great Seam reference <a href="http://www.amazon.com/gp/product/0137129394?ie=UTF8&#038;tag=cwasintosoft-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0137129394">Seam Framework: Experience the Evolution of Java EE</a><img src="http://www.assoc-amazon.com/e/ir?t=cwasintosoft-20&#038;l=as2&#038;o=1&#038;a=0137129394" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.<br />
Dan Allen&#8217;s <a href="http://www.amazon.com/gp/product/1933988401?ie=UTF8&#038;tag=cwasintosoft-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1933988401">Seam in Action</a><img src="http://www.assoc-amazon.com/e/ir?t=cwasintosoft-20&#038;l=as2&#038;o=1&#038;a=1933988401" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is another excellent resource.  Of course, the awesome <a href="http://seamframework.org/Documentation">Seam Docs</a> and <a href="http://www.seamframework.org/Community/Forums">Forums</a> always come in handy.  You should also RSS <a href="http://in.relation.to/">in.relation.to</a> – the Hibernate/Seam developers&#8217; group blog.</p>
<p>I know I&#8217;m leaving some great things out.  What resources do you think someone who is used to J2EE should take a look at to get them &#8220;up to speed&#8221; with the state of the art?</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=24&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
		<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=207&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=6&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=4&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Must+Haves%2FReferences+For+Modern+Java+EE+Developers&amp;link=http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/&amp;notes=I%27ve%20been%20doing%20a%20lot%20of%20reading%20lately%20and%20have%20been%20meaning%20to%20plug%20some%20of%20my%20favorite%20reads%2C%20and%20one%20of%20the%20things%20that%20I%27ve%20been%20trying%20to%20read%20with%20an%20eye%20toward%20is%20for%20converting%20those%20that%20have%20been%20stuck%20on%20%22behind-the-curve%22%20projects%20to%20the%20new%20way%20of%20thinking%20and%20doing%20things.%20%20As%20such%2C%20a&amp;short_link=http://bit.ly/bpUdbq&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div></div>

<h3  class="related_post_title">More Related Content</h3><ul class="related_post"><li>January 31, 2009 -- <a href="http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/" title="In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel ">In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel </a> (3)</li><li>March 19, 2008 -- <a href="http://cwash.org/2008/03/19/new-wave-logging/" title="New Wave Logging">New Wave Logging</a> (0)</li><li>June 9, 2009 -- <a href="http://cwash.org/2009/06/09/mocking-with-jmockit/" title="Mocking with JMockit">Mocking with JMockit</a> (5)</li><li>April 15, 2009 -- <a href="http://cwash.org/2009/04/15/osgi-ggity-giggity/" title="OSGi-ggity-Giggity">OSGi-ggity-Giggity</a> (4)</li><li>February 17, 2009 -- <a href="http://cwash.org/2009/02/17/dont-unit-test-anymore-no-really/" title="Don&#8217;t Unit Test Anymore&#8230; No, Really!">Don&#8217;t Unit Test Anymore&#8230; No, Really!</a> (6)</li><li>January 13, 2009 -- <a href="http://cwash.org/2009/01/13/on-software-quality/" title="On Software Quality">On Software Quality</a> (8)</li><li>August 21, 2008 -- <a href="http://cwash.org/2008/08/21/weblogic-92-seam-victory-is-mine/" title="Weblogic 9.2 + Seam : Victory is Mine!">Weblogic 9.2 + Seam : Victory is Mine!</a> (1)</li><li>August 2, 2008 -- <a href="http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/" title="How I Escape the &#8220;Reuse Trap&#8221;">How I Escape the &#8220;Reuse Trap&#8221;</a> (0)</li><li>July 21, 2008 -- <a href="http://cwash.org/2008/07/21/pimp-my-build/" title="Pimp My Build">Pimp My Build</a> (0)</li><li>March 13, 2008 -- <a href="http://cwash.org/2008/03/13/continuous-integration-dissected/" title="Continuous Integration Dissected">Continuous Integration Dissected</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How I Escape the &#8220;Reuse Trap&#8221;</title>
		<link>http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-i-escape-the-reuse-trap</link>
		<comments>http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 16:25:57 +0000</pubDate>
		<dc:creator>Chris Wash</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[reuse]]></category>
		<category><![CDATA[reuse trap]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://cwash.org/?p=22</guid>
		<description><![CDATA[While I was reading "The Reuse Trap In Software Design" I found myself thinking,"Me too! Me too!" like a giddy kid on the playground that's found a new pal with a mutual interest in "pet snakes and/or tarantulas."  As with many of the problems Basil writes about in his blog, I experienced the same problem, investigated it and found the same root causes, and came to many of the same conclusions as those outlined.  My preferred technique for getting out of this quagmire is a little bit different than Basil's and I describe it in this article.]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><p>If you&#8217;ve checked out my blogroll, you&#8217;ll notice I have a link to <a title="Professional Software Development" href="http://www.basilv.com/psd/" target="_blank">Basil Vandegriend&#8217;s &#8220;Professional Software Development&#8221;</a> blog.  I like a lot of the articles he has written and to a large extent the subject matter I envision for this blog frequently crisscrosses with Basil&#8217;s.</p>
<p>While I was reading &#8220;<a title="The Reuse Trap In Software Design" href="http://www.basilv.com/psd/blog/2006/the-reuse-trap-in-software-design#comment-58049" target="_blank">The Reuse Trap In Software Design</a>&#8221; I found myself thinking,&#8221;Me too! Me too!&#8221; like a giddy kid on the playground that&#8217;s found a new pal with a mutual interest in &#8220;pet snakes and/or tarantulas.&#8221;  As with many of the problems Basil writes about in his blog, I experienced the same problem, investigated it and found the same root causes, and came to many of the same conclusions as those outlined.  He describes the &#8220;reuse trap&#8221; as:</p>
<blockquote><p>&#8230;[A] term I coined to describe the situation when one becomes stuck trying to design new functionality while simultaneously attempting to reuse existing code that needs some modifications.</p></blockquote>
<p>He then goes on to describe why it&#8217;s a tough problem for n00bs and outlines a strategy he uses to get out of the trap–one that&#8217;s best described as a two-step process: <em>copy-paste to reuse/refactoring to remove duplication</em>.  I encourage you to read his article if you&#8217;re not familiar with the terms, or how this strategy can solve the problem described above.</p>
<p>My preferred technique for mitigating the problems involved isn&#8217;t <em>copy-paste reuse/refactoring</em>; it&#8217;s stubbing the calls to the code-to-be-reused (C2BR) that needs modification.  If I can fake out the behavior I need, it lets me focus on the nature of the dependency that exists between the two objects/components.  When I go to modify the C2BR, my inputs and outputs (or other consequences that occur as a result of a call to the C2BR) translate directly into a test that I can use to drive the changes I make to that code.  It also ensures that the coupling that exists between the objects is loose and legit.</p>
<p>The only thing to watch out for is that care must be taken to then remove the (small) duplication of the stubbed out inputs/outputs and actually wire the two pieces together when finished with the reused code.  I usually do that by throwing a TODO:WIRE marker in when I stub something.</p>
<p>I&#8217;ve found this is the approach I take more often, though I do take the <em>copy-paste reuse/refactoring</em> route from time to time.  This <strong><em>stub/rewire</em></strong> approach is a bit more advanced, but it&#8217;s how I envisioned solving the &#8220;reuse trap&#8221; when, as Basil puts it, &#8220;I became aware of it&#8221; and all that it entailed.</p>
<p>Do you ever come across this problem?  How do you get out of this &#8220;trap&#8221; or avoid being caught up in it in the first place?</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=24&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
		<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=207&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=6&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=4&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=How+I+Escape+the+%22Reuse+Trap%22&amp;link=http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/&amp;notes=While%20I%20was%20reading%20%22The%20Reuse%20Trap%20In%20Software%20Design%22%20I%20found%20myself%20thinking%2C%22Me%20too%21%20Me%20too%21%22%20like%20a%20giddy%20kid%20on%20the%20playground%20that%27s%20found%20a%20new%20pal%20with%20a%20mutual%20interest%20in%20%22pet%20snakes%20and%2For%20tarantulas.%22%20%20As%20with%20many%20of%20the%20problems%20Basil%20writes%20about%20in%20his%20blog%2C%20I%20experienced%20the%20same%20problem%2C%20investigated%20it%20and%20found%20the%20same%20root%20causes%2C%20and%20came%20to%20many%20of%20the%20same%20conclusions%20as%20those%20outlined.%20%20My%20preferred%20technique%20for%20getting%20out%20of%20this%20quagmire%20is%20a%20little%20bit%20different%20than%20Basil%27s%20and%20I%20describe%20it%20in%20this%20article.&amp;short_link=http://bit.ly/brMnK3&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div></div>

<h3  class="related_post_title">More Related Content</h3><ul class="related_post"><li>July 24, 2009 -- <a href="http://cwash.org/2009/07/24/the-elements-of-reusable-code/" title="The Elements of Reusable Code">The Elements of Reusable Code</a> (0)</li><li>January 31, 2009 -- <a href="http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/" title="In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel ">In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel </a> (3)</li><li>January 13, 2009 -- <a href="http://cwash.org/2009/01/13/on-software-quality/" title="On Software Quality">On Software Quality</a> (8)</li><li>December 1, 2008 -- <a href="http://cwash.org/2008/12/01/24ways/" title="24ways">24ways</a> (1)</li><li>November 28, 2008 -- <a href="http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/" title="Must Haves/References For Modern Java EE Developers">Must Haves/References For Modern Java EE Developers</a> (1)</li><li>July 8, 2010 -- <a href="http://cwash.org/2010/07/08/transactions-part-1/" title="Transactions, Part 1">Transactions, Part 1</a> (0)</li><li>January 7, 2010 -- <a href="http://cwash.org/2010/01/07/eliminate-branching-if-statements-to-produce-better-code/" title="Eliminate Branching (IF Statements) to Produce Better Code">Eliminate Branching (IF Statements) to Produce Better Code</a> (0)</li><li>July 29, 2009 -- <a href="http://cwash.org/2009/07/29/what-id-tell-myself-about-design-if-i-were-just-beginning/" title="What I&#8217;d Tell Myself About Design If I Were Just Beginning">What I&#8217;d Tell Myself About Design If I Were Just Beginning</a> (5)</li><li>April 15, 2009 -- <a href="http://cwash.org/2009/04/15/osgi-ggity-giggity/" title="OSGi-ggity-Giggity">OSGi-ggity-Giggity</a> (4)</li><li>January 21, 2009 -- <a href="http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/" title="16 Apps That Lessen TEH SUCK of Web Development in XP">16 Apps That Lessen TEH SUCK of Web Development in XP</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cwash.org/2008/08/02/how-i-escape-the-reuse-trap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Wave Logging</title>
		<link>http://cwash.org/2008/03/19/new-wave-logging/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=new-wave-logging</link>
		<comments>http://cwash.org/2008/03/19/new-wave-logging/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 19:34:39 +0000</pubDate>
		<dc:creator>Chris Wash</dc:creator>
				<category><![CDATA[JBoss Seam]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[web beans]]></category>

		<guid isPermaLink="false">http://cwash.org/2008/03/19/new-wave-logging/</guid>
		<description><![CDATA[Tired of messy logging logic cluttering your code with a bunch of if/else statements?  Don't let logging cramp your style! The approach <a href="http://www.seamframework.org" title="JBoss Seam">Seam</a> takes to logging makes your code pretty again (and other things).  What does this mean for you?  No more "<em>code guards</em>"!

A nice byproduct of the genius of Seam's design is that many common problems can be solved by using <em>EL </em>as veritable swiss-army knife.  We'll look at this through a logging example specifically, though it's just one of many different innovative ways of solving problems using Java5 features and <a href="http://docs.jboss.com/seam/2.0.1.GA/reference/en/html_single/#elenhancements">EL</a> as a general approach.]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://cwash.org/2008/03/19/new-wave-logging/";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><p>Tired of messy logging logic cluttering your code with a bunch of if/else statements?  Don&#8217;t let logging cramp your style! The approach <a href="http://www.seamframework.org" title="JBoss Seam">Seam</a> takes to logging makes your code pretty again (and other things).  What does this mean for you?  No more &#8220;<em>code guards</em>&#8220;!</p>
<p>A nice byproduct of the genius of Seam&#8217;s design is that many common problems can be solved by using <em>EL </em>as veritable swiss-army knife.  We&#8217;ll look at this through a logging example specifically, though it&#8217;s just one of many different innovative ways of solving problems using Java5 features and <a href="http://docs.jboss.com/seam/2.0.1.GA/reference/en/html_single/#elenhancements">EL</a> as a general approach.</p>
<h3>WTF is a code guard?</h3>
<p>What goes without saying in most of the discussions regarding logging is that excessive logging can be the largest and most common performance bottleneck in code that meets its functional requirements.  Thus, logging APIs introduce the idea of log levels, to ease the burden of excessive logging.  Generally, log levels are a configuration setting on a per-environment basis.  Development environments will typically log most dependent code at the <em>info </em>level, and cut that up to the <em>debug</em> level for custom code or when things go awry with a piece of dependent code.  Testing environments typically log at <em>info</em> while production will often just log at the <em>warn</em> level.</p>
<p>While this is all well and good, we find that for a lot of the logging we do, we typically run across an ugly little flaw in this approach that&#8217;s produced an equally ugly hack as a work-around.  Enter the <em>code guard</em>.  From the log4j docs:</p>
<blockquote><p>Code guards are typically used to guard code that only needs to execute in support of logging, that otherwise introduces undesirable runtime overhead in the general case (logging disabled). Examples are multiple parameters, or expressions (e.g. string + &#8221; more&#8221;) for parameters. Use the guard methods of the form log.is&lt;Priority&gt;() to verify that logging should be performed, before incurring the overhead of the logging  method call. Yes, the logging methods will perform the same check, but only after resolving parameters.</p></blockquote>
<p>What&#8217;s all this business about resolving parameters?  Let&#8217;s look at an example:</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// unguarded code</span><br />
log.<span style="color: #006633;">debug</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;FOO: &quot;</span> <span style="color: #339933;">+</span> foo <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;, BAR: &quot;</span> <span style="color: #339933;">+</span> foo.<span style="color: #006633;">getBar</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// guarded code</span><br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>log.<span style="color: #006633;">isDebugEnabled</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
log.<span style="color: #006633;">debug</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;FOO: &quot;</span> <span style="color: #339933;">+</span> foo <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;, BAR: &quot;</span> <span style="color: #339933;">+</span> foo.<span style="color: #006633;">getBar</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>So, we need this cluttered if/else around only to ensure that our expressions (concats, usually) won&#8217;t get resolved unless we actually want them to.  Why is there no other recourse?  The answer isn&#8217;t surprising – it comes down to the way the API was designed.  All log4j logging methods take a single argument &#8212; which made a lot of sense, I suppose when the powers that be first designed logging APIs. They soon realized that in order to use their API, one has to use an expression to resolve all parameters into a single argument prior to calling the method!  This is why a code guard is needed.</p>
<p>Java5 introduces a feature that allows for <a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html" title="Variable Length Arguments" target="_blank">varargs</a>, and taking advantage of this can help us with our ugly little logging problem, e.g.</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">log.<span style="color: #006633;">debug</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;FOO: #0, BAR: #1&quot;</span>, foo, foo.<span style="color: #006633;">getBar</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>With this approach, our expressions won&#8217;t get resolved until after we&#8217;re in debug(), and we can let it do the dirty work inside the method.  The first thing that our logging method does is check to see if its level is valid, otherwise it&#8217;ll fall out immediately.  Because the concatenation happens inside the log method, we don&#8217;t need a code guard to protect us.</p>
<p>This is the approach that Seam takes to logging.  Seam&#8217;s <a href="http://docs.jboss.com/seam/latest-2/api/org/jboss/seam/log/Log.html" title="Seam's Log Interface">Log</a> interface provides not only a solution that removes the need for code guards, it also allows you to use EL in your log messages (if you&#8217;re trying to dive into a Seam component&#8230;) &#8211; e.g.</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">log.<span style="color: #006633;">debug</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;FOO: #{foo}, BAR: #{foo.bar}&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Much better.  By and large, this is the way you do logging in Seam.  Because binding occurs late, you never really run into the problem where you need to even think about using something like a &#8220;code guard.&#8221;  Code what you&#8217;re supposed to; not noise! <strong>This is just one of many novel ways to use EL in Seam</strong>, and why it really deserves a look as a way to write better code, faster and as a far more productive platform for Java programmers (fed up with JavaSE/EE 1.4) than Rails/Grails.</p>
<p>See the <a href="http://in.relation.to/Bloggers/TheWebBeansManifesto" target="_blank" title="Web Beans Manifesto">Web Beans Manifesto</a> for much more on this approach.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://cwash.org/2008/03/19/new-wave-logging/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=3&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=24&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-dzone">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=102&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to DZone">Add this to DZone</a>
		</li>
		<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
		<li class="shr-googlebookmarks">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=74&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Bookmarks">Add this to Google Bookmarks</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=207&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Google Reader">Add this to Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=6&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=4&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=&amp;service=10&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=New+Wave+Logging&amp;link=http://cwash.org/2008/03/19/new-wave-logging/&amp;notes=Tired%20of%20messy%20logging%20logic%20cluttering%20your%20code%20with%20a%20bunch%20of%20if%2Felse%20statements%3F%20%20Don%27t%20let%20logging%20cramp%20your%20style%21%20The%20approach%20Seam%20takes%20to%20logging%20makes%20your%20code%20pretty%20again%20%28and%20other%20things%29.%20%20What%20does%20this%20mean%20for%20you%3F%20%20No%20more%20%22code%20guards%22%21%0D%0A%0D%0AA%20nice%20byproduct%20of%20the%20genius%20of%20Seam%27s%20design%20is%20that%20many%20common%20problems%20can%20be%20solved%20by%20using%20EL%20as%20veritable%20swiss-army%20knife.%20%20We%27ll%20look%20at%20this%20through%20a%20logging%20example%20specifically%2C%20though%20it%27s%20just%20one%20of%20many%20different%20innovative%20ways%20of%20solving%20problems%20using%20Java5%20features%20and%20EL%20as%20a%20general%20approach.&amp;short_link=http://bit.ly/b9tGdk&amp;v=1&amp;apitype=1&amp;apikey=&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul><div style="clear: both;"></div></div>

<h3  class="related_post_title">More Related Content</h3><ul class="related_post"><li>November 28, 2008 -- <a href="http://cwash.org/2008/11/28/must-havesreferences-for-modern-java-ee-developers/" title="Must Haves/References For Modern Java EE Developers">Must Haves/References For Modern Java EE Developers</a> (1)</li><li>April 15, 2009 -- <a href="http://cwash.org/2009/04/15/osgi-ggity-giggity/" title="OSGi-ggity-Giggity">OSGi-ggity-Giggity</a> (4)</li><li>June 3, 2009 -- <a href="http://cwash.org/2009/06/03/what-is-hamcrest/" title="What is Hamcrest?">What is Hamcrest?</a> (0)</li><li>January 31, 2009 -- <a href="http://cwash.org/2009/01/31/in-response-to-stackoverflow-38quality-doesnt-matter-that-much-jeff-and-joel/" title="In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel ">In response to Stackoverflow #38/&#8221;Quality Doesn&#8217;t Matter That Much&#8221; &#8212; Jeff and Joel </a> (3)</li><li>January 21, 2009 -- <a href="http://cwash.org/2009/01/21/16-apps-that-lessen-teh-suck-of-web-development-in-xp/" title="16 Apps That Lessen TEH SUCK of Web Development in XP">16 Apps That Lessen TEH SUCK of Web Development in XP</a> (8)</li><li>January 13, 2009 -- <a href="http://cwash.org/2009/01/13/on-software-quality/" title="On Software Quality">On Software Quality</a> (8)</li><li>December 1, 2008 -- <a href="http://cwash.org/2008/12/01/24ways/" title="24ways">24ways</a> (1)</li><li>November 19, 2008 -- <a href="http://cwash.org/2008/11/19/java-6-and-maven-209-on-leopard/" title="Java 6 and Maven 2.0.9 on Leopard">Java 6 and Maven 2.0.9 on Leopard</a> (7)</li><li>September 10, 2008 -- <a href="http://cwash.org/2008/09/10/axis2-client-using-adb-runtime-dependencies/" title="Axis2 client using ADB &#8211; runtime dependencies">Axis2 client using ADB &#8211; runtime dependencies</a> (6)</li><li>August 21, 2008 -- <a href="http://cwash.org/2008/08/21/weblogic-92-seam-victory-is-mine/" title="Weblogic 9.2 + Seam : Victory is Mine!">Weblogic 9.2 + Seam : Victory is Mine!</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cwash.org/2008/03/19/new-wave-logging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

