<?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>AriasAmp</title>
	<atom:link href="http://www.ariasamp.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ariasamp.net</link>
	<description>Brent Arias chanting about software development</description>
	<lastBuildDate>Tue, 20 Dec 2011 00:31:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>The Cosmos Called&#8230;</title>
		<link>http://www.ariasamp.net/2011/04/the-cosmos-called/</link>
		<comments>http://www.ariasamp.net/2011/04/the-cosmos-called/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 08:01:55 +0000</pubDate>
		<dc:creator>Brent Arias</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[professional-development]]></category>
		<category><![CDATA[team-building]]></category>
		<category><![CDATA[team-work]]></category>

		<guid isPermaLink="false">http://www.ariasamp.net/?p=195</guid>
		<description><![CDATA[&#8230;am I being given a message?  In an apparent flash of the Baader-Meinhoff Phenomenon, I&#8217;ve suddenly had two encounters in two days with professional development institutions.  The first was an advertisement flashed on slacker.com for the Disney Institute, which has such course listings as &#8220;Disney&#8217;s Approach&#8221; to &#8220;Leadership Excellence&#8221; or &#8220;People Management.&#8221;  The second flash [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;am I being given a message?  In an apparent flash of the <a title="Like Deja-Vu, but real-ish." href="http://www.damninteresting.com/the-baader-meinhof-phenomenon">Baader-Meinhoff Phenomenon</a>, I&#8217;ve suddenly had two encounters in two days with professional development institutions.  The first was an advertisement flashed on slacker.com for the <a href="http://disneyinstitute.com/">Disney Institute</a>, which has such course listings as &#8220;Disney&#8217;s Approach&#8221; to &#8220;Leadership Excellence&#8221; or &#8220;People Management.&#8221;  The second flash was written on the cup held by a colleague in the office break room, advertising the <a href="http://www.chick-fil-aleadercast.com/">Chick-fil-A Leadercast</a>.  Both titles &#8220;Disney&#8221; and &#8220;Chick-fil-A&#8221; didn&#8217;t strike me instantly as fonts of divine wisdom, but it&#8217;s difficult to argue that successful businesses will indeed be venues for the sages.  But getting back to the coincidence&#8230;</p>
<p>I suppose the first ad was to be expected.  Those hidden corporate ties and browser cookie snoops likely gleaned that I&#8217;ve been looking at executive coaching books.  And I admit I just got done reading &#8220;<a href="http://www.amazon.com/s/ref=nb_sb_ss_i_0_27?url=search-alias%3Daps&amp;field-keywords=five+dysfunctions+of+a+team&amp;sprefix=five+dysfunctions+of+a+team">The Five Dysfunctions of a Team: A Leadership Fable</a>&#8221; by Patrick Lencioni, ordered online.  This is a book I&#8217;m so impressed with that, well, it&#8217;s the real reason I&#8217;m writing this post.  Normally I&#8217;d discuss hands-on technical or software development matters, but honestly far too much of project success depends on people issues.  I highly recommend, neigh, imperatively commend serious professionals to digest this book.  One of the Amazon reviewers outlined the five dysfunctions clearly, so rather than repeat that verbage here, I&#8217;ll simply high-light one point that greatly struck me.</p>
<p>Lencioni discusses how conflict in the office, often expressed as spirited arguments during meetings, are generally viewed distastefully in the U.S. corporate setting.  And the higher in the management chain the arguments occur, the higher the fear that such episodes will be viewed as a personal failing of management.  Thus there is a tendency to suppress arguments, either in duration or frequency &#8211; or perhaps forbid them altogether.  Lencioni explains that this policy or reaction is misguided, and reveals how suppressed argumentation actually causes much more harm and wasted time than is &#8220;saved&#8221; from bypassing them!  Obviously he recognizes and qualifies what constitutes a productive and non-productive argument, so that only the fruitful arguments occur and, ironically, occur regularly.</p>
<p>Having given this tidbit, now it&#8217;s time for me to turn my attention to the next &#8220;professional development&#8221; subtle hint from the universe.  If you are reading this post, it might be your subtle hint as well.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ariasamp.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ariasamp.net/2011/04/the-cosmos-called/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Review of Peer Reviews</title>
		<link>http://www.ariasamp.net/2011/03/review-peer-reviews/</link>
		<comments>http://www.ariasamp.net/2011/03/review-peer-reviews/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 03:30:52 +0000</pubDate>
		<dc:creator>Brent Arias</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[teams]]></category>

		<guid isPermaLink="false">http://www.ariasamp.net/?p=182</guid>
		<description><![CDATA[Software development fads come and go.  Whether technology or process, little remains constant it seems. Peer reviews, however, represent one of the exceptions.  By “peer review” we are, of course, talking about design reviews and code reviews performed by fellow developers.  But do these reviews really add value?  After all, peer reviews are part of [...]]]></description>
			<content:encoded><![CDATA[<p>Software development fads come and go.  Whether technology or process, little remains constant it seems. Peer reviews, however, represent one of the exceptions.  By “peer review” we are, of course, talking about design reviews and code reviews performed by fellow developers.  But do these reviews really add value?  After all, peer reviews are part of engineering process, and all too often developers note that process is a mixed bag for productivity.  Certainly most every team has a voice that decries peer reviews as counter-productive.</p>
<p>The truth is that value in peer reviews depends on two independent factors.  First, there is a correct and incorrect way to perform a peer reviews.  The studies which repeatedly show a significant positive impact from peer reviews, assume a specific model of how they are conducted.  Second, peer reviews require two elements of successful team dynamics. </p>
<p>Let’s look at both of these more carefully.</p>
<h2>Peer Reviews Done Right</h2>
<p>What many organizations call “peer reviews” are actually not.  Usually the term is misapplied for what is actually a “walk-through.”   The distinction pertains to both purpose and format, and has significant ramifications for quality and schedules.  Whenever possible it is peer reviews that should be exercised, not walkthroughs.  Let&#8217;s look closer at the differences.</p>
<p>In a walkthrough, the purpose is to impart familiarity with design or code to the rest of the team.  The format assumes the author presents the content as others listen and ask questions.   Besides the author, usually this is the first exposure anyone has to the materials.  There can be any number of participants, including management.</p>
<p>In a peer review, in contrast to a walkthrough, the purpose is to locate defects. </p>
<ul>
<li>&#8220;All participants prepare by reading the design or code and looking for errors&#8230;The emphasis is on error detection&#8221; (McConnell, p493)</li>
<li>&#8220;Code review is systematic examination (often as peer review) of computer source code intended to find and fix mistakes&#8221; Wikipedia, &#8220;Code Review.&#8221;</li>
<li>&#8220;An inspection in <a href="http://en.wikipedia.org/wiki/Software_engineering">software engineering</a>, refers to peer review of any work product by trained individuals who look for defects using a well defined process&#8221; Wikipedia, &#8220;Software Inspection&#8221;</li>
</ul>
<p>Other positive benefits are welcome, such as knowledge transfer and training, but are considered secondary in purpose.  The format assumes that someone other than the author conducts the review.  Furthermore, the materials being reviewed are sent (3 days) in advance of discussion.  Most of the reviewing work is done before participants gather together.  The optimal number of participants is three, including the author.  Management should not attend.</p>
<p>Again it must be emphasized, to achieve the advertised benefits of peer reviews, they must actually be peer reviews, not walkthroughs.  Don&#8217;t confuse the two!</p>
<h2>Team Considerations.</h2>
<p>If there is an objection to peer reviews, it usually centers on fear of judgment or personal attacks.  When this objection surfaces, it should be a red flag to managers of broader team problems. </p>
<p>For a team to be successful, the members must trust the others will not attack them personally.  If that trust exists, then fear of conflict subsides.  This does not mean that conflict does not happen but, rather, that no one takes debate personally.</p>
<p>This is not some kind of rarified dynamic that only applies to successful peer reviews.  It is a dynamic that teams need with or without peer reviews.  Thus if team-mates complain that peer reviews engender hostility that must be avoided, then there certainly is a meta-issue that should be addressed.</p>
<h2>Peer Reviews: The Benefits (ROI)</h2>
<p>The following bullet points drive home why peer reviews are not an empty procedure. Soak yourself in them.</p>
<ul>
<li>Identified as <a href="http://www.stsc.hill.af.mil/crosstalk/1996/08/industri.asp">one of 9 principle industry best practices </a>by the Airlie Software Council.  Examples <a href="http://www.stsc.hill.af.mil/crosstalk/1996/08/industri.asp">of corroborating results</a>:
<ul>
<li>Hewlett-Packard’s inspection program measured a return on investment of 10 to 1, saving an estimated $21.4 million per year. Design inspections reduced time to market by 1.8 months on one project</li>
<li>Inspections contributed to a ten-fold improvement in quality and a 14 percent increase in productivity at AT&amp;T Bell Laboratories</li>
<li>Inspecting 2.5 million lines of real-time code at Bell Northern Research prevented an average of 33 hours of maintenance effort per defect discovered</li>
<li>IBM reported that each hour of inspection saved 20 hours of testing and 82 hours of rework effort had the defects found by inspection remained in the released product</li>
<li>At Imperial Chemical Industries, the cost of maintaining a portfolio of about 400 programs that had been inspected was one-tenth the cost per line of code of maintaining a similar set of 400 uninspected programs</li>
</ul>
</li>
<li>“Typical organizations use test-heavy defect-removal and achieve only about 85% defect removal efficiency.  Leading organizations use a wider variety of techniques and achieve defect-removal efficiencies of 95%.” McConnell p470.</li>
<li>“Jones (“Software Defect-Removal Efficiency” 1996) points out that a combination of unit testing, functional testing, and system testing often results in a cumulative defect detection of less than 60 percent, which is usually inadequate for production software.” (p471).  Code inspection and test runs both produce about as much defect detections.  However, the variety of defects found vary sufficiently that a combination of both techniques produces almost double the defects detected (Myers 1978b [McConnell p 470]).</li>
<li><a href="http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html">Testimony of Jeff Atwood</a></li>
<li>FINDING: “A study at the Software Engineering Laboratory found that code reading detected about 80 percent more faults per hour than testing (Basili and  Selby 1987).  Another organization found that it cost six times as much to detect design defects by using testing as by using inspections (Ackerman, Buchwalk, and Lewski 1989).  A later study at IBM found that only 3.5 staff hours were needed to find each error when using code inspections, whereas 15-25 hours were needed to find each error through testing (Kaplan 1995). [McConnell, p470]</li>
<li>FIXING: Microsoft’s applications division has found that it takes three hours to find and fix a defect by using code inspections, a one-step technique, and 12 hours to find and fix a defect by using testing &#8211; which is a two-step technique (Moore 1992).  Collofello and Woodfield reported on a 700,000 line program built by over 400 developers (1989).  They found that code reviews were several times as cost-effective as testing – a 1.38 return on investment vs. 0.17. [McConnell, p471]</li>
</ul>
<h2>Final Notes</h2>
<p>Two more points should be made about successful peer reviews.  First, a peer review that does not identify defects – is suspect.  It usually means either that reviewers had insufficient review time, or that they haven&#8217;t the correct skill set to review the materials.  Second, peer reviews should not wait until the materials are complete.  Ideally the work of design or coding should be approximately 50% complete before being reviewed.  This gives time for redirection, if that is necessary.</p>
<p>If members of your team are reluctant to get started, even with all the compelling rationale, I suggest you make your own materials the first to be reviewed.  There’s nothing like leading by example.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ariasamp.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ariasamp.net/2011/03/review-peer-reviews/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Pedantic Programmer</title>
		<link>http://www.ariasamp.net/2010/11/the-pedantic-programmer/</link>
		<comments>http://www.ariasamp.net/2010/11/the-pedantic-programmer/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 03:00:25 +0000</pubDate>
		<dc:creator>Brent Arias</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[pedantic]]></category>
		<category><![CDATA[programmer]]></category>

		<guid isPermaLink="false">http://www.ariasamp.net/?p=66</guid>
		<description><![CDATA[For those who are not vocabulary buffs, let&#8217;s get our definitions straight: Pedantic: a narrow, often tiresome focus on or display of learning. And that is exactly what kind of programmer we&#8217;re going to examine today.   It is a symptom of being a mid-level developer, who over-zealously tries to use the techniques of a senior developer.  Certainly [...]]]></description>
			<content:encoded><![CDATA[<p>For those who are not vocabulary buffs, let&#8217;s get our definitions straight:</p>
<blockquote><p>Pedantic: a narrow, often tiresome focus on or display of learning.</p></blockquote>
<p>And that is exactly what kind of programmer we&#8217;re going to examine today.   It is a symptom of being a mid-level developer, who over-zealously tries to use the techniques of a senior developer. </p>
<p>Certainly some people, if you are fortunate, have no idea of what I&#8217;m talking about.  But to be clear, and to allow introspection for those of us who might need it, I will give a couple solid examples.  One example involves exception handling and the other involves the &#8216;foreach&#8217; statement.  These &#8220;are two basic topics,&#8221; you might say, so &#8220;what possible harm could someone do?&#8221;</p>
<h3>Pedantic Exception Handling</h3>
<p>I love <a href="http://www.codeproject.com/">CodeProject</a>.  If you are not already a fan, be sure to check it out.  It has countless fantastic articles, although it has <a href="http://www.codeproject.com/KB/cs/exceptions.aspx">one case of pedantism</a> which is fodder for this presentation.  That particular article summarizes by saying that when you see exception-handling code like this:</p>
<pre class="brush:csharp">public void AddBuddy( User buddy )
{
    m_buddies.Add( buddy );
    try        {
        ServerDB.AddBuddy( this, buddy )
    }
    catch( Exception ex )
    {
        m_buddies.Remove( buddy );
        throw ex;
    }
}</pre>
<p>It would be better if it were transformed into this:</p>
<pre class="brush:csharp">public void AddBuddy( User buddy )
{
    using ( ScopeGuard guard = new ScopeGuard() )
    {
        m_buddies.Add( buddy );
        ObjectGuard inserterGuard
            = ObjectGuard.Make( m_buddies, "Remove",
                        new object[] { buddy } );
        guard.Add( inserterGuard );
        ServerDB.AddBuddy( this, buddy );
        inserterGuard.Dismiss();
    }
}</pre>
<p>Why does the author claim the latter exception handling is better than the former? Well because the first example, the author states, has &#8220;reduced readability.&#8221;  The second example the author admits is annoying given the need &#8220;to pass the &#8216;Remove&#8217; method name&#8221; as untyped data, but overall he claims it &#8220;is more elegant and more practical than the usual try, catch and finally triad.&#8221;  He goes on &#8220;of course, there will be a performance hit due to the use of reflection.&#8221;</p>
<p>He must be a comedian.</p>
<p>Almost all developers understand how the exception handling works in the the first example.  In contrast, nobody but the author knows what on earth the second example is doing and yet<em> the two examples are functionally equivalent.</em>  The truth is, the author just wanted to show he knows how to use reflection. That is what makes it pedantic, and a detriment to the team who is confronted with the noise in the product code.</p>
<p>But let&#8217;s take one more example.</p>
<h3>Pedantic Looping</h3>
<p>Many developers are taking quickly to LINQ functionality in C#.  It&#8217;s powerful stuff.  And it is also an opportunity for the pedantic programmer to show-off needlessly.  Indeed, I&#8217;ve seen cases where programmers have endeavered to replace the &#8220;foreach&#8221; statement with an extension method.  In other words, instead of doing this:</p>
<pre class="brush:csharp">foreach(MyClass aClass in MyCollection) {aClass.DoSomething;};</pre>
<p>An alternative is proposed suggesting we should instead do this:</p>
<pre class="brush:csharp">MyCollection.ForEach((MyClass aClass)=&gt;{ aClass.DoSomething; });</pre>
<p>I&#8217;m much relieved to see that <a href="http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx">Microsoft&#8217;s C# team has dismissed the idea</a>, but of course that won&#8217;t stop the pedantics from writing that &#8216;ForEach&#8217; extension, to show-off their ability to write extension methods and use lambdas.  The rest of us must simply navigate around the nonsense when reading such code.</p>
<h3>Conclusion</h3>
<p>Perhaps we proud programmers are all pedantic to some degree.  But certainly it is good to be reminded of the KISS principle, and to focus our talents on solving problems rather than making <a href="http://dondodge.typepad.com/the_next_big_thing/2005/10/solutions_looki.html">solutions looking for a problem</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ariasamp.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ariasamp.net/2010/11/the-pedantic-programmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No School Like The Old School</title>
		<link>http://www.ariasamp.net/2010/10/no-school-like-the-old-school/</link>
		<comments>http://www.ariasamp.net/2010/10/no-school-like-the-old-school/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 02:52:50 +0000</pubDate>
		<dc:creator>Brent Arias</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.ariasamp.net/?p=50</guid>
		<description><![CDATA[Us technology wonks are often so geared towards the latest and newest, that we forget or overlook superior solutions from yesteryear. I am, for example, intrigued that it is nearly impossible to find a developer who knows what a &#8220;priority queue&#8221; is. Instead I&#8217;ve seen a number of bad attempts to solve the pertinent problem [...]]]></description>
			<content:encoded><![CDATA[<p>Us technology wonks are often so geared towards the latest and newest, that we forget or overlook superior solutions from yesteryear. I am, for example, intrigued that it is nearly impossible to find a developer who knows what a &#8220;priority queue&#8221; is. Instead I&#8217;ve seen a number of bad attempts to solve the pertinent problem with ill-suited new technologies.</p>
<p>Of course, as Billy Joel sang &#8220;the good old days weren&#8217;t always good.&#8221; But achieving the best result certainly comes from a judicious balance of old and new. Just how profound that can be is amusingly apparent when considering <a href="http://www.guardian.co.uk/world/2010/oct/24/bees-route-finding-problems" target="_blank">the ability of a bee to solve the &#8220;traveling salesman&#8221; problem</a>. Just how old are those computers the bees are using?</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ariasamp.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ariasamp.net/2010/10/no-school-like-the-old-school/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebMatrix: The New &#8220;Easy?&#8221;</title>
		<link>http://www.ariasamp.net/2010/10/webmatrix-the-new-easy/</link>
		<comments>http://www.ariasamp.net/2010/10/webmatrix-the-new-easy/#comments</comments>
		<pubDate>Sat, 23 Oct 2010 04:08:41 +0000</pubDate>
		<dc:creator>Brent Arias</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.ariasamp.net/?p=48</guid>
		<description><![CDATA[Having done a great deal of professional web development, I have often marvelled how much effort is necessary to achieve acceptable results. I&#8217;ve subsequently cultivated a taste for tools and app leveraging (e.g. Joomla, WordPress).  Now I&#8217;m contemplating WebMatrix, which went beta this summer.  I may just replace my &#8220;Google Sites&#8221; based blog with a [...]]]></description>
			<content:encoded><![CDATA[<p>Having done a great deal of professional web development, I have often marvelled how much effort is necessary to achieve acceptable results. I&#8217;ve subsequently cultivated a taste for tools and app leveraging (e.g. Joomla, WordPress).  Now I&#8217;m contemplating WebMatrix, which went beta this summer.  I may just replace my &#8220;Google Sites&#8221; based blog with a <a href="http://drewby.com/2010/08/a-wordpress-blog-in-15-minutes-with-webmatrix/" target="_blank">WordPress site made with WebMatrix</a>.  For thos interested, take a look at a more official <a href="http://weblogs.asp.net/scottgu/archive/2010/07/06/introducing-webmatrix.aspx" target="_blank">introduction to WebMatrix</a>.</p>
<p>I&#8217;ll be tinkering&#8230;</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ariasamp.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ariasamp.net/2010/10/webmatrix-the-new-easy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Breaking The Age Barrier</title>
		<link>http://www.ariasamp.net/2010/08/breaking-the-age-barrier/</link>
		<comments>http://www.ariasamp.net/2010/08/breaking-the-age-barrier/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 05:37:52 +0000</pubDate>
		<dc:creator>Brent Arias</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.ariasamp.net/?p=28</guid>
		<description><![CDATA[An article at TechCrunch discusses how developer age influences hiring. The point that employers must revisit, the article states, is that &#8220;with age frequently come wisdom and abilities to follow direction, mentor, and lead. Older workers also tend to be more pragmatic and loyal, and to know the importance of being team players.&#8221; This notion [...]]]></description>
			<content:encoded><![CDATA[<p>An article at TechCrunch discusses how <a href="http://techcrunch.com/2010/08/28/silicon-valley%E2%80%99s-dark-secret-it%E2%80%99s-all-about-age/" target="_blank">developer age influences hiring</a>. The point that employers must revisit, the article states, is that &#8220;with age frequently come wisdom and abilities to follow direction, mentor, and lead. <strong>Older workers also tend to be more pragmatic and loyal, and to know the importance of being team players</strong>.&#8221; This notion of pragmatism I think is well captured by another article I&#8217;m fond of, &#8220;<a href="http://razingtheivorytower.blogspot.com/2009/09/complexity-is-enemy-and-srp-is-his.html">Complexity is the Enemy</a>&#8221; which had another choice commentary:</p>
<blockquote style="margin-right: 0px;"><p>After some time we move into the role of mid-level software engineer. We&#8217;ve been through a few projects and we&#8217;ve built up confidence and spent a lot of time reading books and articles about software engineering, best practices, and the design principle/pattern of the day. We&#8217;re ready to rocket ahead and show everyone around us how smart we really are &#8211; that we&#8217;re not juniors anymore.<br />
In other words, we&#8217;re now ready to do real harm.</p></blockquote>
<p>I certainly acknowledge that many older developers may sink into technical apathy, but I think &#8220;older with experience&#8221; is still a prime place to find the greatest developers.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ariasamp.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ariasamp.net/2010/08/breaking-the-age-barrier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better Integration Testing With .Net</title>
		<link>http://www.ariasamp.net/2010/08/better-integration-testing-with-net/</link>
		<comments>http://www.ariasamp.net/2010/08/better-integration-testing-with-net/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 05:01:24 +0000</pubDate>
		<dc:creator>Brent Arias</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.ariasamp.net/?p=42</guid>
		<description><![CDATA[Virtual Machines are amazing, but for my &#8220;rapid&#8221; integration testing needs I wanted something even better. So I was preparing to make my enterprise server &#8220;instantiable,&#8221; for the purpose of having several servers run in a single process. That is when I stumbled on an article about having entire applications run in an appdomain. I [...]]]></description>
			<content:encoded><![CDATA[<p>Virtual Machines are amazing, but for my &#8220;rapid&#8221; integration testing needs I wanted something even better. So I was preparing to make my enterprise server &#8220;instantiable,&#8221; for the purpose of having several servers run in a single process. That is when I stumbled on an article about having entire <a href="http://www.drdobbs.com/184405853;jsessionid=VQ1FBYMTHDGU5QE1GHRSKH4ATMY32JVN" target="_blank">applications run in an appdomain</a>. I had already been using appdomains heavily via the System.Addin namespace (for plugins), but it had not previously occurred to me to launch executables in an appdomain.</p>
<p>What the article did not explain is that each appdomain you create (even those created recursively, as in my case) must be explicitly unloaded before terminating the process &#8211; to create a clean execution environment. But I finally got it working, and now I&#8217;m able to run dozens of inter-linked servers through scores of full-blown integration tests in seconds, and all from within a single process, on a single machine, launched from my Visual Studio unit-test IDE.</p>
<p>Now that is cool!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ariasamp.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ariasamp.net/2010/08/better-integration-testing-with-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Right Way to Build a Video Game</title>
		<link>http://www.ariasamp.net/2010/08/the-right-way-to-build-a-video-game/</link>
		<comments>http://www.ariasamp.net/2010/08/the-right-way-to-build-a-video-game/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 06:30:28 +0000</pubDate>
		<dc:creator>Brent Arias</dc:creator>
				<category><![CDATA[Video Game Development]]></category>

		<guid isPermaLink="false">http://www.ariasamp.net/?p=14</guid>
		<description><![CDATA[A long while ago I found an article about making a video game for a cell phone.  It caught my attention because it exactly captured my sentiment about a successful IGD strategy. In order: Make the level-editor before the game prototype. Next, make a prototype &#8211; do not make a game engine. Finally, get some [...]]]></description>
			<content:encoded><![CDATA[<p>A long while ago I found an article about <a href="http://www.gamedev.net/reference/articles/article2570.asp">making a video game for a cell phone</a>.  It caught my attention because it exactly captured my sentiment about a successful IGD strategy. In order:</p>
<ol>
<li>Make the level-editor before the game prototype.</li>
<li>Next, make a prototype &#8211; do not make a game engine.</li>
<li>Finally, get some graphics in to help keep motivated.</li>
</ol>
<p><br/><br />
Normally such &#8220;making of&#8221; articles discuss technical or game design details. So it was nice to see this particular departure offering such &#8220;attack strategy&#8221; wisdom. The article had other excellent advice as well.  A worthwhile read.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.ariasamp.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.ariasamp.net/2010/08/the-right-way-to-build-a-video-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

