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

<channel>
	<title>{codesqueeze} &#187; Architecture</title>
	<atom:link href="http://www.codesqueeze.com/category/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codesqueeze.com</link>
	<description>Ideas for building efficient developers and software</description>
	<lastBuildDate>Wed, 28 Dec 2011 16:55:01 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Correct Process Guides Us (Tracer Architecture Cont.)</title>
		<link>http://www.codesqueeze.com/the-correct-process-guides-us-tracer-architecture-cont/</link>
		<comments>http://www.codesqueeze.com/the-correct-process-guides-us-tracer-architecture-cont/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 07:54:10 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Software Process]]></category>
		<category><![CDATA[Thought Stuff]]></category>

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

Here is my big thought for the day:
The correct process implicitly guides people into correct behavior. The correct architecture forces code into the correct patterns.
A few weeks ago I wrote about how Tracer Bullet Architects show true leadership by creating clear and direct paths prior to the entire team coming aboard is probably the most [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-correct-process-guides-us-tracer-architecture-cont/">The Correct Process Guides Us (Tracer Architecture Cont.)</a></p>
]]></description>
			<content:encoded><![CDATA[<p class="inline">
<img src="http://www.codesqueeze.com/wp-content/2009/08/god1.jpg" alt="Futurama God" title="Futurama God" width="200" height="136" class="right"/>
</p>
<p>Here is my big thought for the day:</p>
<blockquote><p>The correct process implicitly guides people into correct behavior. The correct architecture forces code into the correct patterns.</p></blockquote>
<p>A few weeks ago I wrote about how <a href="http://www.codesqueeze.com/how-to-be-a-tracer-bullet-architect/">Tracer Bullet Architects</a> show true leadership by creating clear and direct paths prior to the entire team coming aboard is probably the most important activity of a successful project.</p>
<p>However, I would like to take this one step further and suggest that if [as a team leader] you install the most correct process people will want to participate in correct and efficient behavior.  </p>
<p>For example, when Napster was first introduced millions of people illegally downloaded music. Why? Not because they were bad people, but because they had no other mechanism for which to purchase (and own) digital copies of their favorite songs.  Apple came along with iTunes giving people the first reasonably priced and easy to purchase model which included digital ownership &#8211; and the rest is history. <strong>People want to do the right thing and will</strong> given the correct means.  </p>
<p>Building on this concept, it is possible to create project infrastructures that force developers to adhere to good practices such as <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">SOLID</a>.  Seriously&#8230;I have done it.  Some of these architectures would range from MVC/DI/IoC/Mock goodness to Tiered/Stubs/Statics/MockingIsEvil grossness, and each was a good fit given current company.  It was the architectures that enforced clean lines of responsibility, increased testability, and [as a result] increased stability.</p>
<p>Of course people can break processes, of course they can break code, but if the correct solution is in place &#8211; <strong>they have to try really hard to do the wrong thing.</strong>  If people continually are breaking process or code, then the answer is easy &#8211; you currently have the wrong solution in place.</p>
<p>Creating a zero friction environment is rarely rewarded by your peers; however, it is the most rewarding personal achievement one can accomplish.</p>
<blockquote><p>
If you do something correct, it is as if you did nothing at all. -God (as seen on Futurama)</p></blockquote>
<p><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/companies-arent-progressive-but-people-are/" rel="bookmark" title="April 6, 2009">Companies Aren&#8217;t Progressive (But People Are&#8230;)</a></li>
<li><a href="http://www.codesqueeze.com/metrics-and-weath-its-all-relative/" rel="bookmark" title="February 16, 2009">Metrics and Wealth &#8211; It&#8217;s All Relative</a></li>
<li><a href="http://www.codesqueeze.com/why-new-developers-should-consider-contracting/" rel="bookmark" title="October 22, 2008">Why New Developers Should Consider Contracting</a></li>
<li><a href="http://www.codesqueeze.com/the-blame-game-how-necessary-is-traceability/" rel="bookmark" title="July 14, 2008">The Blame Game: How Necessary Is Traceability?</a></li>
<li><a href="http://www.codesqueeze.com/dont-go-for-the-doughnut/" rel="bookmark" title="September 21, 2008">Don&#8217;t Go For The Doughnut</a></li>
</ul>
<p><!-- Similar Posts took 3.716 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-correct-process-guides-us-tracer-architecture-cont/">The Correct Process Guides Us (Tracer Architecture Cont.)</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-correct-process-guides-us-tracer-architecture-cont%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-correct-process-guides-us-tracer-architecture-cont%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/the-correct-process-guides-us-tracer-architecture-cont/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How To Be A Tracer Bullet Architect</title>
		<link>http://www.codesqueeze.com/how-to-be-a-tracer-bullet-architect/</link>
		<comments>http://www.codesqueeze.com/how-to-be-a-tracer-bullet-architect/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 07:48:37 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Better Teams]]></category>

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

As Spiderman once put it, &#8220;With great power comes great responsibility&#8221;&#8230; well unfortunately there are a ton of roles and people that have never heard that phrase because I continually run into people who believe their current position entitles them to bossing people around while providing little value in terms of leadership.  I am [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/how-to-be-a-tracer-bullet-architect/">How To Be A Tracer Bullet Architect</a></p>
]]></description>
			<content:encoded><![CDATA[<p class="inline">
<img src="http://www.codesqueeze.com/wp-content/2009/08/tracer-bullets.jpg" alt="tracer bullets" title="tracer bullet development" class="right" />
</p>
<p>As Spiderman once put it, &#8220;With great power comes great responsibility&#8221;&#8230; well unfortunately there are a ton of roles and people that have never heard that phrase because I continually run into people who believe their current position entitles them to bossing people around while providing little value in terms of leadership.  I am a huge believer of leading by example and as a result I have modeled my architectural duties around the Tracer Bullet Development tactic.</p>
<p>If you have never hear of tracer bullet development, it was a term coined in the classic <a href="http://www.amazon.com/gp/product/020161622X?ie=UTF8&#038;tag=codes-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=020161622X">The Pragmatic Programmer: From Journeyman to Master</a>.  In short, it is very important to trailblaze unknown territory through activities such as mockups, prototyping, and spiking.</p>
<p>However, I sometimes find &#8220;architect&#8221; level people providing no more worth to their team than a whiteboard full of boxes and arrows and a mouthful of hollow words of encouragement (<a href="http://www.codesqueeze.com/burning-down-the-architect-title/">sarcastic quotes explained</a>). <strong>What teams need is clear direction on a clear path.</strong></p>
<p>If what I just said wasn&#8217;t clear enough, let me be more blunt &#8211;  <strong>whiteboarding and diagramming are the lowest forms of architecture</strong> and they provide the least amount of worth.  I realize that I will receive some comment on how in their company is special and creating BUFD UML diagrams is key, blah blah blah.  The point I am trying to make is, these activities 99% of the time are nothing more than echoes of the obvious &#8211; <strong>as a leader it is your responsibility to give direction to the non-obvious!</strong></p>
<p>For example, the current project I am on we need to provide a very rich search capability.  As an architect you could really suck and throw some buzzwords at your developer and send them on their way.  You could suck less by throwing a couple of real technologies to a developer to give them a launching point for research, but more than likely you are delegating a very important architectural decision to someone who is not veteran enough to make the correct choice.  The final option is, you do your job and lead by example by researching the alternatives yourself, picking the path, creating a prototype to validate your hypothesis, and then hand it off with a pre-cleared path.</p>
<p>In order to become a trailblazer, you have to blaze trails.  Good architects do not blaze trails with their bossyness and whiteboard markers, instead good architects do it with their intelligence, code, and ability to communicate.</p>
<p>PS &#8211; Here are a few more tracer bullet resources, <a href="http://www.artima.com/intv/tracer.html">here</a> and <a href="http://weblogs.asp.net/gunnarpeipman/archive/2009/04/11/tracer-bullet-development.aspx">here</a>.<br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/the-correct-process-guides-us-tracer-architecture-cont/" rel="bookmark" title="August 24, 2009">The Correct Process Guides Us (Tracer Architecture Cont.)</a></li>
<li><a href="http://www.codesqueeze.com/burning-down-the-architect-title/" rel="bookmark" title="August 14, 2007">Burning Down the Architect Title</a></li>
<li><a href="http://www.codesqueeze.com/what-your-dog-can-teach-you-about-building-teams/" rel="bookmark" title="February 11, 2008">What Your Dog Can Teach You About Building Teams</a></li>
<li><a href="http://www.codesqueeze.com/do-managers-prey-on-developer-pride/" rel="bookmark" title="October 10, 2007">Do Managers Prey on Developer Pride?</a></li>
<li><a href="http://www.codesqueeze.com/book-review-agile-retrospectives/" rel="bookmark" title="July 25, 2007">Book Review: Agile Retrospectives</a></li>
</ul>
<p><!-- Similar Posts took 3.750 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/how-to-be-a-tracer-bullet-architect/">How To Be A Tracer Bullet Architect</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fhow-to-be-a-tracer-bullet-architect%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fhow-to-be-a-tracer-bullet-architect%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/how-to-be-a-tracer-bullet-architect/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Why Are You Asking Me This Question?</title>
		<link>http://www.codesqueeze.com/why-are-you-asking-me-this-question/</link>
		<comments>http://www.codesqueeze.com/why-are-you-asking-me-this-question/#comments</comments>
		<pubDate>Tue, 26 May 2009 07:37:32 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Personal Improvement]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/?p=932</guid>
		<description><![CDATA[Imagine this, your boss walks up to you and asks, &#8220;You said the code could run on both Windows or Linux, right?&#8221;  Do you say&#8230;
A) Yes
B) Yes, but not without some changes
C) Why do you need to know?
For some reason, people are offended when people answer a question with another question; however, it is [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/why-are-you-asking-me-this-question/">Why Are You Asking Me This Question?</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Imagine this, your boss walks up to you and asks, <em>&#8220;You said the code could run on both Windows or Linux, right?&#8221; </em> Do you say&#8230;</p>
<p>A) Yes<br />
B) Yes, but not without some changes<br />
C) Why do you need to know?</p>
<p>For some reason, people are offended when people answer a question with another question; however, it is my belief that unless the question was given in great detail <strong>the answer may not be 100% correct</strong> (or correct at all for that matter).</p>
<p>A bad habit most developers have (myself included) is to be hasty in responses by non-developers.  Rip off your headphones, respond in the most terse answer, put headphones back on, and turn back to your screen.  Regardless if you are being disrupted, or you are having a bad day, here is why you want to engage most questions with another question:</p>
<h3>Hidden Agendas Are Revealed</h3>
<p>First and absolutely foremost, <strong>asking the question why is a defensive move</strong>.  More times then not, when people ask questions in a vague, hurried, or terse manner it is to hide or cover the real question they are attempting to answer.  And why are they hiding these details?  Most of the time it is because they don&#8217;t want to know the real answer to the question, <strong>they want to validate the answer they most want</strong> whether it is the truth or not.</p>
<p>Asking them why slows them down and causes them to validate themselves.  Most importantly, <strong>it removes you as the scapegoat</strong>.  After all, the developers said we could&#8230;</p>
<h3>Shows Interest In The Problem</h3>
<p>Engaging in a meaningful conversation is perceived as high value activity to others because it shows sincere interest in helping them to solve their problems.  As a result, you will be perceived as a high value employee because of your interest.</p>
<h3>You Become A Valued Team Player</h3>
<p>If you are perceived as a high value employee because of how you interact with the team, it only leads to believe that you will become a valued team player.  Valued team players are generally liked and as a result promoted&#8230;and all because you answered questions with questions.</p>
<p><br/><br />
Answering questions with questions is only perceived poorly by those who are attempting to hide something whether it is illegal, immoral, stupid, or their own ignorance.  Overcome all of these pitfalls by taking the time out to dig deeper and provide real helping hand.<br />
<br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/refinance-your-technical-debt-just-like-your-mortgage/" rel="bookmark" title="March 16, 2009">Refinance Your Technical Debt Just Like Your Mortgage</a></li>
<li><a href="http://www.codesqueeze.com/intellects-dont-appreciate-intelligence/" rel="bookmark" title="October 12, 2009">Intellects Don&#8217;t Appreciate Intelligence</a></li>
<li><a href="http://www.codesqueeze.com/skull-candy-headphones-heavens-gift/" rel="bookmark" title="July 11, 2007">Skull Candy Headphones &#8211; Heaven&#8217;s Gift</a></li>
<li><a href="http://www.codesqueeze.com/your-software-process-sucks-the-prelude/" rel="bookmark" title="June 13, 2007">Your Software Process Sucks : The Prelude</a></li>
<li><a href="http://www.codesqueeze.com/what-football-can-teach-agile/" rel="bookmark" title="September 4, 2007">What Football Can Teach Agile</a></li>
</ul>
<p><!-- Similar Posts took 3.878 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/why-are-you-asking-me-this-question/">Why Are You Asking Me This Question?</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fwhy-are-you-asking-me-this-question%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fwhy-are-you-asking-me-this-question%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/why-are-you-asking-me-this-question/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Quest For Perfect Proportions In Your Software</title>
		<link>http://www.codesqueeze.com/the-quest-for-perfect-proportions-in-your-software/</link>
		<comments>http://www.codesqueeze.com/the-quest-for-perfect-proportions-in-your-software/#comments</comments>
		<pubDate>Mon, 04 Feb 2008 07:54:16 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Thought Stuff]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/the-quest-for-perfect-proportions-in-your-software/</guid>
		<description><![CDATA[

Without saying, I am impressed how intelligent geniuses such as Leonardo Da Vinci and Beethoven were; however, I am much more impressed how clever they were in applying it to their respective crafts.
One of the most prevalent examples of this is the underlying introduction of the Golden Ratio into art, architecture, and music.  
Da [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-quest-for-perfect-proportions-in-your-software/">The Quest For Perfect Proportions In Your Software</a></p>
]]></description>
			<content:encoded><![CDATA[<p>
<img src='http://www.codesqueeze.com/wp-content/2008/02/truvian-man.gif' alt='Da Vinci’s Truvian Man' class='right'/>
</p>
<p>Without saying, I am impressed how intelligent geniuses such as Leonardo Da Vinci and Beethoven were; however, I am much more impressed <strong>how clever they were in applying it</strong> to their respective crafts.</p>
<p>One of the most prevalent examples of this is the underlying introduction of the <a href="http://en.wikipedia.org/wiki/Golden_ratio">Golden Ratio</a> into art, architecture, and music.  </p>
<p><strong>Da Vinci used the golden ratio in a number of his works of art</strong>, his most blatant being his Vitruvian Man; however, he also used it in <a href="http://en.wikipedia.org/wiki/Annunciation_(Leonardo)">The Annunciation</a> and speculated the <a href="http://en.wikipedia.org/wiki/Mona_Lisa">Mona Lisa</a>.</p>
<p><strong>Beethoven&#8217;s Fifth is found with numerous instances of the golden ratio</strong>, as is Mozart&#8217;s sonatas.  In fact, there is another whole discipline with the Fibonacci series called the <a href="http://www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci/fibInArt.html#bartokDebussy">Golden String</a> which scrutinizes many violin constructions.</p>
<p>Before any of this &#8211; <a href="http://en.wikipedia.org/wiki/Parthenon">The Parthenon</a> is filled with instances of the golden ratio and other mathematical wonders including optical modifiers.</p>
<p>For almost a year now, I have wanted to write about how software is much like the elegance of music.  Both artistic from one perspective yet scientific and mathematical from another.  So I continue by pondering the question &#8211; <strong>what would the Truvian Man or Parthenon look like if it were a MVC application stack?</strong></p>
<p>With a quick introduction to the <a href="http://en.wikipedia.org/wiki/Golden_ratio">Golden Ratio</a> maybe we can hypothesize.  If the golden ratio equals:</p>
<p><img src='http://www.codesqueeze.com/wp-content/2008/02/golden-ratio.png' alt='Golden Ratio Equation' class="center"/> </p>
<p>The only positive solution to this quadratic equation is:</p>
<p><img src='http://www.codesqueeze.com/wp-content/2008/02/golden-ratio-quad.png' alt='Golden Ration Quadratic Equation' class="center"/></p>
<p>OK, now that we have that out of the way, normally we tend to draw a simple 3-tier architecture with 3 equal layers like this:</p>
<p><img src='http://www.codesqueeze.com/wp-content/2008/02/mvc.gif' alt='Normal MVC' class='center'/><br />
<strong><br />
But what would happen if we apply the golden ratio to this architecture stack?</strong>  Here are a few permutations:</p>
<p><img src='http://www.codesqueeze.com/wp-content/2008/02/mvc2.gif' alt='mvc2.gif' /><img src='http://www.codesqueeze.com/wp-content/2008/02/mvc3.gif' alt='mvc3.gif' /><br />
<img src='http://www.codesqueeze.com/wp-content/2008/02/mvc4.gif' alt='mvc4.gif' /><img src='http://www.codesqueeze.com/wp-content/2008/02/mvc5.gif' alt='mvc5.gif' /></p>
<p><br/><br />
The one that I hope represents reality the most would be this permutation:</p>
<p><img src='http://www.codesqueeze.com/wp-content/2008/02/mvc1.gif' alt='mvc1.gif' class='center'/></p>
<p>So all of this brings up interesting questions, and lets assume you have your domain model layer completed.</p>
<p>First up, <strong>what is the optimal amount of software to support X number of entities?</strong></p>
<p>This question completely depends on the application.  Is it a simplistic data in / data out application?  Then maybe your ratio of View to Model is closer to 1:1.  Does your application have a ton of business logic?  Maybe your ratio of View-Controller-Model is closer to 1.6:1.6:1.</p>
<p>Second, <strong>how does this change testing?</strong>  </p>
<p>In the <a href="http://www.codesqueeze.com/whiteboard-wednesday-the-roi-of-testing/">ROI of Testing</a> I speculated at some values at the ROI of unit testing, business logic testing, and automated UI testing.  How would that exercise change if your application demanded that you build the very top heavy permutation above (View layer is ~1.6 x bigger)?   </p>
<p>In the end, <strong>does any of this matter?</strong> Being agile means only building the amount of software you need to do the job.  If underlying patterns emerged &#8211; then neat, but not at all necessary to view the project a success.  </p>
<p>500 years from now, I can only hope that someone goes through the hassle of dissecting my code and finding the mathematical brilliance of Beethoven&#8217;s Fifth&#8230;but in the end it will probably be more like Brittney Spears pop rock&#8230;<br />
<br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/developer-faceoff-sergio-pereira-vs-angelo-anolin/" rel="bookmark" title="January 14, 2009">Developer Faceoff: Sergio Pereira vs. Angelo Anolin</a></li>
<li><a href="http://www.codesqueeze.com/the-7-software-ilities-you-need-to-know/" rel="bookmark" title="November 12, 2007">The 7 Software &#8220;-ilities&#8221; You Need To Know</a></li>
<li><a href="http://www.codesqueeze.com/concentrated-codesqueeze-january-2008/" rel="bookmark" title="February 1, 2008">Concentrated Codesqueeze: January 2008</a></li>
<li><a href="http://www.codesqueeze.com/book-review-expert-spring-mvc-and-web-flow/" rel="bookmark" title="November 7, 2007">Book Review: Expert Spring MVC and Web Flow</a></li>
<li><a href="http://www.codesqueeze.com/book-review-continuous-integration/" rel="bookmark" title="January 16, 2008">Book Review: Continuous Integration</a></li>
</ul>
<p><!-- Similar Posts took 4.254 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-quest-for-perfect-proportions-in-your-software/">The Quest For Perfect Proportions In Your Software</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-quest-for-perfect-proportions-in-your-software%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-quest-for-perfect-proportions-in-your-software%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/the-quest-for-perfect-proportions-in-your-software/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>The Art of Harvesting Abstraction</title>
		<link>http://www.codesqueeze.com/the-art-of-harvesting-abstraction/</link>
		<comments>http://www.codesqueeze.com/the-art-of-harvesting-abstraction/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 07:12:57 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/the-art-of-harvesting-abstraction/</guid>
		<description><![CDATA[

Often I watch senior developers so hell-bent on preventing DRY through code abstractions,  that they fall victim to the YAGNI principle.  By being proactive you are opening yourself to wasting time creating abstractions that may never be needed or worse adding unwanted noise to your code.
Refactoring to abstractions should be a reactive response [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-art-of-harvesting-abstraction/">The Art of Harvesting Abstraction</a></p>
]]></description>
			<content:encoded><![CDATA[<p class="inline">
<img src='http://www.codesqueeze.com/wp-content/2007/12/wheat.gif' alt='Wheat' class='right'/>
</p>
<p>Often I watch senior developers so hell-bent on preventing <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY</a> through code abstractions,  that they fall victim to the <a href="http://c2.com/xp/YouArentGonnaNeedIt.html">YAGNI principle</a>.  By being proactive you are opening yourself to wasting time creating abstractions that may never be needed or worse adding unwanted noise to your code.</p>
<p><strong>Refactoring to abstractions should be a reactive response</strong> to DRY, not a proactive prevention plan.  Being reactive to problems is a very &#8220;agile&#8221; approach, but even practitioners of agile processes sometimes get caught with their pants down running BUFD centric practices. To combat this problem, I created a term to help others overcome premature abstractions &#8211; <strong>Abstraction Harvesting</strong>.</p>
<p>Software is like a garden, you can&#8217;t 100% force or predict what is going to grow; however, you can react to current situations to better steer results in a favorable direction.  <strong>The only rule of software abstraction harvesting is that you must have target software to abstract.</strong>  What is the purpose of creating abstractions, if you don&#8217;t yet have the problem-solving concrete implementations?  This is the equivalent of running the tractor over the field before the first sprout is even visible.</p>
<blockquote><p>Before software can be reusable it first has to be usable. -Ralph Johnson</p></blockquote>
<p>If we look closely at both DRY and YAGNI we find an almost sequential relationship.  Without a DRY situation, we can not have YAGNI, but it is apparent that you can have a YAGNI situation without DRY.  This is the equivelent of putting the cart before the horse.  <strong>The concept of &#8220;Abstraction Harvesting&#8221; helps put the order back</strong> in place so you can prevent both DRY and YAGNI.  </p>
<p>Have you been guilty of premature abstractions?  If so, I want to hear the horror stories&#8230;<br />
<br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/you-never-shouldve-done-it/" rel="bookmark" title="May 17, 2009">You Never Should&#8217;ve Done It&#8230;</a></li>
<li><a href="http://www.codesqueeze.com/best-of-codesqueeze-2007/" rel="bookmark" title="December 31, 2007">Best of Codesqueeze 2007</a></li>
<li><a href="http://www.codesqueeze.com/abstraction-is-for-both-humans-and-software-but-not-software/" rel="bookmark" title="September 29, 2008">Abstraction Is For Both Humans And Software, But Not Software</a></li>
<li><a href="http://www.codesqueeze.com/bizzaro-development/" rel="bookmark" title="September 17, 2007">Bizzaro Development</a></li>
<li><a href="http://www.codesqueeze.com/does-satisfice-mean-agile/" rel="bookmark" title="March 31, 2008">Does Satisfice Mean Agile?</a></li>
</ul>
<p><!-- Similar Posts took 4.067 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-art-of-harvesting-abstraction/">The Art of Harvesting Abstraction</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-art-of-harvesting-abstraction%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-art-of-harvesting-abstraction%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/the-art-of-harvesting-abstraction/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The 7 Software &#8220;-ilities&#8221; You Need To Know</title>
		<link>http://www.codesqueeze.com/the-7-software-ilities-you-need-to-know/</link>
		<comments>http://www.codesqueeze.com/the-7-software-ilities-you-need-to-know/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 08:06:03 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/the-7-software-ilities-you-need-to-know/</guid>
		<description><![CDATA[In the world of software architecture there are many &#8220;-ilities&#8221; you must take into consideration with every project. Prioritizing them is necessary because the client will optimistically ask that you do all of them.  To help you out, here is a quick list outlining my top 7 default &#8220;-ilities&#8221; in the order that I [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-7-software-ilities-you-need-to-know/">The 7 Software &#8220;-ilities&#8221; You Need To Know</a></p>
]]></description>
			<content:encoded><![CDATA[<p>In the world of software architecture there are many &#8220;-ilities&#8221; you must take into consideration with every project. Prioritizing them is necessary because the client will optimistically ask that you do all of them.  To help you out, here is a quick list outlining my top 7 default &#8220;-ilities&#8221; in the order that I prioritize them:</p>
<h3>1. Usability</h3>
<p>Software usability can be described as how effectively end users can use, learn, or control the system.  Some questions to ask yourself to determine usability might be:</p>
<ul>
<li>Is there a UI metaphor that I am using to help users adapt? (for example, the &#8216;desktop&#8217; is a metaphor)</li>
<li>Are the most common operations streamlined to be performed quickly?</li>
<li>Can new users quickly adapt to the software without help? (is it intuitive?)</li>
<li>Do validation and error messages make sense?</li>
</ul>
<h3>2. Maintainability ( or Flexibility / Testibility)</h3>
<p>The definition of maintainability [for me] implies how brittle the code is to change.  As a result, I tie the terms flexibility and testability into the overall maintainability of a project.</p>
<ul>
<li>Does the entire team understand the code base or does knowledge islands exist?</li>
<li>Is the code throughly regression tested?</li>
<li>Can modifications to the project be done in a timely manner?</li>
</ul>
<h3>3. Scalability</h3>
<p>Scalability is the ability for your program to gracefully meet the demand of stress caused by increased usage.  In short, ensuring your program doesn&#8217;t slow or bust when pounded by more users than you originally anticipated.</p>
<ul>
<li>What is your current peak load that you can handle?</li>
<li>How many database records can create until critical operations slow down?</li>
<li>Is the primary scaling strategy to &#8220;scale up&#8221; or to &#8220;scale out&#8221; &#8212; that is, to upgrade the nodes in a fixed topology, or to add nodes?</li>
</ul>
<h3>4. Availability (or Reliability)</h3>
<p>How long the system is up and running and the <a href="http://en.wikipedia.org/wiki/MTBF">Mean Time Between Failure (MTBF)</a> is known as the availability of a program.</p>
<ul>
<li>How long does the system need to run without failure?</li>
<li>What is the acceptable length of time for the system to be down?</li>
<li>Can down times be scheduled?</li>
</ul>
<h3>5. Extensibility</h3>
<p>Are there points in the system where changes can be made with (or without) program changes?  </p>
<ul>
<li>Can the database schema flex to accommodate change?</li>
<li>Does the system allow Inversion of Control (IoC)?</li>
<li>Can end users extend the system (scripts, user defined fields, etc)?</li>
<li>Can 3rd party developers leverage your system?</li>
</ul>
<h3>6. Security</h3>
<p>I shouldn&#8217;t need to go into this one but to be thorough I like this <a href="http://www.softwarearchitectures.com/go/Discipline/DesigningArchitecture/QualityAttributes/tabid/64/Default.aspx">definition of security</a>: the measure of system’s ability to resist unauthorized attempts at usage or behavior modification, while still providing service to legitimate users.</p>
<ul>
<li>Does the system need user or role based security?</li>
<li>Does code access security need to occur?</li>
<li>What operations need to be secured?</li>
<li>How will users be administered?</li>
</ul>
<h3>7. Portability</h3>
<p>Portability is the ability for your application to run on numerous platforms.  This is can include actual application hosting, viewing, or data portability.</p>
<ul>
<li>Can the data be migrated to other systems?</li>
<li>For web applications, which browsers does your web app support?</li>
<li>Which operating systems does your program run on?</li>
</ul>
<p></p>
<p>Obviously, <strong>this is not an exhaustive list</strong>. There are <a href="http://www.softwarearchitectures.com/go/Discipline/DesigningArchitecture/QualityAttributes/tabid/64/Default.aspx">many</a> <a href="http://www.softwarearchitecturenotes.com/architectureRequirements.html">many more</a> (Backwards compatibility, Interoperability, and Reusability to name a few).  </p>
<p>What is your &#8220;-ilities&#8221; list?  Which do you prioritize over others?<br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/the-most-reusable-piece-of-code-everperiod/" rel="bookmark" title="April 16, 2008">The Most Reusable Piece Of Code Ever&#8230;Period</a></li>
<li><a href="http://www.codesqueeze.com/book-review-dont-make-me-think/" rel="bookmark" title="February 2, 2009">Book Review: Don&#8217;t Make Me Think</a></li>
<li><a href="http://www.codesqueeze.com/software-teams-vs-superheroes-why-the-solo-developer-is-dead/" rel="bookmark" title="October 26, 2007">Software Teams vs. Superheroes: Why the Solo Developer is Dead</a></li>
<li><a href="http://www.codesqueeze.com/squeezed-links-august-2007/" rel="bookmark" title="August 22, 2007">Squeezed Links: August 2007</a></li>
<li><a href="http://www.codesqueeze.com/concentrated-codesqueeze-march-2008/" rel="bookmark" title="April 1, 2008">Concentrated Codesqueeze: March 2008</a></li>
</ul>
<p><!-- Similar Posts took 4.364 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/the-7-software-ilities-you-need-to-know/">The 7 Software &#8220;-ilities&#8221; You Need To Know</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-7-software-ilities-you-need-to-know%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fthe-7-software-ilities-you-need-to-know%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/the-7-software-ilities-you-need-to-know/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Burning Down the Architect Title</title>
		<link>http://www.codesqueeze.com/burning-down-the-architect-title/</link>
		<comments>http://www.codesqueeze.com/burning-down-the-architect-title/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 12:32:54 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Human Factors]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/burning-down-the-architect-title/</guid>
		<description><![CDATA[Note: There is no ill will towards Roger, he just hit a hot button.
While walking the dog, I listened to the .NET Rocks! episode with Roger Sessions on Enterprise Architecture.  I expected the episode to be about enterprise level problems such as scalability and durability (and all the other -ilities).  Instead Roger decided [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/burning-down-the-architect-title/">Burning Down the Architect Title</a></p>
]]></description>
			<content:encoded><![CDATA[<p><em>Note: There is no ill will towards Roger, he just hit a hot button.</em></p>
<p>While walking the dog, I listened to the <a href="http://www.dotnetrocks.com/">.NET Rocks!</a> episode with <a href="http://www.dotnetrocks.com/default.aspx?showNum=251">Roger Sessions on Enterprise Architecture</a>.  I expected the episode to be about enterprise level problems such as scalability and durability (and all the other -ilities).  Instead Roger decided to pretentiously talk about his definition of the enterprise architect role. To paraphrase:</p>
<blockquote><p>
Right now, most businesses are split into two camps, the developers (technologists) and the business analyst. Companies think having two camps specialized is a good idea, but it is not&#8230;</p>
<p>The role of the enterprise architect is to understand the problem domain regardless if it is small organization or large corporation.  It is a marriage between technology and business&#8230;</p></blockquote>
<p>OK, <strong>timeout</strong>.</p>
<p>While I understand what he is attempting to say, and I agree that the separation of camps needs to blend [into the proposed marriage] for correct software to be built, there are a number of things wrong with this statement and a majority of this interview.</p>
<p>First off, please <strong>do not slap the word enterprise in front of any title</strong> unless you are specifically working on enterprise level problems.  Using the terms enterprise and small organization in the same sentence is an oxymoron.  If your job is load balancing the <a href="http://myspace.com">MySpace</a> web farms then you may have the &#8216;enterprise&#8217; moniker.  </p>
<p>Second, <strong>attempting to understand your customers&#8217; business domain does not bestow you the architect title</strong> because it is not exclusively an architect activity. I rarely meet a developer that has blindly developed off of a requirements document.  Normally, the opposite occurs and passionate developers believe they understand the problem domain better than the client (which they promptly need to be reminded that this is not the case).</p>
<p>What I found most hypocritical about his architectural perspective was while advocating the a needed high level union of business and technology, <strong>he divided the technological camp by separating the roles of architect and developers</strong>.  Developers are the ones doing the implementation, should we not be teaching them to learn more about the business domain?  If we are segregating the technologists that know the business domain and those that do not, are we not just creating <a href="http://www.codesqueeze.com/when-everybodys-responsibility-becomes-nobodys-responsibility/">knowledge silos</a>? </p>
<p>Too often I see the title architect incorrectly used for project managers with no technical skills or senior developers with no people skills.  And now, I see the title enterprise architect being used out of context.  <strong>When titles are misappropriated they start to lose meaning</strong>.  As a result, the wrong people are placed in the wrong positions causing poor decisions.</p>
<p>In my mind, the <strong>architect role is about being the strongest team player</strong>, fluent in both the proposed technology but also the problem domain, <strong>but no more important than the single developer</strong>.  The only difference between the architect and developer is the different altitude at which the problem is viewed.  </p>
<p><em>Update: I mistakenly said David Hayden earlier but it was a recording with Roger Sessions.  Sorry Dave!</em></p>
<p><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/what-fraggle-rock-can-teach-you-about-the-art-of-letting-go/" rel="bookmark" title="December 1, 2008">What Fraggle Rock Can Teach You About The Art Of Letting Go</a></li>
<li><a href="http://www.codesqueeze.com/abstraction-is-for-both-humans-and-software-but-not-software/" rel="bookmark" title="September 29, 2008">Abstraction Is For Both Humans And Software, But Not Software</a></li>
<li><a href="http://www.codesqueeze.com/why-new-developers-should-consider-contracting/" rel="bookmark" title="October 22, 2008">Why New Developers Should Consider Contracting</a></li>
<li><a href="http://www.codesqueeze.com/the-illusion-of-technically-competent-managers/" rel="bookmark" title="May 26, 2008">The Illusion Of Technically Competent Managers</a></li>
<li><a href="http://www.codesqueeze.com/the-officers-vs-sergeants-syndrome/" rel="bookmark" title="November 19, 2007">The Officers vs. Sergeants Syndrome</a></li>
</ul>
<p><!-- Similar Posts took 4.332 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/burning-down-the-architect-title/">Burning Down the Architect Title</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fburning-down-the-architect-title%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fburning-down-the-architect-title%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/burning-down-the-architect-title/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Binding Software Patterns to Languages</title>
		<link>http://www.codesqueeze.com/binding-software-patterns-to-languages/</link>
		<comments>http://www.codesqueeze.com/binding-software-patterns-to-languages/#comments</comments>
		<pubDate>Tue, 07 Aug 2007 11:42:30 +0000</pubDate>
		<dc:creator>Max Pool</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://www.codesqueeze.com/binding-software-patterns-to-languages/</guid>
		<description><![CDATA[In the post Why Linguists Are True Code Artists I came to this realization:

&#8230;the maximum elegance of any solution is bound by the language that we use to create it.

While coding in Ruby, it was interesting to see Scott Belware had the revelation:

&#8230;design patterns are bound to the programming languages that express them.

I like this [...]<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/binding-software-patterns-to-languages/">Binding Software Patterns to Languages</a></p>
]]></description>
			<content:encoded><![CDATA[<p>In the post <a href="http://www.codesqueeze.com/why-linguists-are-true-code-artists/">Why Linguists Are True Code Artists</a> I came to this realization:</p>
<blockquote><p>
&#8230;the maximum elegance of any solution is bound by the language that we use to create it.
</p></blockquote>
<p>While coding in Ruby, it was interesting to see <a href="http://codebetter.com/blogs/scott.bellware/archive/2007/08/07/166498.aspx">Scott Belware had the revelation</a>:</p>
<blockquote><p>
&#8230;design patterns are bound to the programming languages that express them.
</p></blockquote>
<p>I like this thought as it is looking at the same concept from a higher level.</p>
<p><br/><br/><strong>Similar Posts:</strong>
<ul class="similar-posts">
<li><a href="http://www.codesqueeze.com/how-did-i-get-started-in-software-development/" rel="bookmark" title="September 8, 2008">How Did I Get Started In Software Development?</a></li>
<li><a href="http://www.codesqueeze.com/why-linguists-are-true-code-artists/" rel="bookmark" title="July 13, 2007">Why Linguists Are True Code Artists</a></li>
<li><a href="http://www.codesqueeze.com/abstraction-is-for-both-humans-and-software-but-not-software/" rel="bookmark" title="September 29, 2008">Abstraction Is For Both Humans And Software, But Not Software</a></li>
<li><a href="http://www.codesqueeze.com/squeezed-links-december-2007/" rel="bookmark" title="December 26, 2007">Squeezed Links: December 2007</a></li>
<li><a href="http://www.codesqueeze.com/forced-to-write-english-syntax-code-simplicity-or-burden/" rel="bookmark" title="April 21, 2008">Forced To Write English Syntax Code &#8211; Simplicity or Burden?</a></li>
</ul>
<p><!-- Similar Posts took 4.086 ms --></p>
<p><strong>[Advertisement]</strong> - Atlassian provides zero-friction <a href="http://www.atlassian.com/software/jira/">bug tracking</a> and <a href="http://www.atlassian.com/software/bamboo/">continuous integration</a> solutions for software development teams. Visit <a href="http://www.atlassian.com/">Atlassian</a> for free 30 day product trials. 
<hr/>
Copyright 2009 - <a href="http://www.codesqueeze.com/">{codesqueeze}</a> - <br/><br/><a href="http://www.codesqueeze.com/binding-software-patterns-to-languages/">Binding Software Patterns to Languages</a></p>
<div class="tweetmeme_button" style="margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.codesqueeze.com%2Fbinding-software-patterns-to-languages%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.codesqueeze.com%2Fbinding-software-patterns-to-languages%2F" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.codesqueeze.com/binding-software-patterns-to-languages/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

