<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>pairprogramming &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/pairprogramming/</link>
	<description>Feed of posts on WordPress.com tagged "pairprogramming"</description>
	<pubDate>Sun, 27 Dec 2009 12:46:19 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[support Corey Haines]]></title>
<link>http://silkandspinach.net/2009/09/01/support-corey-haines/</link>
<pubDate>Tue, 01 Sep 2009 13:33:51 +0000</pubDate>
<dc:creator>Kevin Rutherford</dc:creator>
<guid>http://silkandspinach.net/2009/09/01/support-corey-haines/</guid>
<description><![CDATA[For nine months now Corey Haines has been travelling around the Eastern US as a journeyman programme]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img src="http://www.coreyhaines.com/images/corey_haines.jpg" width="100" style="float:left;margin:0 1em 1em 0;" /> For nine months now <a href="http://www.coreyhaines.com/" target="blank">Corey Haines</a> has been travelling around the Eastern US as a journeyman programmer. During that time he has run numerous code retreats, published numerous fantastic interviews with leading developers, and made dozens of blog posts and videos in which he reflects on the things he&#8217;s learned from the people he&#8217;s paired with. The body of Corey&#8217;s travails is already beginning to form an invaluable reference, and all of the insights he has pushed into the public domain add to our collective knowledge about how to develop software carefully (in both senses of the word).</p>
<p>Just as amazing as the project&#8217;s knowledge elicitation is the fact that Corey is self-funded.  He pair programs for food and lodging, and just by doing that he has given back an enormous amount to the community. Well, <a href="http://programmingtour.blogspot.com/2009/08/hat-in-hand.html" target="blank">now he&#8217;s skint</a>. The journey will continue only if Corey can raise some funds.</p>
<p>So please visit <a href="http://programmingtour.blogspot.com/" target="blank">Corey&#8217;s blog</a> and pledge a few quid to keep the journeyman on the road. I did, and it didn&#8217;t hurt a bit.</p>
<p>And next year, Corey, how about we raise the cash to get you over to the UK for a tour?</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Some notes on Pair Programming]]></title>
<link>http://metaphysicaldeveloper.wordpress.com/2009/06/09/some-notes-on-pair-programming/</link>
<pubDate>Tue, 09 Jun 2009 22:59:17 +0000</pubDate>
<dc:creator>Daniel Ribeiro</dc:creator>
<guid>http://metaphysicaldeveloper.wordpress.com/2009/06/09/some-notes-on-pair-programming/</guid>
<description><![CDATA[Pair Programming is a technique where two developers work on the same piece of code at the same time]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://en.wikipedia.org/wiki/Pair_programming">Pair Programming</a> is a technique where two developers work on the same piece of code at the same time. Popularized by <a href="http://en.wikipedia.org/wiki/Extreme_Programming">Extreme Programming</a>, <a href="http://www.ooad.org/ExtremeProgrammingRoadmap/PairProgramming.html">it</a> had been applied <a href="http://c2.com/cgi/wiki?DijkstraPairProgramming">long</a> before.</p>
<p>One team that applies it consistently can achieve several benefits, such as:</p>
<ul>
<li>Reducing the risk of Overengineering: one person is more likely to over engineer solutions when left alone, than when having a partner to keep you grounded on the problem at hand.</li>
<li>Reducing bugs: a partner reading the code is more likely to catch bugs than a the person coding, who is usually focused on the current line of code, and not on the overall context.</li>
<li>Improving <a href="http://metaphysicaldeveloper.wordpress.com/2009/04/20/quality-of-code/">Quality of Code</a>: refactorings are easier to accomplish safely when one person is not focused on actually performing the refactoring and therefore can focus on ensuring the step is safe and checking for further refactoring opportunities. Also, the methods, modules, class names, functions and variables names are readable by at least two people&#8217;s standards.</li>
<li>Knowledge Sharing: this is one of the biggest benefits of Pair Programming because when developers are pairing, they share several kinds of knowledge:
<ul>
<li>Business Knowledge: even if not doing <a href="http://en.wikipedia.org/wiki/Domain-driven_design">DDD</a>, the developers communicate about the problem on a business level, what concepts are important, the business rules, and so on.</li>
<li>Technical Knowledge: such as frameworks, object libraries, platforms, <a href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM</a> frameworks, databases, programming languages and tools that are being used, or could be used, on the project.</li>
<li>Theory Knowledge: a software project is not just solving business rules. From time to time, more abstract concepts are needed to solve a problem, and developers can teach each other about concepts such as concurrent programming, aspect oriented programming, design patterns, architectural patterns, graph theory, boolean algebra, security and cryptography, regular expressions and formal languages, <a href="http://en.wikipedia.org/wiki/Complexity_theory">problem complexity</a>, <a href="http://www.infoq.com/presentations/responsive-design">software design</a>&#8230;</li>
<li>Project Knowledge: how the project works, how it is deployed, how to access the subversion (or any other <a href="http://en.wikipedia.org/wiki/Software_configuration_management">SCM</a>), how and which methodologies are applied, how bugs are tracked, and so on. It also includes the knowledge of the history of project decisions such as: why was this library used instead of that other one, why this algorithm was selected, why this architecture is being used, which other frameworks were evaluated&#8230;</li>
</ul>
<p>In order to allow the knowledge to be shared among all participants, it is <strong>vital</strong> that pairs are <em>constantly</em> changed within a team. How often if very dependent on the size of the team, the features being tackled, and the team&#8217;s willingness to change it more or less often. All these types of knowledge sharing brings some other nice advantages: it gives the project less risk, as no single part of the code can only be changed by only one person (specially useful when this one person would be vacation, sick in a hospital, or leaves the project). Also, gives more confidence for the team to employ <a href="http://www.extremeprogramming.org/rules/collective.html">Collective Code Ownership</a>, it allows the team to be more productive over time, as less of the basics is needed to be explained and more pairs can tackle a issue where only a specialist would be able to otherwise, and finally the team as a whole can estimate better the size of features to be implemented (let it be story cards, tasks, or old-fashioned use cases), as everyone is more aware of the code base and the difficulty of problems to be tacked.</li>
</ul>
<p>Other benefits of pair programming (an in-depth analysis can be found here <a href="http://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF">paper</a>) include: improved morale, fewer interruptions, more team focus and higher productivity. It is also important to note that a team cannot pair program all day, as people usually have other tasks to attend, such as meeting&#8217;s, training, reading and responding emails, drink coffee.</p>
<p>This technique can be hard to actually apply, as many developers are not used to pairing, managers are afraid of it costing more (<em>two people working on the same machine can never  be more productive</em>) and not everyone work well with such constant <a href="http://en.wikipedia.org/wiki/Code_review">peer review</a> and collaboration. <a href="http://agilemanifesto.org/">Agile Methodologies</a> value <em>individuals and interactions over processes and tools</em>, and this is quite critical when employing Pair Programming, because these difficulties (which may exist in varying degrees) can only be surpassed as long as the team (including managers) is willing to overcome it.  Implementing it incrementally (maybe only a few hours a day, and building it up and the team sees the benefits) can ease the resistance, and the team can get experience with it while incrementally discovering impediments of pairing more often. Also, applying <a href="http://en.wikipedia.org/wiki/Extreme_Programming_Practices#Coding_standard">Coding Standards</a> first can diminish the occurrences of pairs fighting about minor issues such as whether to use underscore or <a href="http://en.wikipedia.org/wiki/CamelCase">camel case</a>. Also, if a team struggles in the beginning, mostly managing who codes and who observes, the variant <a href="http://sean-carley.blogspot.com/2006/04/ping-pong-pair-programming.html">Ping Pong Pair Programming</a> can be easier to begin with. However, it implies<a href="http://en.wikipedia.org/wiki/Test-driven_development"> Test Driven Development</a>, which can be tricky to begin if the team doesn&#8217;t do it already.</p>
<p>Pair programming is a great technique, one that is usually overlooked even by agile teams (as <a href="http://www.agilexp.com/rachel.php">Rachel Davies</a> <a href="http://www.infoq.com/presentations/agile-mashups">was able to see on some projects she coached</a>). But with so many potential benefits, it is always worth giving it a shot.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Remote pair programming experiment]]></title>
<link>http://olofb.wordpress.com/2009/03/14/remote-pair-programming-experiment/</link>
<pubDate>Sat, 14 Mar 2009 13:12:35 +0000</pubDate>
<dc:creator>Olofb</dc:creator>
<guid>http://olofb.wordpress.com/2009/03/14/remote-pair-programming-experiment/</guid>
<description><![CDATA[Me and a Simone, both at the Software Craftsmanship mailing list, tried out an experiment in doing r]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Me and a Simone</strong>, both at the <a href="http://groups.google.co.uk/group/software_craftsmanship">Software Craftsmanship mailing list</a>, tried out an experiment in doing remote <a href="http://en.wikipedia.org/wiki/Pair_programming">pair programming</a> today.</p>
<div id="attachment_1279" class="wp-caption alignright" style="width: 119px"><a href="http://nunit.com"><img class="size-thumbnail wp-image-1279" title="nunit" src="http://olofb.wordpress.com/files/2009/03/nunit.png?w=109" alt="NUnit" width="109" height="96" /></a><p class="wp-caption-text">NUnit</p></div>
<p><strong>Since both of us are comfortable with <a href="http://www.microsoft.com/express/vcsharp/">C#</a> and<a href="nunit.com"> NUnit</a></strong> committing this first infrastructure-experiment to using that combination felt the right way to go.</p>
<div id="attachment_1258" class="wp-caption alignleft" style="width: 138px"><a href="http://www.gmail.com"><img class="size-thumbnail wp-image-1258" title="gmail" src="http://olofb.wordpress.com/files/2009/03/gmail.png?w=128" alt="gmail" width="128" height="61" /></a><p class="wp-caption-text">GMail</p></div>
<p><strong>To do this experiment we started by</strong> having gmail chat as a base for all other communication channels. Next step was to get audio working via Skype. Both of these tools worked hassle-free.</p>
<div id="attachment_1259" class="wp-caption alignright" style="width: 138px"><a href="http://skype.com"><img class="size-thumbnail wp-image-1259" title="skype" src="http://olofb.wordpress.com/files/2009/03/skype.png?w=128" alt="skype" width="128" height="93" /></a><p class="wp-caption-text">Skype</p></div>
<p style="text-align:left;"><strong> Then we turned our attention to desktop sharing.</strong> Simone had looked up some alternatives yesterday, and we tried out Teamviewer first.</p>
<div id="attachment_1263" class="wp-caption alignleft" style="width: 109px"><a href="http://teamviewer.com"><img class="size-thumbnail wp-image-1263" title="teamviewer1" src="http://olofb.wordpress.com/files/2009/03/teamviewer1.png?w=99" alt="teamviewer1" width="99" height="96" /></a><p class="wp-caption-text">Teamviewer</p></div>
<p><strong>Teamviewer was fast and easy to use.</strong> But sadly the free edition just ended after ten minutes.</p>
<div id="attachment_1265" class="wp-caption alignright" style="width: 137px"><a href="http://connect.microsoft.com/site/sitehome.aspx?SiteID=94"><img class="size-thumbnail wp-image-1265" title="sharedview" src="http://olofb.wordpress.com/files/2009/03/sharedview.png?w=127" alt="sharedview" width="127" height="74" /></a><p class="wp-caption-text">Sharedview</p></div>
<p><strong>So we tried the free SharedView</strong> from Microsoft. This turned out to be too slow, with mouse movements showing up after about 0.5 to 1 seconds.</p>
<p><strong>We gave up on the desktop sharing idea</strong>, and focused on a second approach. In that approach we share only the source files via googlecode. Googlecode uses SVN for source code sharing, and both me and Simone used TortoiseSVN to synch the files.</p>
<div id="attachment_1267" class="wp-caption alignleft" style="width: 138px"><a href="http://code.google.com"><img class="size-thumbnail wp-image-1267" title="googlecode" src="http://olofb.wordpress.com/files/2009/03/googlecode.png?w=128" alt="Googlecode" width="128" height="89" /></a><p class="wp-caption-text">Googlecode</p></div>
<div id="attachment_1268" class="wp-caption alignright" style="width: 138px"><a href="http://tortoisesvn.tigris.org/"><img class="size-thumbnail wp-image-1268" title="tortoisesvn" src="http://olofb.wordpress.com/files/2009/03/tortoisesvn.png?w=128" alt="TortoiseSVN" width="128" height="79" /></a><p class="wp-caption-text">TortoiseSVN</p></div>
<p><strong>I added Simone</strong> to one of my already existing projects to get going fast.</p>
<p><strong>Then we took turns</strong> writing unit tests and production code, committing changes as we went along.</p>
<div id="attachment_1269" class="wp-caption alignright" style="width: 138px"><a href="http://sites.google.com/site/tddproblems/"><img class="size-thumbnail wp-image-1269" title="tdd-problems" src="http://olofb.wordpress.com/files/2009/03/tdd-problems.png?w=128" alt="TDD Problems" width="128" height="67" /></a><p class="wp-caption-text">TDD Problems</p></div>
<p><strong>All along</strong> we kept communicating via Skype.</p>
<p><strong>We choose one of the smaller problems</strong> from the TDD-problems* site, the <a href="http://sites.google.com/site/tddproblems/all-problems-1/Template-engine">Template Engine</a>.</p>
<p><strong></strong></p>
<div id="attachment_1270" class="wp-caption alignleft" style="width: 138px"><strong><strong><a href="http://online-stopwatch.com"><img class="size-thumbnail wp-image-1270" title="onlinestopwatch" src="http://olofb.wordpress.com/files/2009/03/onlinestopwatch.png?w=128" alt="Online stopwatch" width="128" height="88" /></a></strong></strong><p class="wp-caption-text">Online stopwatch</p></div>
<p><strong>To measure time</strong> we used online-stopwatch.</p>
<p><strong>One problem was</strong> that I used Visual C# Express edition, while Simone used Visual Studio professional, and there were conflicts between  .csproj/.sln file formats. We solved this issue by only doing edits in one file, so to avoid this hassle.</p>
<p><strong>All in all we spent almost two hours trying these things out. </strong>It was not hassle-free, but that we didn&#8217;t expect either. It was an experiment. You can see some of the resulting code in two of the screenshots nearby.</p>
<div id="attachment_1272" class="wp-caption alignright" style="width: 138px"><a href="http://olofb.files.wordpress.com/2009/03/templateengine.png"><img class="size-thumbnail wp-image-1272" title="templateengine" src="http://olofb.wordpress.com/files/2009/03/templateengine.png?w=128" alt="View from Olofs computer" width="128" height="92" /></a><p class="wp-caption-text">View from my  computer</p></div>
<div id="attachment_1273" class="wp-caption alignright" style="width: 138px"><a href="http://olofb.files.wordpress.com/2009/03/templateengineclass.png"><img class="size-thumbnail wp-image-1273" title="templateengineclass" src="http://olofb.wordpress.com/files/2009/03/templateengineclass.png?w=128" alt="Template engine class" width="128" height="82" /></a><p class="wp-caption-text">Template engine class</p></div>
<p><strong>We decided to try more another time</strong>. One idea is trying the gobby multi user editor, and maybe using python or ruby instead of C#.</p>
<p><em>* If you&#8217;d like to contribute to the TDD-problems site, please drop me or one of the other contributors a mail or leave a comment on this blog post.</em></p>
<p>Tags: <a rel="tag" href="http://bloggar.se/om/programming">programming</a>, <a rel="tag" href="http://bloggar.se/om/tdd">tdd</a>, <a rel="tag" href="http://bloggar.se/om/pairprogramming">pairprogramming</a>, <a rel="tag" href="http://bloggar.se/om/software+craftsmanship">software craftsmanship</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[On Pairing: By John De]]></title>
<link>http://indiwiz.wordpress.com/2008/12/22/on-pairing-by-john-de/</link>
<pubDate>Mon, 22 Dec 2008 09:00:10 +0000</pubDate>
<dc:creator>subwiz</dc:creator>
<guid>http://indiwiz.wordpress.com/2008/12/22/on-pairing-by-john-de/</guid>
<description><![CDATA[John De, President of N-Brain, has to say this about pairing: &#8230; I discovered that two heads re]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>John De, President of <a href="http://www.n-brain.net/">N-Brain</a>, has to say this about pairing:</p>
<p>&#8230; I discovered that two heads really are better than one. Developers have different ways of interpreting code, and different ways of solving problems. Combining this rich diversity creates a strength unequaled by any single developer. Put me in a room with a junior programmer, and turn us loose on some task, and I guarantee you that I will gain new insight into the problem from this developer, and that our resulting solution will be stronger than anything I could have come up with alone.</p>
<p>Read full interview here: <a href="http://java.dzone.com/news/interview-john-de-goes-free-un">http://java.dzone.com/news/interview-john-de-goes-free-un</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[learning by driving]]></title>
<link>http://silkandspinach.net/2006/12/09/learning-by-driving/</link>
<pubDate>Sat, 09 Dec 2006 20:28:35 +0000</pubDate>
<dc:creator>Kevin Rutherford</dc:creator>
<guid>http://silkandspinach.net/2006/12/09/learning-by-driving/</guid>
<description><![CDATA[I&#8217;ve recently been TDD-ing on a project in which I had to very quickly come to understand a lo]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I&#8217;ve recently been TDD-ing on a project in which I had to very quickly come to understand a lot of new technology (libraries, development tools, target environment, patterns, techniques).  Pair programming with a local expert was the natural approach, but it wasn&#8217;t working particularly well until I started doing the driving.  I did learn a little while my partner (the expert) had the keyboard, but it&#8217;s not easy staying alert and focussed when you understand very little of what is happening.  On the other hand, as the driver I was much more engaged; and my partner was perforce more engaged in helping me understand.  I&#8217;m sure it must have been frustrating for him having to tell me even the simplest stuff, but after only a short time I found I was able to contribute more and more to the task.  I&#8217;m still a long way behind my partner&#8217;s expertise, and yet I feel we can now work reasonably effectively as a pair.</p>
<p>I&#8217;ll try to remember this next time I&#8217;m the one with the knowledge:  let the novice learn by driving.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Qualità, holon, valori, frustrazione]]></title>
<link>http://enri.wordpress.com/2006/06/29/qualita-holon-valori-frustrazione/</link>
<pubDate>Thu, 29 Jun 2006 08:36:34 +0000</pubDate>
<dc:creator>Enri</dc:creator>
<guid>http://enri.wordpress.com/2006/06/29/qualita-holon-valori-frustrazione/</guid>
<description><![CDATA[Chi mi segue da questa piccola finestra (la puntata precedente è comunque qui) sa che da circa un me]]></description>
<content:encoded><![CDATA[Chi mi segue da questa piccola finestra (la puntata precedente è comunque qui) sa che da circa un me]]></content:encoded>
</item>
<item>
<title><![CDATA[Condividere i valori e pair programming]]></title>
<link>http://enri.wordpress.com/2006/06/09/condividere-i-valori-e-pair-programming/</link>
<pubDate>Fri, 09 Jun 2006 15:22:31 +0000</pubDate>
<dc:creator>Enri</dc:creator>
<guid>http://enri.wordpress.com/2006/06/09/condividere-i-valori-e-pair-programming/</guid>
<description><![CDATA[Ho sentito parlare più volte dell&#8217;importanza delle condivisione dei valori all&#8217;interno d]]></description>
<content:encoded><![CDATA[Ho sentito parlare più volte dell&#8217;importanza delle condivisione dei valori all&#8217;interno d]]></content:encoded>
</item>
<item>
<title><![CDATA[a second pair of eyes]]></title>
<link>http://silkandspinach.net/2005/08/11/a-second-pair-of-eyes/</link>
<pubDate>Thu, 11 Aug 2005 11:02:08 +0000</pubDate>
<dc:creator>Kevin Rutherford</dc:creator>
<guid>http://silkandspinach.net/2005/08/11/a-second-pair-of-eyes/</guid>
<description><![CDATA[I&#8217;ve just been working with a team which has a pairing policy: every item of code must have be]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I&#8217;ve just been working with a team which has a pairing policy:  every item of code must have been seen by two pairs of eyes before it can be checked in.  It doesn&#8217;t work.</p>
<p>The effect of the policy is to replace pair programming &#8211; instead developers do a &#8220;pair check-in&#8221; at the end of each development episode.  So a developer will beaver away working on a feature for a day or so, getting it right, making it work, passing all the tests.  And then he&#8217;ll call over to another team member to request a &#8220;pair check-in&#8221;.  The other team member comes to the developer&#8217;s station and is walked through the changes in the version control tool.  And then the code is checked in and the two team members part company again.</p>
<p>The problem here is that the process sets the two people up to be in opposition:  the developer is effectively asking for approval, instead of asking for help.  It&#8217;s natural for the developer to feel a sense of ownership, because he&#8217;s worked hard to get that code complete and correct.  Not many people can graciously accept negative feedback after all that hard work.</p>
<p>It can also be hard for the reviewer &#8211; the &#8220;second pair of eyes&#8221; &#8211; to come up to speed quickly enough.  The developer knows these changes intimately, but the reviewer is being asked to understand them cold.  He has little chance of being effective in that situation.</p>
<p>So this process has all of the demerits of Inspections, with none of the advantages.  The team would be more effective adopting true pair programming, I feel.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
