<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>The Nomadic Developer &#187; Uncategorized</title>
	<atom:link href="http://nomadic-developer.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://nomadic-developer.com</link>
	<description>Surviving and Thriving in the World of Technology Consulting</description>
	<lastBuildDate>Thu, 19 Jan 2012 20:39:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='nomadic-developer.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>The Nomadic Developer &#187; Uncategorized</title>
		<link>http://nomadic-developer.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nomadic-developer.com/osd.xml" title="The Nomadic Developer" />
	<atom:link rel='hub' href='http://nomadic-developer.com/?pushpress=hub'/>
		<item>
		<title>The Link Between Continuous Delivery and Agile</title>
		<link>http://nomadic-developer.com/2011/11/01/the-link-between-continuous-delivery-and-agile/</link>
		<comments>http://nomadic-developer.com/2011/11/01/the-link-between-continuous-delivery-and-agile/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 15:07:41 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=208</guid>
		<description><![CDATA[Now that Agile has passed the 10-year mark, many people are starting to wonder what the next step should be in the evolution of Agile. As we start to think about what&#8217;s next, it doesn&#8217;t hurt to think for a moment about how we got here in the first place. As the saying goes, it&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=208&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Now that Agile has passed the 10-year mark, many people are starting to wonder what the next step should be in the evolution of Agile. As we start to think about what&#8217;s next, it doesn&#8217;t hurt to think for a moment about how we got here in the first place. As the saying goes, it&#8217;s hard to know where you&#8217;re going if you don&#8217;t know where you&#8217;ve been!</p>
<p>So let&#8217;s turn back the clock through the mists of time in the years leading to the <a href="http://agilemanifesto.org/">Agile Manifesto</a> in 2001. Back when this movement started, many of the &#8220;reasons for Agile&#8221; just seemed very intuitive. People over process? Sure. Responding to change versus following a predefined plan? Common sense. On the surface, few people would disagree with the assertions made in the Agile Manifesto. But is that enough? Can you following the Manifesto—do it all by the book—and be guaranteed to create software that delivers economic benefit? No. <em>By itself, Agile doesn&#8217;t lead to business value!</em></p>
<h2>How Can By-the-Book-Agile Fail?</h2>
<p>Let&#8217;s be clear. With its increased collaboration with the customer, more frequent releases, and increased engineering and testing discipline, Agile makes delivering value <em>more likely</em>. It&#8217;s certainly a vast improvement over multi-year &#8220;<a href="http://www.informit.com/articles/article.aspx?p=1748768">too big to fail</a>&#8221; Waterfall software projects. But even if you do everything right, even if you have the best practitioners in the world building your product, you can still create a product that fails to make money.</p>
<p>Agile—and here we mean the kind that includes the right engineering practices, such as test-driven development (TDD), pairing, SOLID principles, automated acceptance testing, and continuous integration—will ensure that you create a product that works&#8230;in the lab, at least. However, despite your best efforts, you might build a very functional eCommerce site that tries to sell something that nobody really wants. Or you might build an internal application that can&#8217;t go beyond the lab because the operations people can&#8217;t support it in production. These issues—and many other things outside direct control of the team practicing Agile—can thwart even your best efforts.</p>
<p>Article <a href="http://www.informit.com/articles/article.aspx?p=1758809&amp;seqNum=3">continues here</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=208&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2011/11/01/the-link-between-continuous-delivery-and-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Everybody’s Doing Agile&#8211;Why Can’t We?</title>
		<link>http://nomadic-developer.com/2011/08/08/everybody%e2%80%99s-doing-agile-why-can%e2%80%99t-we/</link>
		<comments>http://nomadic-developer.com/2011/08/08/everybody%e2%80%99s-doing-agile-why-can%e2%80%99t-we/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 15:17:16 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=201</guid>
		<description><![CDATA[Have you gone Agile? What are you doing this year to become Agile? We must become Agile in the next three months! These days, it is not unusual to hear about executives wanting to do an “Agile Transformation” on the entire company. Who knew that a bunch of relatively obscure techies would create a movement [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=201&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Have you gone Agile? What are you doing this year to become Agile? We must become Agile in the next three months! These days, it is not unusual to hear about executives wanting to do an “Agile Transformation” on the entire company. Who knew that a bunch of relatively obscure techies would create a movement that is now the lingua franca of executives who are attempting to turn around companies! Agile really has “come a long way, baby.”</p>
<p>It’s amazing how things change in ten years. Once considered a methodology preferred by software developers because it “helped them avoid having to do status reports,” Agile has now gone beyond its original remit as a software development method. The word Agile, in many places, has become nearly synonymous with the word Good. As flattering this must be to the original founders, it probably means it would be wise to think, very candidly, whether Agile—as in Agile Software Development, or a broader Agile Enterprise—is really something that your company can achieve.</p>
<p>Read the rest of this article <a href="http://www.informit.com/articles/article.aspx?p=1743015">at InformIT here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=201&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2011/08/08/everybody%e2%80%99s-doing-agile-why-can%e2%80%99t-we/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Welcome to the Revenge of The Nerds Economy</title>
		<link>http://nomadic-developer.com/2011/06/15/welcome-to-the-revenge-of-the-nerds-economy/</link>
		<comments>http://nomadic-developer.com/2011/06/15/welcome-to-the-revenge-of-the-nerds-economy/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 22:43:30 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=195</guid>
		<description><![CDATA[Many of you will remember Revenge of The Nerds, that fine classic movie where a bunch of, well, nerds take over the campus of Adams college by outsmarting and outwitting the jocks. For people who work in computers of a certain age and disposition &#8211; say, a late 30s geek from a western culture like [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=195&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Many of you will remember Revenge of The Nerds, that fine classic movie where a bunch of, well, nerds take over the campus of Adams college by outsmarting and outwitting the jocks. For people who work in computers of a certain age and disposition &#8211; say, a late 30s geek from a western culture like myself who might have fit the nerd stereotype at various points in his early upbringing &#8211; the movie was somewhat influential. It told a story that, translated into economist-speak, equates to &#8220;intellectual capital may someday trump other kinds in terms of economic value creation.&#8221;</p>
<p>As it seems to have turned out, we are now in the Revenge of The Nerds economy. Despite 9%+ unemployment in the general economy, <a href="http://www.marketwatch.com/story/technology-is-killing-some-tech-jobs-2011-02-18">overall unemployment for software engineers is a tad below 5%</a>. But this data, which is compelling enough, does not tell the entire story.</p>
<p>The bigger story is around what kinds of things are seeing investment. There is talk of another bubble right now in technical startups. If you are a technology based startup that has reached “<a href="http://www.paulgraham.com/ramenprofitable.html">Ramen Profitability</a>”, you will almost certainly attract capital. Things are now even getting to the point where we are seeing companies that lack profits going to the IPO market (think Pandora and Groupon) &#8211; something that has been out of vogue since at least 2001. One could make the case that we will soon cross the line where it is easier to get a startup funded than it is to get a jumbo mortgage.</p>
<p>If you work in tech, there is a good chance you are feeling this, at least if you are currently employed and working for an employer that has some level of visibility. If you work for Google, Facebook, or some other high tech company, you likely do not have to work that hard to get a new job offer. Notwithstanding the cruel irony that <a href="http://www.huffingtonpost.com/2010/06/04/disturbing-job-ads-the-un_n_600665.html">people who are unemployed are often being systemically discriminated against</a>, the job market for really good, currently employed software developers is as robust has it has been in 10 years.</p>
<p>So if the nerds are all right, mostly, what about the jocks? What occupations did they end up in? While some of them may have made it to the NFL as professional football players, most others end up in spilling into the general job market. While the stereotype is that jocks end up in menial jobs, construction, or manufacturing; research being hard to find, my own experience of knowing several such folk points to careers tending to be sales, low-end finance (think mortgages), real estate, and personal training. Given, a sample size of a couple dozen doesn’t really prove anything. However, if one did extrapolate, one could come to a conjecture that while “jocks” for lack of a better word, do not do worse then average now, the nerd/jock investment and employment dynamic has changed.</p>
<p>Why the change? Now that simply taking big leveraged risks with a big pile of money isn’t in fashion (i.e., as it was before the global financial crisis), you need advantages from superior intellectual capital in order to sustain a higher than mean return on investment. Why not in fashion? From 2003-2008, it was accepted that financial engineering was the way to riches. If you only structured your collateralized debt obligation in the correct way, you could invest at 40x leverage and still retain a AAA rating on your debt. Financial engineering gave you higher profits under such a regime than traditional “engineering engineering” could provide. So money flowed into CDS structures and away from the nerdy parts of the economy that invents things.</p>
<p>So now we find ourselves in an economy where capital flocks to things like Pandora, Groupon, Facebook, Linkedin, and other things that, at their core, have interesting algorithms inside them. And we have a situation where if you are a developer capable of writing an interesting and valuable algorithm &#8211; or helping a company scale out a system that leverages one of these inventions, you are in high demand.</p>
<p>Good thing for the nerds. What this means for everyone else remains to be seen.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/195/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=195&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2011/06/15/welcome-to-the-revenge-of-the-nerds-economy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Upper Management Support the Key to Success? No.</title>
		<link>http://nomadic-developer.com/2010/07/19/upper-management-support-the-key-to-success-no/</link>
		<comments>http://nomadic-developer.com/2010/07/19/upper-management-support-the-key-to-success-no/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 15:05:59 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=154</guid>
		<description><![CDATA[You have heard this one before.  They key to project success is &#8220;Upper Management Support&#8221;.  I hear the phrase so much it is pretty much a cliche, right up there with &#8220;be aligned with the business&#8221;.  It ranks right up there with &#8220;brush your teeth in the morning&#8221; and &#8220;exercise if you want to be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=154&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>You have heard this one before.  They key to project success is &#8220;Upper Management Support&#8221;.  I hear the phrase so much it is pretty much a cliche, right up there with &#8220;be aligned with the business&#8221;.  It ranks right up there with &#8220;brush your teeth in the morning&#8221; and &#8220;exercise if you want to be healthy&#8221;.</p>
<p>So I have a humble request.  First of all, I think we can just start assuming that if you have a goal that requires more than, say, the amount of money you spend annually on copiers in a small office annually, you are going to need upper management support.  Especially if it is going to change the business.  If you are engaging on a &#8220;change the company for the better initiative&#8221;, getting upper management support is basically the first, and one of the easier, steps.</p>
<ul>
<li>The real hard stuff isn&#8217;t upper management, it&#8217;s middle management.  Upper management does not usually have their empires or jobs threatened by a significant IT initiative.  Middle management, on the other hand, often does.</li>
<li>The day to day impact of a large programme on the lives of upper management is comparatively low.  Most of the time, they can get on with their normal duties and continue to operate at the &#8220;strategic&#8221; level rather than hands on.  Middle management, on the other hand, often has to expend significant time, energy, and political capital in the programme in order to make sure it works.</li>
<li>The numbers of people in upper management are lower, well, because they are upper management.  You can more easily get a small number of people on the same page.  Middle management numbers are much higher, and making the politics of middle management engagement much more difficult.</li>
<li>Various groups in middle management that are impacted unevenly create opportunities for internecine politics to enter the scene.  Even if you get middle management engagement, keeping it is a much more difficult chore.</li>
</ul>
<p>There are all sorts of things you need in order to make a large programme of transformational work successful.  Upper management support is just the &#8220;table stakes&#8221; &#8211; the ante for getting to the table.  Getting support of middle management, and getting past the many roadblocks they can put in your way, is much harder, frequently underestimated, and frankly, in my experience, much more of a project success factor.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=154&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2010/07/19/upper-management-support-the-key-to-success-no/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>F# Based Discriminated Union/Structural Similarity</title>
		<link>http://nomadic-developer.com/2010/04/08/f-based-discriminated-unionstructural-similarity/</link>
		<comments>http://nomadic-developer.com/2010/04/08/f-based-discriminated-unionstructural-similarity/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 22:45:04 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=143</guid>
		<description><![CDATA[Imagine you have a need to take one type, which may or may not be a discriminated union, and see if it &#8220;fits&#8221; inside of another type.  A typical case might be whether one discriminated union case would be a possible case for a different discriminated union.  That is, could the structure of type A [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=143&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Imagine you have a need to take one type, which may or may not be a discriminated union, and see if it &#8220;fits&#8221; inside of another type.  A typical case might be whether one discriminated union case would be a possible case for a different discriminated union.  That is, could the structure of type A fit into the structure of type B.  For lack of a better word, I am calling this &#8220;structural similarity&#8221;.</p>
<p>Lets start with some test cases:</p>
<blockquote>
<pre>module UnionTypeStructuralComparisonTest
open StructuralTypeSimilarity
open NUnit.Framework

type FooBar =
 | Salami of int
 | Foo of int * int
 | Bar of string

type FizzBuz =
 | Toast of int
 | Zap of int * int
 | Bang of string

type BigOption =
 | Crap of int * int
 | Bang of string
 | Kaboom of decimal

type Compound =
 | Frazzle of FizzBuz * FooBar
 | Crapola of double

[&lt;TestFixture&gt;]
type PersonalInsultTestCase() =

 [&lt;Test&gt;]
 member this.BangCanGoInFooBar() =
 let bang = Bang("I like cheese")
 Assert.IsTrue(bang =~= typeof&lt;FizzBuz&gt;)
 Assert.IsTrue(bang =~= typeof&lt;FooBar&gt;)
 Assert.IsTrue(bang =~= typeof&lt;BigOption&gt;)

 [&lt;Test&gt;]
 member this.KaboomDecimalDoesNotFitInFizzBuz() =
 let kaboom = Kaboom(45m)
 Assert.IsFalse(kaboom =~= typeof&lt;FizzBuz&gt;)

 [&lt;Test&gt;]
 member this.SomeStringCanBeFooBar() =
 let someString = "I like beer"
 Assert.IsTrue(someString =~= typeof&lt;FooBar&gt;)

 [&lt;Test&gt;]
 member this.SomeFoobarCanBeString() =
 let someFoobar = Bar("I like beer")
 Assert.IsTrue(someFoobar =~= typeof&lt;string&gt;)

 [&lt;Test&gt;]
 member this.SomeFoobarTypeCanBeString() =
 Assert.IsTrue(typeof&lt;FooBar&gt; =~= typeof&lt;string&gt;)

 [&lt;Test&gt;]
 member this.CompoundUnionTest() =
 let someCompound = Frazzle(Toast(4),Salami(2))
 Assert.IsTrue(someCompound =~= typeof&lt;FooBar&gt;)</pre>
</blockquote>
<p>To make this work, we are going to need to implement our =~= operator, and then do some FSharp type-fu in order to compare the structure:</p>
<blockquote>
<pre>module StructuralTypeSimilarity

open System
open Microsoft.FSharp.Reflection
open NLPParserCore

let isACase (testUnionType:Type) =
 testUnionType
 |&gt; FSharpType.GetUnionCases
 |&gt; Array.exists(fun u -&gt; u.Name = testUnionType.Name)
let caseToTuple (case:UnionCaseInfo) =
 let fields = case.GetFields()
 if fields.Length &gt; 1 then
 fields
 |&gt; Array.map( fun pi -&gt; pi.PropertyType )
 |&gt; FSharpType.MakeTupleType
 else
 fields.[0].PropertyType 

let rec UnionTypeSourceSimilarToTargetSimpleType (testUnionType:Type) (targetType:Type) =
 if (testUnionType |&gt; FSharpType.IsUnion)
   &amp;&amp; (not (targetType |&gt; FSharpType.IsUnion)) then
 if testUnionType |&gt; isACase then
 let unionType = testUnionType
  |&gt; FSharpType.GetUnionCases
  |&gt; Array.find(fun u -&gt; u.Name = testUnionType.Name)
 let myCaseType = caseToTuple unionType
 myCaseType =~= targetType
 else
 testUnionType
 |&gt; FSharpType.GetUnionCases
 |&gt; Array.map( fun case -&gt; (case |&gt; caseToTuple) =~= targetType )
 |&gt; Array.exists( fun result -&gt; result )
 else
 raise( new InvalidOperationException() )

and UnionTypeSourceSimilarToUnionTypeTarget (testUnionType:Type) (targetUnionType:Type) =
 if (testUnionType |&gt; FSharpType.IsUnion)
  &amp;&amp; (targetUnionType |&gt; FSharpType.IsUnion) then
 if testUnionType |&gt; isACase then
 targetUnionType
 |&gt; FSharpType.GetUnionCases
 |&gt; Array.map( fun u -&gt; u |&gt; caseToTuple )
 |&gt; Array.map( fun targetTuple -&gt; testUnionType =~= targetTuple )
 |&gt; Array.exists( fun result -&gt; result )
 else
 testUnionType
 |&gt; FSharpType.GetUnionCases
 |&gt; Array.map( fun case -&gt; (case |&gt; caseToTuple) =~= targetUnionType )
 |&gt; Array.exists( fun result -&gt; result )
 else
 raise( new InvalidOperationException() )

and SimpleTypeSourceSimilarToUnionTypeTarget (testSimpleType:Type) (targetUnionType:Type) =
 if (not (testSimpleType |&gt; FSharpType.IsUnion))
  &amp;&amp; (targetUnionType |&gt; FSharpType.IsUnion) then
 targetUnionType
 |&gt; FSharpType.GetUnionCases
 |&gt; Array.map( fun u -&gt; u |&gt; caseToTuple )
 |&gt; Array.map( fun targetTuple -&gt; testSimpleType =~= targetTuple )
 |&gt; Array.exists( fun result -&gt; result )
 else
 raise( new InvalidOperationException() )

and SimpleTypeSourceSimilarToSimpleTypeTarget (testSimpleType:Type) (targetSimpleType:Type) =
 if (testSimpleType |&gt; FSharpType.IsTuple) &amp;&amp; (targetSimpleType |&gt; FSharpType.IsTuple) then
 let testTupleTypes = testSimpleType |&gt; FSharpType.GetTupleElements
 let targetTupleTypes = targetSimpleType |&gt; FSharpType.GetTupleElements
 if testTupleTypes.Length = targetTupleTypes.Length then
 let matches = Array.zip testTupleTypes targetTupleTypes
 |&gt; Array.map( fun(test,target) -&gt; test =~= target )
 not (matches |&gt; Array.exists( fun result -&gt; not result ))
 else
 false
 else
 testSimpleType = targetSimpleType

and (=~=) (testObject:obj) (targetType:Type) =
 let objIsType (o:obj) =
 match o with
 | :? Type -&gt; true
 | _ -&gt; false

 let resolveToType (o:obj) =
 match objIsType o with
 | true -&gt; o :?&gt; Type
 | false -&gt; o.GetType()
 let testObjectIsAType = testObject |&gt; objIsType
 let testObjectTypeIsUnion =
 match testObjectIsAType with
 | true -&gt; testObject |&gt; resolveToType |&gt; FSharpType.IsUnion
 | false -&gt; false
 let targetTypeIsAUnion = targetType |&gt; FSharpType.IsUnion 

 let resolvedType = testObject |&gt; resolveToType

 match testObjectIsAType,testObjectTypeIsUnion,targetTypeIsAUnion with
 | false, _, _ -&gt; resolvedType =~= targetType
 | true,true,false -&gt; UnionTypeSourceSimilarToTargetSimpleType resolvedType targetType
 | true,false,false -&gt; SimpleTypeSourceSimilarToSimpleTypeTarget resolvedType targetType
 | true,true,true -&gt; UnionTypeSourceSimilarToUnionTypeTarget resolvedType targetType
 | true,false,true -&gt; SimpleTypeSourceSimilarToUnionTypeTarget resolvedType targetType</pre>
</blockquote>
<p>Getting this to work seemed harder than it should.  While my tests pass, I am sure there are both cases I have not yet covered, and probably some simpler ways I could accomplish some of the same goals.</p>
<p>While this is a work in progress, if anyone has any thoughts for simpler ways to do something like this, I am all ears.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=143&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2010/04/08/f-based-discriminated-unionstructural-similarity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Just Make Me Think! The Best Technologies Force Hard Choices.</title>
		<link>http://nomadic-developer.com/2010/03/26/make-me-think/</link>
		<comments>http://nomadic-developer.com/2010/03/26/make-me-think/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 11:51:43 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=135</guid>
		<description><![CDATA[In thinking about what is so compelling about certain new technologies that have emerged in recent years, a common theme is starting to emerge.  The best technologies don&#8217;t just do something useful, but they make the user think about the right things that lead to better designs and more robust software.  Lets start by thinking [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=135&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In thinking about what is so compelling about certain new technologies that have emerged in recent years, a common theme is starting to emerge.  The best technologies don&#8217;t just do something useful, but they make the user think about the right things that lead to better designs and more robust software.  Lets start by thinking about some of the most compelling technologies or techniques that have had a lot of buzz in the last couple years:</p>
<p><strong><span style="text-decoration:underline;">Dependency Injection</span></strong></p>
<p>Dependency injection is a great technique for being able to manage coupling.  At least it is in practice.  But there is nothing that would stop you from using dependency injection to, say, create a giant class and inject thirtyteen-hundred dependencies in it and giving yourself a maintenance nightmare.</p>
<p><strong>What is important about dependency injection, is that it makes you think about dependencies.</strong> When I am writing code, I want creating a dependency from one class to another to hurt.  Not a lot, but enough that it makes me put an entry in a file somewhere &#8211; be it an xml config, or a module, or something.  A DI tool that wires everything up for me without me having to explicitly think about it each time &#8211; well, that is to me like an HR management tool that does not have an &#8220;are you sure&#8221; prompt on the &#8220;fire employee&#8221; button.</p>
<p><strong><em><span style="font-style:normal;"><span style="text-decoration:underline;">Continuous Integration</span></span></em></strong></p>
<p><strong><em><span style="font-style:normal;font-weight:normal;">Continuous Integration tools do some nifty things, one of the most important being providing some visibility to the state of the code.  When properly implemented, the benefits are pretty staggering.  However, in my experience, </span><span style="font-style:normal;">one of the most important benefits is that Continuous Integration forces you to think about how to automate the deployment process. </span><span style="font-style:normal;font-weight:normal;">You can&#8217;t continuously integrate if some person has to flip the bozo bit in order for the build to work.  CI promotes a model that makes tools that require human intervention to install seem obsolete.  I can&#8217;t see this as a bad thing.</span></em></strong></p>
<p><strong><em><span style="font-style:normal;"><span style="text-decoration:underline;">Functional Programming</span></span></em></strong></p>
<p>Most anyone who knows me in a professional context knows I am a big fan of functional programming.  I have grown to like the syntax and expressibility of languages like F#, and there are a great many reasons why the language is important.  But to me, <strong>the most striking is that functional languages make you think long and hard about state</strong>.  You can do state in F# (through the mutable keyword) &#8211; even in pure functional programming languages like Haskell if you implement a state monad.  But the important thing here is that <em>you have to do significant work</em> to create state in these languages.  That leads to choices about state that tend to be more mindful than in languages where state is the default.</p>
<p>I could talk through more examples, but I think you get the picture.  The opposite tends to hold true as well &#8211; my main issue with a technology like ASP.NET Webforms is that it makes certain things easy (ViewState, notably) that it should not, in order to help you avoid having to think about the fact that you are running an application over a stateless medium.  When you are considering a new technology that is emerging &#8211; don&#8217;t think features, think <em>&#8220;What choices is this technology forcing me to make?&#8221; </em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=135&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2010/03/26/make-me-think/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Why IT Matters More Than Ever</title>
		<link>http://nomadic-developer.com/2010/01/25/why-it-matters-more-than-ever/</link>
		<comments>http://nomadic-developer.com/2010/01/25/why-it-matters-more-than-ever/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 22:17:49 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=129</guid>
		<description><![CDATA[In 2003, Harvard Business Review published Nick Carr&#8217;s seminal essay, &#8220;IT Doesn&#8217;t Matter.&#8221; I remember that month well. The previous years of the PC boom, followed by the dotcom boom, had seen a tidal wave of money spent on technology. Much money was wasted on heavy investment in systems that either sat unused on a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=129&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In 2003, <em>Harvard Business Review</em> published <a href="http://www.nicholasgcarr.com/articles/matter.html">Nick Carr&#8217;s seminal essay</a>, &#8220;IT Doesn&#8217;t Matter.&#8221; I remember that month well. The previous years of the PC boom, followed by the dotcom boom, had seen a tidal wave of money spent on technology. Much money was wasted on heavy investment in systems that either sat unused on a shelf, or ultimately were scrapped. To top it all off, the big &#8220;emergency&#8221; of the time, the <a href="http://en.wikipedia.org/wiki/Year_2000_problem">millennium bug</a>, turned out not to be as bad as everyone had feared. The time was rife for someone to declare the strategic irrelevancy of technology, and Mr. Carr stepped in and made the case. Because many executives desperately wanted to reduce technology spending at the time (in the aftermath of all that gluttony), reading Carr&#8217;s article was like receiving manna from heaven.</p>
<p>As a technology practitioner myself, however, it should surprise no one that I believe Mr. Carr to be wrong. Regardless of any biases I may have, the reality is that his argument contains several holes that have become ever more glaring with the passage of time. My intent with this article is to shine a light on what&#8217;s wrong with the &#8220;IT doesn&#8217;t matter&#8221; argument. I&#8217;ll even go further: I&#8217;d like to demonstrate why, now more than ever, investing—not just in technology, but in the intersection of technology and people—is the most important action that a company or organization can take.</p>
<h2>The Company That Couldn&#8217;t Run a Second Shift</h2>
<p>In my years as a technology consultant, I&#8217;ve certainly seen what happens when you <em>don&#8217;t</em> invest in technology. One client I vividly remember—we&#8217;ll call it Company X—had quite a conundrum. An amalgamation of nine different manufacturing organizations built up over time, Company X spent very conservatively on technology. When making an acquisition, Company X would do as little as possible on integration; for example, only enough to get the accounting systems and the order-entry systems sending orders to a central mainframe.</p>
<p>Over time, this management behavior at Company X resulted in a &#8220;Rube Goldberg&#8221; system requiring the work of hordes of COBOL programmers just to keep running. Overnight order processing required more than 200 manual steps. The maintenance cost of this Frankenstein&#8217;s monster of a codebase included at least 40 full-time COBOL programmers, a couple of dozen system operators, and who knows how much management hierarchy on top of all that. Company X was spending an estimated $15 million annually just to keep the system at its current level of functionality.</p>
<p>Unfortunately, that $15 million wasn&#8217;t even the most significant problem. When demand increased, Company X decided to run a second shift. The issue was that the system literally could not process orders in greater than about a 12-hour window. Moving to a 16-hour window, and eventually to a round-the-clock business, would require either radical changes to the old system or building an entirely new system—and it would have to match the quirks of the old system, in order to maintain compatibility with the nine other satellite systems!</p>
<p>Business analysts estimated that adding a second shift would increase gross margin in this low-margin business by around 3%, while increasing top-line revenue by over 20%. Moving to round-the-clock processing was also a precursor to being able to sell into new global markets, which would have increased top-line revenue even further.</p>
<p>Sadly, none of these happy improvements could come to pass for Company X.</p>
<p>The problems at this company were many, of which technology was merely one aspect. The deeper issue was that the operators and programmers who understood that mess of a codebase had a vested interest in keeping the current technology set running. But even if all those people were replaced, technical debt in Company X had built up over a long period of time, to the point that the company would need to invest around 2–3 times its annual profit in order to get out from under the load of technical debt.</p>
<p>In this culture of hubris, fear, and inertia, any new technology initiative to pay off the technical debt would almost certainly be killed. It was literally a recipe for company bankruptcy. When competitors are blowing you out of the water with 3% higher margins and 20% higher top-line revenue, taking that increased profitability and investing it into further productivity-enhancing technologies, it&#8217;s hard to see why &#8220;IT doesn&#8217;t matter.&#8221; If you&#8217;re a CEO in a company that can&#8217;t compete because of technical debt, you almost certainly will understand just how much IT <em>does</em> matter.</p>
<p>The rest of this article is available at Pearson Education&#8217;s InformIT website <a href="http://www.informit.com/articles/article.aspx?p=1439188">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=129&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2010/01/25/why-it-matters-more-than-ever/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>The Root Causes of Technical Debt</title>
		<link>http://nomadic-developer.com/2010/01/13/the-root-causes-of-technical-debt/</link>
		<comments>http://nomadic-developer.com/2010/01/13/the-root-causes-of-technical-debt/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 23:31:52 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[technical debt]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=126</guid>
		<description><![CDATA[When we spend 80% of a development budget just keeping software that we already presumably &#8220;own&#8221; working and current, we know that technical debt is extracting a terrible toll on our budget. When making a simple program change requires effort measured in weeks rather than days, something has gone horribly wrong. In many circles, the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=126&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When we spend 80% of a development budget just keeping software that we already presumably &#8220;own&#8221; working and current, we know that technical debt is extracting a terrible toll on our budget. When making a simple program change requires effort measured in weeks rather than days, something has gone horribly wrong. In many circles, the term <em>custom software</em> has essentially become synonymous with &#8220;blank check&#8221; and &#8220;will drain your budget for a long, long time.&#8221;</p>
<p>Do you champion change to help reduce such technical debt? You may eventually be rewarded for your foresight—but meanwhile the risks of championing change are very high. If you want to write maintainable software, a multitude of barriers stand in your way. When you admit that you can&#8217;t state with <em>absolute certainty</em> what will be delivered, do other people paint that disclosure as an admission that your team lacks discipline? Do your developers who have not yet tried pair programming or test-driven development reject those techniques without ever really attempting them—just because they&#8217;re new and initially uncomfortable?</p>
<p>Previous articles in this series have explored the <a href="http://www.informit.com/articles/article.aspx?p=1401640">problem</a> of technical debt, the <a href="http://www.informit.com/articles/article.aspx?p=1401642">ultimate costs</a> of this problem, and how <a href="http://www.informit.com/articles/article.aspx?p=1392832">methods</a> that work only at surface levels stifle the possibility of changing to something better. In this article, we&#8217;ll consider <em>why</em> these problems affect our technology organizations in the first place—how technical risk factors into the technical debt that plagues the software industry.</p>
<h2>Taking Down the Hubricists</h2>
<p>I defined the term <em>Hubricist</em> in my article &#8220;<a href="http://www.informit.com/articles/article.aspx?p=1392832">Scrummerfall: World&#8217;s Worst Software Development Methodology</a>.&#8221; The Hubricist attempts to impress those above him by replacing real data about the real velocity of the project with hubris. What the Hubricist lacks in substance, he makes up in bravado: &#8220;Yes, we <em>will</em> hit the deadline. Yes, you <em>will</em> get all the features!&#8221; When neither happens, developers are blamed for not working Sundays in addition to Saturdays, and careers are derailed in the aftermath.</p>
<p>Why is the Hubricist so opposed to change? For a moment, try to think from his point of view. Somebody (perhaps it&#8217;s you) comes along and trots out this methodology that promises transparency, particularly with regard to quality and technical debt. Is this methodology good for <em>you</em>, Mr. or Ms. Hubricist? Where would you fit into a regime that values results over bravado? Results-oriented management might not allow you to blame other people when things go wrong. If customers see that developers are making progress on a daily basis—working hard, but not at the unrealistic rate of progress you promised in order to sell the project, where does that leave you? Exposed, having made a lot of promises that can&#8217;t be kept.</p>
<p>With this kind of mindset, it should be no surprise that Hubricists try to block adoption of Agile methodology, or any other system that adds transparency. Remember the scene in <em>The Wizard of Oz</em> where the curtain draws back to expose the little man behind the booming voice? When the Hubricist perceives the potential for exposure, he plays the FUD card: <em>fear</em>, <em>uncertainty</em>, and <em>doubt</em>. He walks around claiming that Agile isn&#8217;t disciplined, that it&#8217;s about developers who don&#8217;t want to write documentation, that it&#8217;s advocated by teams that don&#8217;t want to be held accountable for results.</p>
<p>What can you do to counter the Hubricist&#8217;s claims?</p>
<ul>
<li><strong>Point out that Agile teams actually tend to produce far more <em>useful</em> documentation than other methodologies can.</strong> These are real showcases that demonstrate <em>working</em> software, versus mere status reports with vague claims of xx% complete, based on nothing but self-reported guesses.</li>
<li><strong>Note that accountability for results must be based on a solid track record of delivery.</strong> Is a high percentage of the development budget spent on software maintenance costs? Past results don&#8217;t allow you to claim &#8220;accountability&#8221; for the future unless you have changed those statistics.</li>
<li><strong>Show a real Agile team.</strong> Show stakeholders the daily artifacts of story cards moving from backlog to completion. An Agile team room is an active place, where collaboration tends to be visible and signs of progress are frequent. Compare this to a typical cube farm in a waterfall project.</li>
</ul>
<p>The rest of this article can be read <a href="http://www.informit.com/articles/article.aspx?p=1433539">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=126&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2010/01/13/the-root-causes-of-technical-debt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Business Intelligence does not Come From a Product</title>
		<link>http://nomadic-developer.com/2009/12/12/business-intelligence-does-not-come-from-a-product/</link>
		<comments>http://nomadic-developer.com/2009/12/12/business-intelligence-does-not-come-from-a-product/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 17:43:51 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=115</guid>
		<description><![CDATA[There is this guy, Bradford Cross, whom I met on my first project at ThoughtWorks.  I remember the day in a profound way, as I was on my first day at a client that, you could say, was something of a well known company in the top tier of accounting firms.  The kind of place [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=115&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There is this guy, Bradford Cross, whom I met on my first project at <a href="http://www.thoughtworks.com/">ThoughtWorks</a>.  I remember the day in a profound way, as I was on my first day at a client that, you could say, was something of a well known company in the top tier of accounting firms.  The kind of place one might perceive, without knowing further, was the kind of place that still may have a &#8220;business attire&#8221; dress code.  Well &#8211; here I am on day one, and this person walks in, I think wearing a green belt, unmatched pants, having messy hair &#8211; ready and eager to start work on this new project we were working on.</p>
<p>Welcome to ThoughtWorks, and Welcome to Silicon Valley!</p>
<p>Fast forward to today, and this same person, who I remember having a passion for functional programming and math that far exceeded anything I could muster up, is now one of the <a href="http://flightcaster.com/team">people behind FlightCaster</a> &#8211; a service that uses functional programming (using Clojure and Hadoop) to implement a predictive algorithm that can tell you &#8211; with far more accuracy than the airlines &#8211; when your flight will <em>arrive</em>!  Being the cynical skeptic that I tend to be, I really did not believe it until I started using the service myself.  While I am only two flights in, the results are very promising.</p>
<p>To sum up what it does, the service uses 10 years worth of flight data, along with a certain amount of statistics wizardry that I almost certainly don&#8217;t understand, to correlate various events (plane arrival times, weather, etc.) to instances where delays occur.  More to the point, when I think of what <em>business intelligence</em> should be, what FlightCaster does seems far more interesting to me than what I have seen in most vendor presentations.  This is what leads me to the idea that BI comes from an idea about how correlation might occur, combined with technical folks who understand statistics and know how to harness data to do analytics.  It almost certainly never comes along because you install a tool.</p>
<p>So if that is where BI comes from, what is the most ideal toolset for helping to realize it.  There are no shortage of vendors who will try to sell you something that will lock you into their stack.  Or sell you some sort of whiz-bang UI that convinces you that you can go cheap on people so long as you just have good tools.  A typical anti-pattern is that an organization will buy the tools, then basically use them to do reporting against a data warehouse and post some simplistic results to some dashboard.  Something that, when you get down to it, you could have done without the tools, and probably without the fancy dashboard, at far lower cost using simpler tools.</p>
<p>This is especially true today.  We now have functional languages, equipped with great math and statistics libraries, that are for the most part mainstream (<a href="http://clojure.org/">Clojure</a> and <a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/">F#</a> come to mind).  We have open source tools like <a href="http://hadoop.apache.org/#What+Is+Hadoop%3F">Hadoop</a> (no more big expensive software) which make this stuff work in distributed computing environments that make it so you can leverage commodity hardware (no more big expensive iron).  If FlightCaster, a service that is as innovative as anything I have ever seen in the BI space, probably moreso, runs on this kind of stuff, it is probably good enough for what most companies would ever call their own BI efforts.</p>
<p>So what are the barriers to this?  One barrier I have encountered is that there is a bias against BI efforts that require &#8220;programming&#8221;.  I once gave a webinar about this topic to a group of CIOs, Consulting Executives, and BI product vendors.  One of my points was that the most useful BI efforts would require a technologist.  One guy in the crowed literally booed.  There is literally a subculture in the world of BI that thinks if you have to have someone program something, you have done a bad job.  Why this is the case I can&#8217;t be certain, but given that there are corners of the IT world that see programming as something to be avoided, it is not entirely surprising.</p>
<p>Another barrier is that there are more than a few CIOs or &#8220;Directors of BI&#8221; who are charged with the task of implementing a BI initiative, but have no clue where to start.  They know they need it, and that is as far as it goes.  Opportunistic salesperson comes on the scene, sells the SKU, and suddenly, we have a BI initiative made mostly out of shelfware.  It does not help that the world of &#8220;big database&#8221; (think IBM, Oracle, Microsoft) sells a database product that is largely a commodity without some proprietary BI extension which is usually added for differentiation purposes.  With a database software sales force already ensconced in the world of the enterprise CIO, it should suprise nobody that there are folks who think you need IBM, Oracle, Microsoft, or some other product to do BI.</p>
<p>I am here to say <em>hogwash</em>.  You don&#8217;t need any of that stuff.  The tools are here, they are free, and they have clearly done BI on a scale grander than most BI efforts I have seen inside most corporate IT.  What you need is a decent use case (tell me when my flight will <em>arrive</em>), that is solvable by a combination of data, math, and organizational will.  Do that, and you will have Business Intelligence.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=115&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2009/12/12/business-intelligence-does-not-come-from-a-product/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Some Reflections on Being &#8220;Nomadic&#8221; &#8211; 10 Tips for Road Warriors</title>
		<link>http://nomadic-developer.com/2009/11/16/some-reflections-on-being-nomadic-10-tips-for-road-warriors/</link>
		<comments>http://nomadic-developer.com/2009/11/16/some-reflections-on-being-nomadic-10-tips-for-road-warriors/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 16:14:10 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=109</guid>
		<description><![CDATA[It has been a long run, but after working in the following cities over the past 37 weeks: 10 weeks in Seattle 1 week in Los Angeles 1 week in Las Vegas 12 weeks in San Jose 6 weeks in Beijing 1 week in Orlando 3 weeks in San Francisco 3 weekends in places like [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=109&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It has been a long run, but after working in the following cities over the past 37 weeks:</p>
<ul>
<li>10 weeks in Seattle</li>
<li>1 week in Los Angeles</li>
<li>1 week in Las Vegas</li>
<li>12 weeks in San Jose</li>
<li>6 weeks in Beijing</li>
<li>1 week in Orlando</li>
<li>3 weeks in San Francisco</li>
<li>3 weekends in places like Winnipeg and Minneapolis for Code Camps</li>
</ul>
<p>&#8230; it appears as I will be back in Chicago &#8211; for at least a week! (I know&#8230; wow!).  The last one was a project we finished in 3 weeks out of 5 budgeted &#8211; which was a nice way to end what has been the most insane run of travel I have done in my career.  Now, I work in consulting, so I will likely be on the road again soon, but I thought I would take this opportunity to provide some thoughts on what works and what does not work when you are on the road as a traveling consultant.</p>
<p>Tip #1: When Possible, Get an Apartment</p>
<p>During my longer stints, in this year&#8217;s case, Seattle and San Jose, I managed to at least get corporate apartments that had fully supplied kitchens and laundry facilities.  While such arrangements are not practical for shorter projects (i.e. 2-3 weeks), I found that having such a place is a huge win/win for my clients as well as myself.  The cost of a corporate apartment is almost always lower than a hotel room &#8211; despite being far larger.  But more importantly, at least with me, is that I tend to prefer to cook my own food &#8211; which costs far less than spending a typical $35 per day on restaurants.  I often would have a net food cost &#8211; eating very high quality stuff, well under $100 per week, which would easily be blown on 3 meals during a week at a restaurant.</p>
<p>Probably more important though than the cost element is that I always <em>felt</em> healthier at the various corporate apartments.  I would routinely eat healthier when I prepared stuff myself.  It also kept my domestic rhythm going, as the practice of constantly eating out can make you stop remembering how to operate in a kitchen.  Same goes for having laundry facilities &#8211; something for me makes me feel normal if I have a daily routine, regardless of where I am, that involves taking care of myself.  Seems to make life, for me at least, feel more &#8220;normal&#8221; on the road.</p>
<p>Tip #2: Find the Local Bookstore (or Local &#8220;Whatever It Is You Like Doing&#8221;)</p>
<p>I am a bookworm &#8211; I read 3-4 nonfiction books a month, and probably skim through at least a dozen more.  Whenever I arrive in a new city, the first thing I do is find where the nearest good bookstore is, preferably an independent if I can find one, or the B&amp;N or Borders if I can&#8217;t.  On the road, unless you are working 14 hour days (god help you), you want to find something to do with your idle time that isn&#8217;t work.</p>
<p>Tip #3: Do your Expenses Weekly</p>
<p>(note: I say this as I stare at a basket with 3 weeks of receipts in it&#8230;  ugh).</p>
<p>Expenses is a minor hassle if it is a weeks worth.  Much past that though and you a.) have what feels like an insurmountable burden in front of you and b.) you tend to forget things.  Just make it part of your routine to do them on Thursday night.</p>
<p>Tip #4: Avoid Too Many &#8220;Drinking Adventures&#8221; With The Team</p>
<p>This may be controversial &#8211; and thankfully, I learned this more in my twenties than in my far more tame late thirties I find myself in today, but man, does your effectiveness go down when you come into a client hung over.  I see people tend to drink more than they would at home when they are always going to restaurants, out with the team, and so forth.  After about 4-5 nights in a row of it, your liver will be screaming at you.  Do it, but certainly not to excess.</p>
<p>Tip #5: If You Have Family, Make Sure They Know You Still Exist</p>
<p>Another one where I all too frequently fall short, especially with west coast travel when I work too late and find myself home past bedtimes.  If you have kids, or a spouse, make sure they know you are around at least every couple days.  I swear, I got in the worst arguments with my spouse when I forget to call for a few days, and suddenly need to call because I need something &#8220;done at home&#8221;.  It is too easy to get lost in your project and forget to do things like that (at least for me)&#8230; but staying in frequent contact is critical if you have a family.</p>
<p>BTW, even if you don&#8217;t, tip #5 still applies to friends and extended family &#8211; though probably not at the same duration.</p>
<p>Tip #6: Stay Connected to your Tech Community</p>
<p>User groups mid-week in your home town are going to be hard to attend.  Make sure to use code camps or other weekend events to continue to stay connected and keep those networks intact.  One of the worst things you could do is take up travel, and then find that nobody remembers you 8 months later!</p>
<p>Tip #7: Use Travel to Expand Your Network</p>
<p>Find the local user group in the location where you are staying, and find a way to attend, or even better, contribute.  Travel, all things being equal, should be a net positive with regard to your network.</p>
<p>Tip #8: Airplane Time = Book Time, not Work Time or Internet Time</p>
<p>One of the worst developments I can possibly think of, at least for me personally, is the &#8220;GoGo Internet Service&#8221; that has been invading American Airlines planes.  Not that I am not thankful for innovation or what have you &#8211; but I use that time to take in materials that, well, take a long time to take in.  Whether it be books I have been wanting to read that require a good deal of concentration to successfully grok, or anything else that requires not being around distractions, leveraging airplane time to get those things done is one of the best ways to take advantage of that &#8220;temporary captivity&#8221;.</p>
<p>Tip #9: Spend at Least One Day On Location Doing &#8220;Touristy&#8221; Stuff</p>
<p>During my first four years as a road warrior, I visited places from Sydney to Madrid to New York and many places in-between.  Yet &#8211; I have never been to the Statue of Liberty, the Louvre, or other places I have perhaps walked by, but never really took in.  It took many years to remember that when being out here, I ought to use the opportunity to actually see a museum or do some of the things that, at the very least, give you interesting conversation fodder.  Getting to travel the world, and then promptly choosing to simply work on some 9th draft of a proposal in your room rather than experience some wonder of the world is, well dumb.  I know.  I have done it, and I still regret it!</p>
<p>Tip #10: Stay Healthy</p>
<p>Work out.  Eat healthy.  Read a balanced diet.  Don&#8217;t overwork.  Take care of yourself.  I know far too many people that burn out with this stuff because they forget that, even if you are on the road, you still have to take care of yourself.  Just because your employer is sending you somewhere does not mean they own you every hour of every day.  A burnt out consultant who goes through zombie like motions for a client isn&#8217;t terribly valuable to anyone, consulting firm, client, or themselves.</p>
<p>Happy Road-Warrioring!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thenomadicdeveloper.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thenomadicdeveloper.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thenomadicdeveloper.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thenomadicdeveloper.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thenomadicdeveloper.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thenomadicdeveloper.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thenomadicdeveloper.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thenomadicdeveloper.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thenomadicdeveloper.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thenomadicdeveloper.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thenomadicdeveloper.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thenomadicdeveloper.wordpress.com/109/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=109&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2009/11/16/some-reflections-on-being-nomadic-10-tips-for-road-warriors/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
	</channel>
</rss>
