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

<channel>
	<title>Steve Bockman &#187; Collaboration</title>
	<atom:link href="http://stevebockman.com/blog/category/collaboration/feed/" rel="self" type="application/rss+xml" />
	<link>http://stevebockman.com/blog</link>
	<description>Agile Software Development, Training and Coaching</description>
	<lastBuildDate>Thu, 28 Jan 2010 02:30:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Avoiding the Knowledge Transfer Bottleneck</title>
		<link>http://stevebockman.com/blog/2009/08/14/avoiding-the-knowledge-transfer-bottleneck/</link>
		<comments>http://stevebockman.com/blog/2009/08/14/avoiding-the-knowledge-transfer-bottleneck/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 17:02:24 +0000</pubDate>
		<dc:creator>stevebockman</dc:creator>
				<category><![CDATA[Collaboration]]></category>

		<guid isPermaLink="false">http://stevebockman.com/blog/?p=144</guid>
		<description><![CDATA[In software development there are many ways to transfer the knowledge about how to build a product to the people who do the actual building. Production can be severely hampered, however, if that knowledge is being produced more rapidly than it can be consumed. This is the knowledge transfer bottleneck.
I recently hosted a workshop that [...]]]></description>
			<content:encoded><![CDATA[<p>In software development there are many ways to transfer the knowledge about how to build a product to the people who do the actual building. Production can be severely hampered, however, if that knowledge is being produced more rapidly than it can be consumed. This is the <strong>knowledge transfer bottleneck</strong>.</p>
<p>I recently hosted a workshop that let participants experience three different ways of transferring knowledge in a production environment. The product, in this case, was a paper airplane of unusual design. The idea was to try different ways of transferring the knowledge about how to build the airplane from the &#8220;chief designer&#8221; (me) to the production workers, and to compare the relative productivity of the different methods, which were:</p>
<ul>
<li><strong>Documentation</strong> &#8211; The workers were given written instructions (22 steps worth) for building the airplane.</li>
<li><strong>Reverse Engineering</strong> &#8211; The workers were given a completed airplane which they could study in order to reproduce the steps required to build it.</li>
<li><strong>Mentoring</strong> &#8211; The &#8220;chief designer&#8221; built an airplane step by step and the workers replicated each step as it was performed.</li>
</ul>
<p>The experiment was conducted in two phases. In the first phase, all 8 participants used the <em>Documentation</em> method. In the second phase, one team of 4 tried <em>Reverse Engineering</em>, while the other team of 4 tried <em>Mentoring</em>.</p>
<p>The results were interesting. Using the <em>Documentation</em> method, only one person out of a total of 8 came close to being able to build the airplane at all in the 5-minute period allotted.</p>
<p>Using the <em>Reverse Engineering</em> method, 1 person out of a total of 4 produced a completed airplane in 5 minutes.</p>
<p>Using the <em>Mentoring</em> method, each of 4 team members produced a completed airplane, and in less than the 5 minutes available.</p>
<p><strong>The knowledge transfer bottleneck in software</strong></p>
<p>In a software development effort, knowledge transfer takes place all the time, and it&#8217;s easy to imagine a software developer in the &#8220;chief designer&#8221; role described in the exercise above.</p>
<p>Let&#8217;s say I&#8217;m a developer who has discovered, and written the code to implement, a technique for binding some data to the controls in a user interface, and that this technique forms a pattern that my fellow developers want to know about. If you were one of my fellow developers, would you rather I (a) gave you a document I had written about the technique, (b) told you where the code was and suggested you figure it out for yourself, or (c) paired with you to implement the pattern for a new set of data?</p>
<p>Now, certainly, pairing with you takes more of my time, and might seem less efficient from my viewpoint. After all, I could be off designing the next pattern, and the one after that. But the  productivity of the team as a whole, rather than my personal productivity, is what&#8217;s important. And mentoring helps increase the team&#8217;s productivity by avoiding <strong>knowledge transfer bottlenecks</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevebockman.com/blog/2009/08/14/avoiding-the-knowledge-transfer-bottleneck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Start at the End</title>
		<link>http://stevebockman.com/blog/2009/07/11/start-at-the-end/</link>
		<comments>http://stevebockman.com/blog/2009/07/11/start-at-the-end/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 19:42:56 +0000</pubDate>
		<dc:creator>stevebockman</dc:creator>
				<category><![CDATA[Collaboration]]></category>

		<guid isPermaLink="false">http://stevebockman.com/blog/?p=106</guid>
		<description><![CDATA[Any software development effort involves the conveying of information, but it&#8217;s easy for the important information to be hidden by related (but less important) stuff. Starting at the end is a good way to focus on the information that matters most.
Drawing Maps
In the days before Google Maps, we used to ask other people for directions [...]]]></description>
			<content:encoded><![CDATA[<p>Any software development effort involves the conveying of information, but it&#8217;s easy for the important information to be hidden by related (but less important) stuff. Starting at the end is a good way to focus on the information that matters most.</p>
<p><strong>Drawing Maps</strong></p>
<p>In the days before Google Maps, we used to ask other people for directions to places we wanted to go, and often someone would volunteer to draw a map on paper. After taking part in many of these information exchanges, I observed that most people (including myself), when drawing a map, start at the beginning. That is, they start the drawing at the traveler&#8217;s point of origin and proceed from there to the destination.</p>
<p>The result was almost always adequate for the intended purpose of getting the traveler from point A to point B, but I noticed that the destination often ended up being crammed into a corner of the page, almost as if it were an afterthought rather than the most important piece of information on the map.</p>
<p>Now it certainly makes sense to draw a map in this fashion. I imagine that the main reason for doing it this way is that when drawing a map we imagine ourselves actually taking the trip we&#8217;re describing. We start at the beginning of our imaginary trip and eventually find our way to the destination.  And unless we begin with an inordinately large piece of paper, or are particularly good at allocating space ahead of time, we end up with a map that contains extra information we really don&#8217;t need, while details of the destination are omitted because we run out of room.</p>
<p>So I started drawing maps from the end. The first place I put on a map is the destination. From there I work backwards, drawing the streets leading to the destination. Then, if I have room, I draw the highways leading back to the city of origin. The result is a map that emphasizes the important details.</p>
<p><strong>Communicating Technical Information</strong></p>
<p>I&#8217;ve noticed a similarity between the way people draw maps and the way they convey technical information. That is, they often tend to start at the beginning and proceed in chronological order to the end.</p>
<p>Just as in map drawing, this approach makes a certain amount of sense. It&#8217;s natural for people to convey information in the order in which they discovered or developed it. The communication of the information is kind of a chronological account of the original experience of creation.</p>
<p>The problem is, it&#8217;s the end (the destination) that I&#8217;m most interested in. I tend to think of the result as the important part, with everything leading up to it being more like &#8220;supporting information&#8221; which I may or may not want (or even need) to know.</p>
<p>In other words, I tend to get lost in the details of the journey, when what I&#8217;m really interested in is where I&#8217;m going to end up.</p>
<p><strong>Writing Software</strong></p>
<p>I used to write code from top to bottom. That is, when I wrote a method I would start at the top of the method, and write lines of code in the order in which they would be executed. It made sense, in a way, because I was taught to read and write English from top to bottom. It seemed the natural way to go about it. Unfortunately this approach tended to introduce unnecessary code into the method that had to be stripped out later.</p>
<p>Now when I write software, I like to start at the end. When I write a unit test, for example, I start by writing the <em>assert</em> statement, even if it asserts against objects that don&#8217;t yet exist. I start with the assertion, then I see what the assertion requires and I write a line of code above it to satisfy those requirements. If satisfying those requirements introduces new requirements, I write a line of code above that, and so on.</p>
<p>The result is a unit test that carries no extra baggage, no superfluous information, with an emphasis on the most important part, the <em>assertion</em>.</p>
<p>The assertion in a unit test is analogous to the destination on a map. Both are the most important pieces of information. Both make excellent starting points.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevebockman.com/blog/2009/07/11/start-at-the-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
