<?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>Ben J. Christensen &#187; Management &#38; Leadership</title>
	<atom:link href="http://benjchristensen.com/category/management-leadership/feed/" rel="self" type="application/rss+xml" />
	<link>http://benjchristensen.com</link>
	<description>Software Development and Other Random Stuff</description>
	<lastBuildDate>Tue, 17 Jan 2012 22:36:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='benjchristensen.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/a7bf6ab05bce6d423674b5a8bb676139?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Ben J. Christensen &#187; Management &#38; Leadership</title>
		<link>http://benjchristensen.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://benjchristensen.com/osd.xml" title="Ben J. Christensen" />
	<atom:link rel='hub' href='http://benjchristensen.com/?pushpress=hub'/>
		<item>
		<title>3 Signs of a Miserable Job</title>
		<link>http://benjchristensen.com/2010/10/17/3-signs-of-a-miserable-job/</link>
		<comments>http://benjchristensen.com/2010/10/17/3-signs-of-a-miserable-job/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 20:13:33 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Management & Leadership]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=344</guid>
		<description><![CDATA[I read &#8220;3 Signs of a Miserable Job&#8221; and found it to have some good insights into jobs, career and particularly management. It&#8217;s an easy read, most of the book in the form of a fable, readable in an evening or two.  It can be found on Kindle or iBooks.  Below are some screen-captures of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=344&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I read &#8220;3 Signs of a Miserable Job&#8221; and found it to have some good insights into jobs, career and particularly management. It&#8217;s an easy read, most of the book in the form of a fable, readable in an evening or two. </p>
<p>It can be found on <a href="http://www.amazon.com/Three-Signs-Miserable-Job-ebook/dp/B000UZQHD4/ref=tmm_kin_title_0?ie=UTF8&amp;m=AG56TWVU5XWC2">Kindle</a> or <a href="http://ax.itunes.apple.com/us/book/the-three-signs-miserable/id381153191#ls=1">iBooks</a>. </p>
<p>Below are some screen-captures of passages I liked (<a href="https://twitter.com/benjchristensen/status/27656848696">sorry for the images as opposed to text</a>):</p>
<p>Summary of the &#8220;3 Signs&#8221;</p>
<p><img src="http://benjchristensen.files.wordpress.com/2010/10/20101017-083638.jpg?w=800" alt="3 signs of a miserable job" title="20101017-083638.jpg" width="800" class="aligncenter size-full wp-image-339" /></p>
<p>The book makes it clear that it doesn&#8217;t matter what the job is nor does higher compensation ultimately negate the need of these things. </p>
<p><img src="http://benjchristensen.files.wordpress.com/2010/10/20101017-083652.jpg?w=800" alt="What a miserable job is" title="20101017-083652.jpg" width="800" class="aligncenter size-full wp-image-341" /></p>
<p><img src="http://benjchristensen.files.wordpress.com/2010/10/20101017-083645.jpg?w=800&#038;h=169" alt="Miserable employee" title="20101017-083645.jpg" width="800" height="169" class="aligncenter size-full wp-image-340" /></p>
<p>In the end, the manager is the person who has the biggest impact on a persons happiness in their job and the case is made as to the importance of a manager in the life of those he manages yet how most managers don&#8217;t realize this nor act on it &#8211; hence the misery of many in what would otherwise be fulfilling and satisfying jobs.</p>
<p><img src="http://benjchristensen.files.wordpress.com/2010/10/20101017-083659.jpg?w=800&#038;h=289" alt="managers should be frank" title="20101017-083659.jpg" width="800" height="289" class="aligncenter size-full wp-image-343" /></p>
<p>For me &#8220;immeasurement&#8221; is the one that hits closest to home as being something that affects me in my day to day life and that I&#8217;ve done poorly when I&#8217;ve managed others. </p>
<p><img src="http://benjchristensen.files.wordpress.com/2010/10/20101017-083704.jpg?w=800" alt="immeasurement" title="20101017-083704.jpg" width="800" class="aligncenter size-full wp-image-342" /></p>
<p>Software development (where I personally have experience and can apply these lessons) in general is difficult in this regard &#8211; projects and code are never really done. Sure, something is deployed or ships, but then it&#8217;s on to fixing things, adding the next feature or whatever, and rarely does an individual person have full impact on a product or system such that they can measure their success with it, especially on large teams or products. </p>
<p>Timelines or task completion are impossible to use as yardsticks as they vary wildly and change all the time &#8211; the very definition of &#8220;moving goalposts&#8221;. Don&#8217;t even get me started on &#8220;lines of code&#8221; &#8211; the worst possible form of measurement. Bugs (or lack thereof) don&#8217;t work either for many reasons that I won&#8217;t get into here. </p>
<p>I have yet to see an objective way of measuring software development that works &#8211; any ideas?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/344/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=344&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2010/10/17/3-signs-of-a-miserable-job/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2010/10/20101017-083638.jpg" medium="image">
			<media:title type="html">20101017-083638.jpg</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2010/10/20101017-083652.jpg" medium="image">
			<media:title type="html">20101017-083652.jpg</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2010/10/20101017-083645.jpg" medium="image">
			<media:title type="html">20101017-083645.jpg</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2010/10/20101017-083659.jpg" medium="image">
			<media:title type="html">20101017-083659.jpg</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2010/10/20101017-083704.jpg" medium="image">
			<media:title type="html">20101017-083704.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Leadership, Solitude and Thinking</title>
		<link>http://benjchristensen.com/2010/10/16/leadership-solitude-and-thinking/</link>
		<comments>http://benjchristensen.com/2010/10/16/leadership-solitude-and-thinking/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 10:58:33 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Management & Leadership]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">https://benjchristensen.wordpress.com/2010/10/17/leadership-solitude-and-thinking/</guid>
		<description><![CDATA[These are quotes that I liked on the subject of leadership from the following article which I recommend taking the time to read and think about. Solitude and Leadership: an article by William Deresiewicz &#124; The American Scholar &#8220;solitude is one of the most important necessities of true leadership&#8221; &#8220;what I saw around me were [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=330&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>These are quotes that I liked on the subject of leadership from the following article which I recommend taking the time to read and think about. </p>
<p><a href="http://www.theamericanscholar.org/solitude-and-leadership/">Solitude and Leadership: an article by William Deresiewicz | The American Scholar</a></p>
<blockquote><p>
&#8220;solitude is one of the most important necessities of true leadership&#8221;</p>
<p>&#8220;what I saw around me were great kids who had been trained to be world-class hoop jumpers. Any goal you set them, they could achieve. Any test you gave them, they could pass with flying colors. They were, as one of them put it herself, &#8216;excellent sheep.&#8217;&#8221;</p>
<p>&#8220;excellence isn’t usually what gets you up the greasy pole. What gets you up is a talent for maneuvering. &#8230; Not taking stupid risks like trying to change how things are done or question why they’re done. Just keeping the routine going.&#8221;</p>
<p>&#8220;We have a crisis of leadership in this country, in every institution.&#8221;</p>
<p>&#8220;We have a crisis of leadership in America because our overwhelming power and wealth, earned under earlier generations of leaders, made us complacent, and for too long we have been training leaders who only know how to keep the routine going. Who can answer questions, but don’t know how to ask them. Who can fulfill goals, but don’t know how to set them. Who think about how to get things done, but not whether they’re worth doing in the first place. What we have now are the greatest technocrats the world has ever seen, people who have been trained to be incredibly good at one specific thing, but who have no interest in anything beyond their area of exper tise. What we don’t have are leaders.</p>
<p>What we don’t have, in other words, are thinkers. People who can think for themselves. People who can formulate a new direction: for the country, for a corporation or a college, for the Army—a new way of doing things, a new way of looking at things. People, in other words, with vision.&#8221;</p>
<p>&#8220;there are a lot of highly educated people who don’t know how to think at all.&#8221;</p>
<p>&#8220;what makes him [General David Petraeus] a thinker—and a leader—is precisely that he is able to think things through for himself. And because he can, he has the confidence, the courage, to argue for his ideas even when they aren’t popular.&#8221;</p>
<p>&#8220;true leadership means being able to think for yourself and act on your convictions&#8221;</p>
<p>&#8220;people do not multitask effectively. And here’s the really surprising finding: the more people multitask, the worse they are, not just at other mental abilities, but at multitasking itself.&#8221;</p>
<p>&#8220;Multitasking, in short, is not only not thinking, it impairs your ability to think.&#8221;</p>
<p>&#8220;You do your best thinking by slowing down and concentrating.&#8221;</p>
<p>&#8220;Leadership means finding a new direction, not simply putting yourself at the front of the herd that’s heading toward the cliff.&#8221;</p>
<p>&#8220;Once the situation is upon you, it’s too late. You have to be prepared in advance. You need to know, already, who you are and what you believe: not what the Army believes, not what your peers believe (that may be exactly the problem), but what you believe. How can you know that unless you’ve taken counsel with yourself in solitude?&#8221;
</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/330/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=330&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2010/10/16/leadership-solitude-and-thinking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Technical Debt Quadrant</title>
		<link>http://benjchristensen.com/2009/10/15/technical-debt-quadrant/</link>
		<comments>http://benjchristensen.com/2009/10/15/technical-debt-quadrant/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 20:52:19 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Management & Leadership]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=290</guid>
		<description><![CDATA[Martin Fowler wrote a blog entry on technical debt this week that communicates the concepts of &#8220;technical debt&#8221; and classifies them very well. Some favorite portions: &#8220;A mess is a reckless debt which results in crippling interest payments or a long period of paying down the principal.&#8221; &#8220;The prudent debt to reach a release may [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=290&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Martin Fowler <a href="http://martinfowler.com/bliki/TechnicalDebtQuadrant.html">wrote a blog entry</a> on technical debt this week that communicates the concepts of &#8220;technical debt&#8221; and classifies them very well.</p>
<p><a href="http://benjchristensen.files.wordpress.com/2009/10/techdebtquadrant.png"><img class="alignnone size-full wp-image-291" title="techDebtQuadrant" src="http://benjchristensen.files.wordpress.com/2009/10/techdebtquadrant.png?w=800" alt="techDebtQuadrant"   /></a></p>
<p>Some favorite portions:</p>
<blockquote><p>&#8220;A mess is a reckless debt which results in crippling interest payments or a long period of paying down the principal.&#8221;</p></blockquote>
<blockquote><p>&#8220;The prudent debt to reach a release may not be worth paying down if the interest payments are sufficiently small &#8211; such as if it were in a rarely touched part of the code-base.&#8221;</p></blockquote>
<blockquote><p>&#8220;Not just is there a difference between prudent and reckless debt, there&#8217;s also a difference between deliberate and inadvertent debt. The prudent debt example is deliberate because the team knows they are taking on a debt, and thus puts some thought as to whether the payoff for an earlier release is greater than the costs of paying it off. A team ignorant of design practices is taking on its reckless debt without even realizing how much hock it&#8217;s getting into.&#8221;</p></blockquote>
<blockquote><p>&#8220;while you&#8217;re programming, you are learning. It&#8217;s often the case that it can take a year of programming on a project before you understand what the best design approach should have been. Perhaps one should plan projects to spend a year building a system that you throw away and rebuild, but that&#8217;s a tricky plan to sell. Instead what you find is that the moment you realize what the design should have been, you also realize that you have an inadvertent debt.&#8221;</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/290/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=290&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/10/15/technical-debt-quadrant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2009/10/techdebtquadrant.png" medium="image">
			<media:title type="html">techDebtQuadrant</media:title>
		</media:content>
	</item>
		<item>
		<title>Software Development Is Not Engineering</title>
		<link>http://benjchristensen.com/2009/08/11/software-development-is-not-engineering/</link>
		<comments>http://benjchristensen.com/2009/08/11/software-development-is-not-engineering/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 16:47:55 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Management & Leadership]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=221</guid>
		<description><![CDATA[I have long considered it a fallacy to call software development &#8220;engineering&#8221;. Even though the term technically works for software as &#8220;the science, discipline, art and profession of acquiring and applying technical, scientific and mathematical knowledge to design and implement structures, machines, devices, systems, and processes that safely realize a desired objective or inventions&#8221; (see Wikipedia), this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=221&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have long considered it a fallacy to call software development &#8220;engineering&#8221;. Even though the term technically works for software as &#8220;<span style="font-family:sans-serif, 'Times New Roman', 'Bitstream Charter', Times, fantasy;">the science, discipline, art and profession of acquiring and applying technical, scientific and mathematical knowledge to design and implement <span style="font-family:sans-serif, 'Times New Roman', 'Bitstream Charter', Times, fantasy;">structures, machines, devices, systems, and processes that safely realize a desired objective or inventions&#8221; (see <a href="http://en.wikipedia.org/wiki/Engineering">Wikipedia</a>), this is not how the term ends up being interpreted and therefore misrepresents how software development actually occurs &#8211; since engineering has become synonymous with building physical structures such as buildings, bridges, roads. Recently someone with authority on the subject expressed this opinion much better than I could have, and since he has authority on the subject and in the industry, it means something.</span></span></p>
<p>According to Wikipedia, &#8220;<a href="http://en.wikipedia.org/wiki/Tom_DeMarco">Tom DeMarco</a> has authored over nine books and 100 papers on project management and software development&#8221; and has been intimately involved over the past 40 years in the software industry and the establishment of &#8220;structured analysis&#8221;, software project management concepts and legendary software development projects such as the first large scale telephone exchange for Bell.</p>
<p>He recently wrote an article titled &#8220;<a href="http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf">Software Engineering:  An Idea Whose Time Has Come and Gone?</a>&#8220;</p>
<p>The article is well written and there is no value in me repeating it verbatim, so read the original.</p>
<p>The following quotes however are worth me repeating along with my commentary:</p>
<blockquote><p>&#8220;<strong>Software development is inherently different from a natural science</strong> such as physics and its metrics are accordingly much less precise.&#8221;</p></blockquote>
<p>Software development is not like building a bridge &#8211; where the materials, laws of physics and chemistry, labor times etc have all been experienced and practiced thousands of times, can be accurately predicted and correctly planned for, then managed.</p>
<blockquote><p>&#8220;<strong>Software development is and always will be somewhat experimental.</strong> The actual software construction isn’t necessarily experimental, but its conception is. And this is where our focus ought to be. It’s where our focus always ought to have been.&#8221;</p></blockquote>
<p>If we are writing software, it&#8217;s because we&#8217;re trying to do something that hasn&#8217;t been done before or is different in some way from what already exists, otherwise we&#8217;ll purchase the existing software. We are building a solution to a problem &#8211; to create value of some kind.</p>
<p>If we&#8217;re doing something that hasn&#8217;t been done before &#8211; either with new technologies, new rules, new performance criteria or whatever it is that makes it unique &#8211; then we are doing &#8220;research and development&#8221; &#8211; experimentation. It is not as if a blueprint for a house is given and the construction team comes in to build it as they&#8217;ve done 1000 other houses in the same community. Software &#8220;architecture&#8221; doesn&#8217;t work that way. There is never a replicate &#8211; because it&#8217;s not physical.</p>
<p>Yet business and project management would love it to be &#8211; it makes it easier to control, schedule and most critically, budget for.</p>
<p>Tom DeMarco discusses &#8220;metrics&#8221; in the most detail in the article, about why we spend so much time trying to control software development projects, and particularly the timeline/cost aspect.</p>
<p>He says:</p>
<blockquote><p>&#8220;<strong>For the past 40 years, for example, we’ve tortured ourselves over our inability to finish a software project on time and on budget</strong>. But as I hinted earlier, this never should have been the supreme goal. <strong>The more important goal is transformation</strong>, creating software that changes the world or that transforms a company or how it does business.&#8221;</p></blockquote>
<p>After giving an example of two projects, one creating little value and one creating significant value he states:</p>
<blockquote><p>&#8220;This leads us to the odd conclusion that <strong>strict control is something that matters a lot on relatively useless projects</strong> and much less on useful projects. It suggests that <strong>the more you focus on control, the more likely you’re working on a project that’s striving to deliver something of relatively minor value.</strong>&#8220;</p></blockquote>
<p>Ironically, I&#8217;ve generally seen the opposite perspective from business &#8211; that the &#8220;expensive&#8221; projects, the ones typically capable of creating the most value, are the ones where the most control of timeline and cost is desired and therefore the most damage done by &#8220;management&#8221; as opposed to allowing the necessary experimentation, design, thought, research and development to occur to create the most value out of the software.</p>
<p>Being criticized of being &#8220;unable to delivery on time&#8221; in software development is not something I can really take personally &#8211; when the industry at large struggles so significantly with this, largely because it has tried so desperately to liken software development to a public works engineering project such as building a bridge, a building or a road.</p>
<p>Software development is more like art than most seem willing to accept.</p>
<p>It is driven by creativity, experimentation, research, design and artistic drive.</p>
<p>Is it any wonder that the &#8220;transformative&#8221; software projects most often come from startups (Apple apparently being the exception with their iPhone OS and demonstrating the amazing culture of design they allow to flourish) and then as they mature become stagnant once quarterly reports drive business as opposed to the development of a product? Or that opensource, where timelines mean nothing, can build great software such as Linux, Firefox and MySQL? Look at what has happened to MySQL over the past 2 years as business &#8220;management&#8221; has replaced &#8220;experimentation&#8221; and focus on quality &#8212; the key people who built MySQL over the years have left to work on something where strict control is not the focus.</p>
<p>As Tom DeMarco suggests, I hope to be focusing on development where the value is worth allowing the proper time, people, experimentation and development to occur &#8211; so that something of true value can be created. If management of &#8220;costs&#8221; is the most important aspect of the project, the greatest value to be created, I don&#8217;t even want to bother. I&#8217;d rather work on a project that has the ability to be transformative, and create greater value than the cost of the effort.</p>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">software engineering:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">An Idea Whose Time Has Come and</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/221/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=221&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/08/11/software-development-is-not-engineering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Detail Oriented</title>
		<link>http://benjchristensen.com/2009/07/17/detail-oriented/</link>
		<comments>http://benjchristensen.com/2009/07/17/detail-oriented/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 19:08:08 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Management & Leadership]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=208</guid>
		<description><![CDATA[I&#8217;m working on a fairly significant document that covers the requirements and high-level architecture for a new system based on SOA principles to replace an aging application. The document is approaching 150 pages and beginning to approach something that properly describes the vision and needs so that business and technical folks can have a solid [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=208&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a fairly significant document that covers the requirements and high-level architecture for a new system based on SOA principles to replace an aging application.</p>
<p>The document is approaching 150 pages and beginning to approach something that properly describes the vision and needs so that business and technical folks can have a solid understanding of scope, requirements, priorities and how it will work (plus general direction on how it will be built).</p>
<p>It takes a lot of effort and time to sit down and not only read, but understand the scope of this system. It&#8217;s not a simple thing. As much as we try to keep it conceptually simple, there&#8217;s a lot going on and a lot of details.</p>
<p>In a few weeks I&#8217;m to sit down with a partner team to review and collaborate. My plan was to send over the detailed document for review so we could have a productive meeting to truly discuss missing requirements, strategy, execution planning etc.</p>
<p>However, I&#8217;ve been told they don&#8217;t &#8220;want&#8221; to read the detailed version &#8212; just a summary &#8212; bullet points with perhaps 10-15 pages.</p>
<p>These are senior developers and architects. Not high level business folks.</p>
<p>Attention to detail is in my opinion an absolute requirement for technical people. Decision making without details is dangerous and fairly useless.</p>
<p>My opinion is not high for people who do not care or have the attention span to be detail oriented.</p>
<p>An executive who&#8217;s not directly involved in the operations of something &#8211; a summary makes sense.</p>
<p>A team or person who is supposed to directly impact the design and delivery of something and its ongoing operations &#8211; if the details aren&#8217;t part of their focus, they don&#8217;t deserve to be involved.</p>
<p>If they don&#8217;t have the time to be detail oriented, then either they shouldn&#8217;t be working on the project, their time needs to be re-prioritized, or the project isn&#8217;t worth doing.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=208&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/17/detail-oriented/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Skill and Trust in Business</title>
		<link>http://benjchristensen.com/2009/07/17/skill-and-trust-in-business/</link>
		<comments>http://benjchristensen.com/2009/07/17/skill-and-trust-in-business/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 17:43:58 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Management & Leadership]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=203</guid>
		<description><![CDATA[Dictionary.com defines skill as: the ability, coming from one&#8217;s knowledge, practice, aptitude, etc., to do something well competent excellence in performance; expertness; Trust is defined as: reliance on the integrity, strength, ability, surety, etc., of a person or thing; confidence. Two common themes are ability defined as: competence in an activity or occupation because of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=203&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dictionary.com defines <a href="http://dictionary.reference.com/browse/skill">skill</a> as:</p>
<ul>
<li>the ability, coming from one&#8217;s knowledge, practice, aptitude, etc., to do something well</li>
<li>competent excellence in performance; expertness;</li>
</ul>
<p><a href="http://dictionary.reference.com/browse/trust">Trust</a> is defined as:</p>
<ul>
<li>reliance on the integrity, strength, ability, surety, etc., of a person or thing; confidence.</li>
</ul>
<p>Two common themes are <a href="http://dictionary.reference.com/browse/ability">ability</a> defined as:</p>
<ul>
<li>competence in an activity or occupation because of one&#8217;s skill, training, or other qualification</li>
<li>power or capacity to do or act physically, mentally, legally, morally, financially, etc.</li>
</ul>
<p>My experience unfortunately is that skill and ability in people are not abundant &#8211; and therefore it is hard to have trust.</p>
<p>More problems are caused by lack of skill than anything else I run into.</p>
<p>Making mistakes and learning from them is part of life &#8211; it&#8217;s the human experience.</p>
<p>However, there is a reason world class organizations have &#8220;senior&#8221; people  and restrict the impact of &#8220;junior&#8221; people&#8217;s mistakes by limiting what they are allowed to do and affect until they have gained trust &#8211; by demonstrating their ability and skill.</p>
<p>Trust nowadays is given away much too freely &#8211; desire, eagerness, willingness do not replace ability and skill.</p>
<p>Trust should not be given unless someone has earned it. People should not expect to be trusted until they&#8217;ve earned it by showing they deserve it.</p>
<p>I had someone tell me (after failing on something) that I should trust them more and give them &#8220;opportunity&#8221; so they could succeed (by giving them the &#8216;keys to the kingdom&#8217;). This is backwards. Prove to me on small things incrementally and trust will be earned and greater opportunities given.</p>
<p>Trust does not work like &#8220;innocent until proven guilty&#8221;. Trust must be earned. Trust stems from skill, honesty, aptitude, competence and most importantly &#8211; time.</p>
<p>If business operations are failing, my opinion is it&#8217;s generally due to placing trust and unfair expectations on people who do not have the skill or ability to deliver.</p>
<p>Put the money and time on having the right people &#8211; and restrict the impact of &#8220;junior&#8221; people &#8211; and operations will improve.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/203/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=203&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/17/skill-and-trust-in-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Recruiting IT Talent</title>
		<link>http://benjchristensen.com/2009/07/13/recruiting-it-talent/</link>
		<comments>http://benjchristensen.com/2009/07/13/recruiting-it-talent/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 16:26:47 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Management & Leadership]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=200</guid>
		<description><![CDATA[An interesting article by James McGovern on recruiting IT talent. The gist of it is that it&#8217;s very difficult to rely upon resumes, and that we as an industry seem to put up with &#8220;falsification&#8221; of skills and keep people onboard who really don&#8217;t have the skills they need to do their job. It closes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=200&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>An interesting <a href="http://duckdown.blogspot.com/2009/07/recruiting-elite-it-talent.html">article</a> by James McGovern on recruiting IT talent.</p>
<p>The gist of it is that it&#8217;s very difficult to rely upon resumes, and that we as an industry seem to put up with &#8220;falsification&#8221; of skills and keep people onboard who really don&#8217;t have the skills they need to do their job.</p>
<p>It closes with the following statement:</p>
<blockquote><p><!--StartFragment--><span style="font-family:Helvetica, Verdana, Arial;"><span style="font-size:12pt;">&#8220;World class organizations are built on foundations where people can trust each other and don&#8217;t have to second guess the ability of the team. If you find yourself in a shop that doesn&#8217;t get it and you stay, maybe you are getting exactly what you deserve&#8230;</span></span> &#8221; &#8211; James McGovern</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/200/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=200&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/13/recruiting-it-talent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Effective Distributed Development</title>
		<link>http://benjchristensen.com/2009/07/08/effective-distributed-development/</link>
		<comments>http://benjchristensen.com/2009/07/08/effective-distributed-development/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 21:05:28 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Management & Leadership]]></category>

		<guid isPermaLink="false">http://benjchristensen.com/?p=165</guid>
		<description><![CDATA[In a previous post I spoke of &#8220;scaling distributed development&#8221; in reference to the challenges in increasing the size of a team and the complexity of projects while working under limitations of the experience level of developers available in the remote location. Continuing on this theme I have continued pondering what it takes to effectively [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=165&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In a previous post I spoke of &#8220;<a href="http://benjchristensen.com/2009/06/23/scaling-distributed-development/">scaling distributed development</a>&#8221; in reference to the challenges in increasing the size of a team and the complexity of projects while working under limitations of the experience level of developers available in the remote location.</p>
<p>Continuing on this theme I have continued pondering what it takes to effectively do development with a remote office.</p>
<p>I use the term &#8220;distributed development&#8221; as opposed to &#8220;outsourcing&#8221; since the word outsourcing generally implies one company sending the work to a second company &#8211; not multiple teams of the same company in different geographic regions, but my thoughts more or less apply to both scenarios.</p>
<p>My thoughts are shaped greatly by my experience with a remote development team in Pakistan and myself based in the US. Therefore they may or may not be applicable to other regions such as India and China.</p>
<p><strong>What I Feel is Necessary for Effective Remote Development</strong></p>
<p>In order for remote development to be successful, I believe the following things are necessary:</p>
<ul>
<li>Senior <a href="http://benjchristensen.com/2009/06/23/definition-of-a-tech-lead/">leads</a> &#8220;on the ground&#8221; with the team who have experience gained over years of development and most importantly in delivery of applications to customers and operating them in production.</li>
<li>Frequent communication between the US and remote office with as much of it being in &#8220;real-time&#8221; as possible, not just &#8220;touching base&#8221; morning and night. Development is not a shift-work job like a factory. Continuity and comprehensive knowledge is critical.</li>
<li>Human interaction through travel and face-to-face meetings. Nothing establishes team rapport like sharing a meal together. Rapport is what enables communication and difficult work to be done together in the long haul. Relations can be built remotely &#8211; but much more slowly, with much more effort and with far fewer people.</li>
<li>The ratio of senior to junior must be healthy. Too few senior resources means the junior developers are not getting the mentoring and guidance they need, they make mistakes, code quality goes down, production issues arise, morale decreases. It&#8217;s my belief that a senior developer can handle no more than 5 junior developers if one expects proper mentoring, training and good code quality. This ratio may be able to change if there are solid &#8216;intermediate&#8217; developers who can then have junior developers managed by them, but I have not seen this work very well. Intermediate generally means you&#8217;re not fresh (completely junior) but you still need guidance, direction and mentoring, and are therefore not ready to lead, mentor or manage others and therefore should not be setup to fail as such.</li>
<li>The developers themselves must be consumers of technology products. If a developer writing an ecommerce application has never actually purchased a product online and had it shipped to their door, they have no common relationship to &#8220;how it should work&#8221; let alone &#8220;how it should feel&#8221;. Common sense is taken for granted &#8211; it is something learned through life experience.</li>
</ul>
<p><strong>Positives of Pakistan Remote Development</strong></p>
<p>In 7 years of working with Pakistan developers, and likely seeing over 100 developers during that time, I have found the following to be true.</p>
<ul>
<li>Very intelligent.</li>
<li>Very eager to work and grow.</li>
<li>Amazing work ethic.</li>
<li>English language skills (for being a non-english country) are quite good.</li>
</ul>
<p>Of course, the extremely low cost is a final factor that can not be ignored and is the driving reason for having a team in Pakistan.</p>
<p>I have delivered some significant software and production systems with Pakistan development teams &#8211; myself being the only US based person. It can work and be very cost effective and rewarding.</p>
<p><strong>Negatives of Pakistan Remote Development</strong></p>
<p>There are definite drawbacks however to working remotely in Pakistan.</p>
<p><em>Time Zone</em></p>
<p>The time difference is 12 hours (from Mountain or Pacific US time depending on time of year) which makes real-time communication very difficult as it is limited to early morning or late night. It would be perfect for shift-work as you could do hand-offs every 12 hours &#8211; but development is not that type of work.</p>
<p><em>Cultural</em></p>
<p>Cultural difference means that &#8220;common sense&#8221; in each country is very different. Thought process is definitely different. Consumer experience with technology products is limited. This has an impact on understanding and requires much more detailed communication, requirements definitions and business reviews as nothing can be taken for granted. When it is, or something is &#8220;assumed&#8221;, the cost is wrong implementations and/or delayed timelines.</p>
<p>Perhaps another cultural difference and a side effect of the positive eagerness is not knowing what they don&#8217;t know. A desire to try something does not equate to knowing what or how to do it. Saying &#8220;yes&#8221; is great &#8211; except when that &#8220;yes&#8221; is not accompanied by a comprehension of what it entails. Commitments to deliverables can be rather misleading if in fact the person does not know what has been committed to or know how to deliver it, but wants to try it all the same &#8211; and therefore says yes.</p>
<p><em>Geopolitical</em></p>
<p>Let&#8217;s face it, Pakistan is not an ideal place in the world these days. It hasn&#8217;t been for years and likely won&#8217;t be for many more. My hopes and prayers are that the country will improve in its stability, infrastructure, economy, education and other matters, but today it is not a country many people desire to be in. This is a big part of why the cost is so low to hire people in the country. At the same time, it has a very significant impact on talent: people don&#8217;t stay.</p>
<p>Virtually anyone with a skill and the opportunity to leave will do so. It is evident to me in how many people I have seen emigrate away from Pakistan to Canada, US, Britain, Singapore and other countries over the years. It is more evident in the seemingly complete lack of &#8220;senior&#8221; talent in Pakistan.</p>
<p>It is virtually impossible to find and retain a &#8220;senior&#8221; level developer with 8+ years of experience, let alone 15+. Even 5+ is hard to find.</p>
<p>If the effort is made to train someone, after a few years as their skills and experience mature, the pull to leave the country increases and the company loses them.</p>
<p>I understand the pull. I work with 3 people in the US all who have immigrated from Pakistan. Incredibly smart, hard working people &#8211; very good at what they do. But they all left Pakistan instead of living their lives and careers there.</p>
<p><strong>Impact on Cost and Productivity</strong></p>
<p>Considering the extremely low cost of developers in Pakistan, doesn&#8217;t that outweigh the negatives?</p>
<p>Under certain conditions, it can work very well, but those conditions must be met or it falls apart, and in general I question the actual &#8220;low&#8221; costs.</p>
<p>Assuming communication and timezones are dealt with, and the cultural barriers addressed &#8211; one item can not be overcome through any amount of process, hard work or documentation. Geopolitical.</p>
<p>The geopolitical situation is beyond resolution for any one company or team, and it is a force that can not be ignored. To ignore it is to invite failure.</p>
<p>Long timelines, poor quality code, production issues and failed deliverables are all symptoms of one thing: a team that does not have the skills to deliver on what is being attempted.</p>
<p>What about mentoring, grooming and training? All of these are great &#8211; but if the people that are trained do not stick around longer than the training, then there is an incredible cost of training that is not recouped.</p>
<p>The senior developers spend their time training, not developing. Then the junior developers leave before they can become productive. The time of the senior developer is wasted as far as the company is concerned. The senior developer is seen to be &#8220;unproductive&#8221; because delivery is so slow &#8211; yet they have no control over the loss of the junior resources who were just getting good enough to work productively.</p>
<p>To make up for it, more junior developers are added &#8211; making the matter worse. A higher ratio of junior to senior means less mentoring and training for each developer. This means lower morale, lower skills, and poorer quality of delivery.</p>
<p>This catches up &#8212; bugs, production issues, delivery failures, long timelines. This then leads to morale problems and further turnover of resources, generally the ones with the most potential and skill.</p>
<p><strong>Conclusion</strong></p>
<p>Remote teams such as this can work very well if they are small and directly led by a senior developer lead.</p>
<p>Mentoring and grooming of developers in Pakistan (or other remote locations) can be done and can be successful. I&#8217;ve done it. It has worked well. It has only worked well though when the remote team has worked my hours and the team size was small &#8212; so that I had constant real-time communication. I did this for several years.</p>
<p>This however does not grow a business if those people don&#8217;t stick around. <a href="http://benjchristensen.com/2009/06/23/scaling-distributed-development/">Nor does it scale.</a></p>
<p>Thus, I believe the actual cost of development for an outsourced development team with these traits is in fact much higher than the monthly salary of a developer in Karachi.</p>
<p>If a senior developer from the US is spending 75% of their time mentoring, training, grooming and managing junior developers &#8211; and those developers all leave within 2-3 years, what is the cost of that 75% of time compared to if it had been spent developing the products directly?</p>
<p>If a 4 month project takes 8 months because of junior talent, and 4 months of sales are lost because of this, are those 4 months of sales higher or lower than the cost of having a team of more senior talent?</p>
<p>To ignore these facts and not look at the actual costs is to set oneself up for failure.</p>
<p>No amount of documentation, process, hope or patriotism can overcome the geopolitical issues and lack of long-term talent.</p>
<p>So what is the solution?</p>
<p>The first thought is to have everything return to the US (or Europe, Canada etc, wherever the parent company resides) where developers expect to live their lives and have long careers, so talent can be groomed and retained.</p>
<p>Some business models just can&#8217;t afford this however. In that case, another location must be found where the following applies:</p>
<ul>
<li>cost of developers at least half of the US</li>
<li>geopolitical situation where developers desire to stay, to live their full careers in their country</li>
<li>good english communication skills</li>
<li>intelligent and educated people</li>
<li>preferably a culture exposed to technology driven consumerism</li>
<li>preferably in a more similar timezone to the &#8220;parent company&#8221;, in this case, the US timezones</li>
<li>safe and easy for North Americans and Europeans to travel to and stay for extended periods of time</li>
</ul>
<p>I believe distributed development is here to stay, and creates significant value when done correctly. It is not an easy thing to do well though. Nor does ignoring the challenges of culture, distance, time and politics benefit the business.</p>
<p>I want to see a distributed team setup according to the thoughts I&#8217;ve described above and see it achieve the level of productivity and efficiency that is its potential.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/165/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=165&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/08/effective-distributed-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Communicating Product Requirements</title>
		<link>http://benjchristensen.com/2009/07/01/communicating-written-product-requirements/</link>
		<comments>http://benjchristensen.com/2009/07/01/communicating-written-product-requirements/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 20:37:43 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Management & Leadership]]></category>

		<guid isPermaLink="false">http://benjchristensen.wordpress.com/?p=123</guid>
		<description><![CDATA[I&#8217;ve spent the last day considering product and/or project requirements &#8211; in particular how to document and communicate them. A draft of a requirements document numbering in excess of 100 pages has very thoroughly covered the technical definitions of all of the various &#8216;features&#8217; &#8211; what the system needs to contain. However, it reads like [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=123&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent the last day considering product and/or project requirements &#8211; in particular how to document and communicate them.</p>
<p>A draft of a requirements document numbering in excess of 100 pages has very thoroughly covered the technical definitions of all of the various &#8216;features&#8217; &#8211; what the system needs to contain. However, it reads like a dictionary definition and does not in any way help me understand the following:</p>
<ul>
<li>What is the business purpose of the product?</li>
<li>What is the business purpose of a particular requirement?</li>
<li>What are the use cases that requirement must serve?</li>
<li>Who will use the specific requirement and for what?</li>
<li>How does a given requirement fit into the overall system so I know its context?</li>
<li>How will the product implement the feature that address the given requirement?</li>
<li>Where in the system architecture should the developers implement the given feature?</li>
</ul>
<p>I became aware while reading that most of the people for whom this document exists would not have a much better understanding of what needs to be built after reading the document than from before.</p>
<p>During my consideration I listened to a podcast on &#8220;<a href="http://www.se-radio.net/podcast/2008-10/episode-114-christof-ebert-requirements-engineering">requirements engineering</a>&#8221; that interviewed Christof Ebert.</p>
<p>I think the recommendations and principles are valuable regardless of what process is followed &#8212; whether they are done upfront or at the beginning of each iteration with waterfall, agile or a mixture of both.</p>
<p>A few notes from the podcast:</p>
<p><strong>What Requirements Should Define</strong></p>
<ul>
<li>What the Customer Needs Are</li>
<li>What the Product Should Do</li>
<li>How the Product Should Do It</li>
</ul>
<p><strong>Common Requirement Problems</strong></p>
<ul>
<li>Missing Requirements: Incorrect effort or tactics to seek out (elicit) all of the requirements.</li>
<li>Wrong Requirements: Poor capture, communication or lack of validation with stakeholders.</li>
<li>Changing Requirements: Requirements are never static, they always change.</li>
</ul>
<p><strong>3 Levels of Requirements That Need to be Addressed</strong></p>
<p><em>Market (External)</em></p>
<ul>
<li>what user or client expects</li>
<li>the &#8220;problem space&#8221;, defining the problem and what is desired to solve it</li>
<li>what will make the product successful</li>
</ul>
<p><em>Product (Internal)</em></p>
<ul>
<li>what the product will do</li>
<li>how the product will address the market requirements</li>
<li>the &#8220;solution space&#8221;, defining the solution that will meet the user (market) requirements</li>
<li>define what functionality and requirements will be made into a product</li>
</ul>
<p><em>Component (Software)</em></p>
<ul>
<li>lower level details of how to implement the requirements in software</li>
<li>non-functional requirements such as quality, service levels, maintainability etc</li>
<li>context of requirement in overall system</li>
</ul>
<p><strong>What is good enough?</strong></p>
<p>Reality must be paid attention to. Generally the economics of a project can not justify the &#8220;ivory tower&#8221; of solutions for all aspects of a project.</p>
<p>What is good enough to serve the user &#8211; in both functional and non-functional requirements?</p>
<p><strong>What is of high priority?</strong></p>
<p>Almost always there is more work to be done than resources, so what is of priority?</p>
<p>What can and will be committed to for development, with what resources and by when?</p>
<p>What can users live without, what must they have?</p>
<p><strong>My Final Thoughts</strong></p>
<p>As I prepare to attempt a revision of the requirements I&#8217;m working on, I must remember the primary reason for the documents existence: to communicate to developers, QA, analysts and business the reason for the product, what value it&#8217;s creating and what use cases it will provide functionality for.</p>
<p>If it doesn&#8217;t leave the reader with comprehension of what they&#8217;ll end up with at the end of development &#8211; at least at a 10,000 foot level &#8211; and is just a list of features with no context or purpose, then it&#8217;s a failure, no matter the length or level of detail.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/123/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=123&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/07/01/communicating-written-product-requirements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>
	</item>
		<item>
		<title>Scaling Distributed Development</title>
		<link>http://benjchristensen.com/2009/06/23/scaling-distributed-development/</link>
		<comments>http://benjchristensen.com/2009/06/23/scaling-distributed-development/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 21:19:58 +0000</pubDate>
		<dc:creator>Ben Christensen</dc:creator>
				<category><![CDATA[Management & Leadership]]></category>

		<guid isPermaLink="false">http://benjchristensen.wordpress.com/?p=101</guid>
		<description><![CDATA[Business demand as of late and future projects on my horizon are causing me to ponder and deeply consider the staffing requirements to deliver high quality, cost effective solutions in reasonable timelines. Over the past 7 years I have had very hands on experience with distributed development &#8211; working from the US with over 100 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=101&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Business demand as of late and future projects on my horizon are causing me to ponder and deeply consider the staffing requirements to deliver high quality, cost effective solutions in reasonable timelines.</p>
<p>Over the past 7 years I have had very hands on experience with distributed development &#8211; working from the US with over 100 people in development, QA, operations and other teams in Karachi, Pakistan. It has included two personal trips to Pakistan, thousands of hours of MSN or Skype chatting and many odd working hours in order to accommodate a 12 hour time zone difference.</p>
<div id="attachment_105" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-105" title="IMG_2348" src="http://benjchristensen.files.wordpress.com/2009/06/img_2348.jpg?w=300&#038;h=200" alt="IMG_2348" width="300" height="200" /><p class="wp-caption-text">June 2006 trip to Karachi, Pakistan</p></div>
<p>All in all it has been a fruitful experience. It has definitely had its troubles, pains and inefficiencies, but products and services have been delivered cost effectively to our customers ranging from Fortune 100 on down. Applications have been built which support 10s of millions of dollars in revenue and millions of transactions per day.</p>
<p>In the past year however I have begun to see a different set of challenges emerge &#8212; the ability to scale.</p>
<p>By scale I mean 2 types of scale:</p>
<p>1) Scaling the size of the team.</p>
<p>By this I simply mean adding more people to the team in Karachi to accommodate increasing work load.</p>
<p>2) Scaling the size and complexity of projects, code bases and system architecture.</p>
<p>This refers to the ever increasing amount of code, projects and modules to manage and develop as years of projects become legacy or enter &#8220;operational support&#8221; status, as increased business success and growth demands more from its systems and feature sets become increasingly larger and as architectures require more advanced models such as SOA, distributed computing, distributed infrastructures etc to handle scale, volume and global distribution of business.</p>
<p>In short, recent experience is leading me to believe that a ratio of approximately 1:5 is the maximum scale that can be achieved in a distributed development model. 1 &#8220;local&#8221; senior developer to 5 &#8220;remote&#8221; junior/intermediate developers.</p>
<p><strong>Successful Experience</strong></p>
<p>A team of 5-10 junior/intermediate developers and QA working with leadership from 12 time zones away proved to work well when the following conditions were met:</p>
<p>- The Karachi team worked their nights to accommodate the business and customer schedule which was US Pacific time zone.</p>
<p>- Daily interaction between myself and the Karachi team accounting to several hours a day of direct real-time communication on design, planning, business, and code related subjects.</p>
<p>- Micro-level involvement of myself at the code and task levels involving review of virtually every line of code written, every test, every deliverable.</p>
<p>Three successes came out of the 2+ years of this type of model:</p>
<p>1) Successful and cost effective delivery of the projects.</p>
<p>2) Mentoring, training and grooming of junior developers into what eventually became the best developer talent pool of the company in later years.</p>
<p>One member of that original team in particular, after 3+ years of 10-12 hour work days, all night shift, has immigrated to the US and works as one of our key resources in the role of Application Architect. He had the raw materials, personal drive and competency, but the opportunity to progress from a fresh graduate to &#8220;senior&#8221; level skills and roles in a matter of years was obviously accelerated greatly by the virtually non-stop direct contact with a senior developer, high-profile projects and US customers.</p>
<p>3) Proof that the distributed development model can work (under certain conditions at least).</p>
<p><strong>What a Junior Developer Needs</strong></p>
<p>I have come to the conclusion that a junior or intermediate developer needs quick and constant communication with their <a href="http://benjchristensen.wordpress.com/2009/06/23/definition-of-a-tech-lead/">lead</a> &#8212; whatever we call that person (senior developer, architect, development manager etc).</p>
<p>The lead must be capable of providing timely and thorough responses, training, mentoring and guidance.</p>
<p>Nothing can replace working in the code together, explaining why decisions are made, how to refactor something, how to add a feature to an existing codebase, how to profile, tune, optimize, debug, test and deploy.</p>
<p>Generally a young developer has little to no experience with &#8220;production&#8221; &#8211; what it really means to build and deliver a system that can be deployed and operate 24/7 &#8212; by itself with little to no involvement from developers &#8212; or even more difficult, be handed off to an operations team for deployment and operations with no direct involvement of the development team.</p>
<p>The concepts of logging, configuration, performance, multi-threading, system interaction, hardware and infrastructure are all simple in dev. Until one has experienced true production, and more importantly &#8212; issues in production, it&#8217;s difficult to understand why certain design decisions are made which seem to not be that important in dev, but make a significant impact in production, or to the teams maintaining production, or to the teams maintaining the code a year later.</p>
<p>Raw intelligence and capability exists in many people in many locations, but the proximity and availability of skilled, experienced senior personnel is key to maturing the raw skills of the young inexperienced developers into productive &#8220;seasoned&#8221; developers</p>
<p>No different than how a fresh graduate from a college in the US is of limited value until several years of grooming and experience under senior guidance, a developer working remotely has the same challenges &#8212; but with some further hurdles:</p>
<p>- Language barriers: Educated in english does not equate to fluent or comfortable.</p>
<p>- Time differences: If 2 people are 12 hours apart, that means that unless they purposefully shift their schedules, they only have a short window of time early morning and late night to work together.</p>
<p>- Physical separation: Can&#8217;t just walk around the corner to ask a quick question and can&#8217;t easily judge the emotions of the person you&#8217;re working with.</p>
<p>- Cultural separation: Many things in North America and Europe are taken for granted, such as purchasing a product on Amazon.com and having it show up at your door 2 days later. If someone has never experienced this it&#8217;s much more difficult to relate to a US business requirement when they say &#8220;the user experience should be like Amazon.com&#8221;.</p>
<p>The concept of &#8220;common sense&#8221; is not universal &#8211; it applies to experiences gained in relation to when, where and how one has lived.</p>
<p><strong>How I&#8217;ve Countered the Hurdles</strong></p>
<p><em>Language</em></p>
<p>I have found that rarely is verbal communication a good thing, even when it appears that it&#8217;s going well.</p>
<p>&#8220;Yes, I understand&#8221; is not a trust worthy statement in many cases &#8211; written or verbal &#8211; but specifically in verbal with developers whose English is a 2nd or 3rd language primarily learned through school, textbooks and the internet.</p>
<p>Reading and writing on the other hand can generally have very high comprehension and actually be much faster.</p>
<p>Using something like a Skype chat (text not verbal) allows for a number of positive things:</p>
<p>- built in meeting notes that can be referred back to</p>
<p>- dialect and speed of talking do not impair comprehension, as everyone can read and re-read if necessary what has been written</p>
<p>- appropriate time to think (and translate thoughts to English if needed) is built in to the medium</p>
<p>- multiple conversations can be had in multiple windows at a time if needed</p>
<p><em>Time Difference</em></p>
<p>On the projects where I have been most successful, I eliminated the time difference barrier by having the Karachi team work US hours to align with our customers and US business.</p>
<p>This solved 2 critical issues:</p>
<p>- The team in Karachi could now participate in business and customer interaction and communicate directly with customers via phone calls, conference calls, Skype or MSN chats &#8211; instead of everything being done in emails with 12 hour intervals or routed back and forth through a single US contact</p>
<p>- The US team and Karachi team worked together as a true team with direct real-time communication all day. The Skype/MSN window became the office, talking almost as naturally via text as if we were next door.</p>
<p><em>Physical Separation</em></p>
<p>This is obviously the most difficult to solve, but handling the time difference by everyone working the same hours and having virtually permanent communication windows open at all times in many ways made this issue seem negligible. Yes whiteboarding is more challenging &#8211; and you all have to be fast typists, but it worked.</p>
<p>It did not work for all though. I had several senior US/Canadian people that didn&#8217;t work out because they couldn&#8217;t adjust to an environment where typing instead of talking face-to-face was the primary means of interaction and whiteboarding could not be done in an impromptu manner.</p>
<p><em>Culture</em></p>
<p>I have found no secret solution for this. I have had to learn to be extremely detailed in communication, take nothing for granted, think from their perspective and avoid colloquial use of the English language and all forms of sarcasm.</p>
<p><strong>Challenge to Scaling Distributed Development</strong></p>
<p>Growing a team from 5 to 15 or 20 developers, but still having a single senior developer leading them has not worked well.</p>
<p>Obviously the team of 20 is broken into smaller teams, and there are team leads.</p>
<p>The challenge is as follows:</p>
<p>If a &#8220;team lead&#8221; has 4-5 years of experience, and that experience itself is of only limited exposure to senior skillsets, then that person is being setup to fail as they do not yet have the skills, experience, maturity or understanding to do what they are being asked to do.</p>
<p>This person, who may be an excellent developer on a 5 person team led by 1 senior developer &#8211; when asked to lead the development of 5 others is now put in a position where they are struggling to deliver, they are not able to learn as they once did while working just as a developer with the senior developer and the 5 below them are learning even less and the quality of code and timelines of delivery fall thru the floor.</p>
<p>The solution on paper is simple: &#8220;Find senior developers in Karachi to lead the team in Karachi.&#8221;</p>
<p>In practice however this is far more difficult. Even with restricted immigration policies to US, Canada, UK and other candidate countries in recent years, senior skilled technical people seek out opportunities wherever they may be and are not generally available in Karachi by the time their skills have matured to what would be a &#8220;senior <a href="http://benjchristensen.wordpress.com/2009/06/23/definition-of-a-tech-lead/">lead</a>&#8221; or &#8220;architect&#8221;.</p>
<p>Finding and retaining what is considered a &#8220;lead&#8221;, &#8220;senior developer&#8221; or &#8220;application architect&#8221; in the US is not easy or cheap anywhere &#8211; and in &#8220;outsourcing&#8221; countries challenging to the point of &#8220;it&#8217;s probably not going to happen&#8221;. At least not in a way that can be counted on. When it does happen it&#8217;s great, but it&#8217;s not something one can plan for.</p>
<p><strong>Process Doesn&#8217;t Replace Skill and Experience</strong></p>
<p>I believe process and documentation is needed and has its place, especially as projects increase in size and complexity.</p>
<p>However, no amount of documentation and process can replace competence (see comments by <a href="http://duckdown.blogspot.com/2008/04/process-as-substitute-for-competence.html">James McGovern</a> on the subject).</p>
<p>Junior developers do not become competent and capable through documentation and process &#8211; it comes through mentoring and experience, being groomed by those ahead of them and by applying their raw skills to educate and improve themselves.</p>
<p>I can be particularly verbose in writing when I want or need to be. I have written thousands of pages of documentation including hundreds of pages of visual wireframe mockups, use cases, requirements, workflow diagrams etc. The end result? Most of the people they were intended for don&#8217;t understand how it all fits together, how the business use cases apply, or how the user interfaces accomplish the use cases.</p>
<p>It has been a frustration for that to be the base &#8212; and I&#8217;ve attempted making documentation ever more detailed, having thorough review and feedback sessions and even getting to the point of spelling out exact implementation details of given requirements right down to where the code should be done in a given codebase.</p>
<p>Looking back over these experiences, the documentation worked very well for the few people on the team who had already worked with me for a few years and were more advanced in their skillsets and understanding. They would read the documents and question them very specifically. They would find mistakes, or complete design errors. They would find inconsistencies in use cases or workflows.</p>
<p>It was obvious they understood it &#8211; and contributed to improving and enabling the delivery. The other 80% of the team however had very little if anything to say.</p>
<p>Thus, documentation and process is important &#8211; they are tools to organize and enable large and complex systems to be built and maintained by skilled and competent people. They do not however enable just anybody with a degree in computer science to deliver.</p>
<p><strong>Conclusion</strong></p>
<p>Successful development depends on skilled, competent, experienced people taking ownership and delivering a project, product or system.</p>
<p>Ideally all people involved would be equally skilled and senior &#8211; but that&#8217;s a rare scenario that I&#8217;ve never experienced.</p>
<p>Thus, the mixture of senior and junior needs to be right so as to enable the senior members to still be productive in accomplishing business objectives while grooming and mentoring the next generation and increasing productivity on tasks that can be done by those with less experience with guidance.</p>
<p>It seems that the ratio can&#8217;t be much higher than about 1-to-5. The amount of time a senior developer must spend in mentoring, communicating, teaching, reviewing, and designing with the junior members, and then performing their own development, architecture and other roles limits the number of junior people a senior resource can effectively work with.</p>
<p>Regardless of location, whether a team be all physically together, distributed in cities across the US or distributed across 12 time zones like I&#8217;ve been, I believe this principle applies. Perhaps the ratio differs for different geographic placements, but in a distributed environment where one can&#8217;t walk around the corner to communicate for 5 minutes on a white-board there is a definite effort and time commitment to communication that limits the scale of a development team to a ratio of senior and junior developers that if surpassed dramatically deteriorates code quality, morale and timelines.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benjchristensen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benjchristensen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benjchristensen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benjchristensen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/benjchristensen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/benjchristensen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/benjchristensen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/benjchristensen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benjchristensen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benjchristensen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benjchristensen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benjchristensen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benjchristensen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benjchristensen.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benjchristensen.com&amp;blog=859104&amp;post=101&amp;subd=benjchristensen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://benjchristensen.com/2009/06/23/scaling-distributed-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/25a69d1e333ff36b77cf01b84b764182?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">benjchristensen</media:title>
		</media:content>

		<media:content url="http://benjchristensen.files.wordpress.com/2009/06/img_2348.jpg?w=300" medium="image">
			<media:title type="html">IMG_2348</media:title>
		</media:content>
	</item>
	</channel>
</rss>
