<?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>Sarah Taraporewalla's Technical Ramblings &#187; pair programming</title>
	<atom:link href="http://sarahtaraporewalla.com/thoughts/tag/pair-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://sarahtaraporewalla.com/thoughts</link>
	<description></description>
	<lastBuildDate>Sun, 31 Jan 2010 22:03:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Notes from a brown bag session on Pair Programming</title>
		<link>http://sarahtaraporewalla.com/thoughts/agile/notes-from-a-brown-bag-session-on-pair-programming/</link>
		<comments>http://sarahtaraporewalla.com/thoughts/agile/notes-from-a-brown-bag-session-on-pair-programming/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 08:02:53 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[pair programming]]></category>

		<guid isPermaLink="false">http://sarahtaraporewalla.com/thoughts/?p=127</guid>
		<description><![CDATA[Pair programming may feel quite strange and frustrating to those new to it. (I guess it can feel strange and frustrating to those who have been doing for a while). I gave a brown bag session to a group who were just starting to embrace pairing to try and help them overcome some of their [...]]]></description>
			<content:encoded><![CDATA[<p>Pair programming may feel quite strange and frustrating to those new to it. (I guess it can feel strange and frustrating to t<a href="http://www.fuzzylizard.com/archives/2008/12/08/989/" target="_blank">hose who have been doing for a while</a>). I gave a brown bag session to a group who were just starting to embrace pairing to try and help them overcome some of their frustrations. Here are my notes from the session.</p>
<p>What are the concerns around pairing?</p>
<ul>
<li>working with an argumentative pair &#8211; someone who wants to argue with you all the time, and disagrees with any approach you come up with</li>
<li>keyboard hogs &#8211; the other person wants to snatch the keyboard away from me all the time</li>
<li>unequal domain knowledge &#8211; one person knows everything, one person knows nothing so it is frustrating for the know-all to keep explaining everything all the time, and when they don&#8217;t the person who knows &#8216;nothing&#8217; just tunes out.</li>
<li>differing styles</li>
<li>adds to the overhead &#8211; eg computer setup, time to bring someone up to speed on what is happening when you swap pairs frequently</li>
<li>I don&#8217;t have time to check my emails</li>
<li>there is no concept of &#8216;my computer&#8217;</li>
<li>you can&#8217;t get into &#8216;the zone&#8217; when pairing, like you can when you are working by yourself because you always are interacting with another person</li>
<li>too much time rotating pairs</li>
<li>physical environment  - room to work</li>
</ul>
<div>Why do we pair?</div>
<div>
<ul>
<li>Shared responsibility</li>
<li>Knowledge transfer/sharing</li>
<li>collective code ownership</li>
<li>reduce key person dependancy (increase bus factor)</li>
<li>better quality</li>
<li>increased focus on the job at hand</li>
</ul>
<div>How can we achieve it?</div>
<div>
<ul>
<li>Teamwork 
<ul>
<li>working together to solve the problem. </li>
<li>Both members remain engaged 100% of the teim. </li>
<li>Ask when you are not engaged - &#8221;You lost me, what are you doing now?&#8221;</li>
</ul>
</li>
<li>Communication
<ul>
<li>Toss a few leading questions into the mix. Some of the phrases I usually say are:</li>
</ul>
<ul>
<li> 
<ul>
<li>&#8220;Should we do it in this way?&#8221;</li>
<li>&#8220;Do you know what we are doing?&#8221;</li>
<li>&#8220;Tell me what you are thinking?&#8221;</li>
<li>&#8220;Just let me try this and then we can discuss it.&#8221;</li>
<li>&#8220;What do you think?&#8221;</li>
</ul>
</li>
</ul>
<ul>
<li>Think allowed &#8211; vocalise your thoughts, so you can bring your pair on the journey to the solution</li>
</ul>
</li>
<li>Pass the keyboard around</li>
<li>Break the story into small tasks and write them down on post-it notes when you start a story. By breaking the story you are working on into small tasks, you can focus your attention on one thing at a time. Your mind does not need to wander thinking about all the other steps to solving the problems, as you know that you will eventually work on them. It also helps with rotating pairs through the story, as they can easily see what has been done on the story, what needs to be done and what they should focus on. </li>
<li>KISS &#8211; Keep the solution and tests simple so there is less overhead when discussing complex solutions</li>
<li>On board new team members to bring them up to speed on the overall goal and design, so you do not need to repeat basic details when you work with them on a story.</li>
</ul>
<div>Different Styles of Pairing</div>
<div>
<ul>
<li>Ping pong &#8211; I write a failing test, You make it pass then write a failing test, I make it pass then write a failing test. Rinse and Repeat</li>
<li>Chessboard clock &#8211; this can either be achieved with an actual chessboard clock where every time you start touching the keyboard, you hit your part of the clock, when your partner touches the keyboard they hit their side of the clock, and you aim to keep the times on the clock equal. Or you timebox how long you will drive for, eg I drive for 10 mins, then you drive for 10 mins.</li>
<li>Inexperience partner drives &#8211; there is nothing like learning through your fingers, so let the inexperienced person drive. This style requires that the driver actually does a lot of work, and is not just a typist for the navigator. This works best if the inexperienced person can explain what they want to do, eg &#8220;I want to call some sort of repository for this value then I can go on.&#8221; so the experienced person can show where the file is.</li>
<li>2 keyboard and 2 mouse(s)</li>
<li>Doesn&#8217;t matter who &#8216;drives&#8217; &#8211; when you have two people experienced in pairing as both people do the design verbally, and the person at the keyboard just conveys the conversation to code (often the fastest typist)</li>
</ul>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://sarahtaraporewalla.com/thoughts/agile/notes-from-a-brown-bag-session-on-pair-programming/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Pair programming is just like flying a plane</title>
		<link>http://sarahtaraporewalla.com/thoughts/agile/pair-programming-is-just-like-flying-a-plane/</link>
		<comments>http://sarahtaraporewalla.com/thoughts/agile/pair-programming-is-just-like-flying-a-plane/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 22:34:52 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[pair programming]]></category>

		<guid isPermaLink="false">http://sarahtaraporewalla.com/thoughts/?p=146</guid>
		<description><![CDATA[I have been reading Malcom Gladwell&#8217;s Outliers, and in it he discusses the events which lead to plane crashes. Gladwell explores the plane crashes of Korean Airlines to demonstrate that cultural legacy is important to understand success factors. One interesting point he explores is the communication required in the cockpit between the captain and the [...]]]></description>
			<content:encoded><![CDATA[<p>I have been reading <a title="Outliers - Malcom Gladwell" href="(http://www.amazon.com/Outliers-Story-Success-Malcolm-Gladwell/dp/0316017922" target="_blank">Malcom Gladwell&#8217;s Outliers</a>, and in it he discusses the events which lead to plane crashes. Gladwell explores the plane crashes of Korean Airlines to demonstrate that cultural legacy is important to understand success factors. One interesting point he explores is the communication required in the cockpit between the captain and the co-pilot.</p>
<p>Interestingly the flight deck of large commercial planes, like the Boeing 747 is intended to be flown by 2 people and it works best when you have one person checking the other, or both willing to participate. &#8220;It&#8217;s .. clear that when you have two people operating the plane cooperatively, you will have a safer operation than if you have a single pilot flying he plane and another person who is simply there to take over if the pilot is incapacitated&#8221;. Apparently, and surprisingly, most crashes (of the Korean Airlines) occurred when the captain was piloting the plane (someone who has many hours of experience), as opposed to the co-pilot (who typically does not have as much experience). This is because if the senior captain sees something wrong that the co-pilot is doing, then he will issue a command to the co-pilot to correct the situation. However, if the co-pilot sees something wrong he will not issue a command to his superior officer as a command, and will either hint at or suggest a correction. It is clear that clear communication is the essential ingredient to correcting otherwise fatal sequence of events*.</p>
<p>Unfortunately for the crew and passengers aboard the fatal Korean Airline planes, Korea has a culture of high respect for authority expressed in both their customs and their language. So, the cultural forces behind the Korean co-pilots makes it nearly impossible for them to speak up and correct the captain, even when they know that the captain is in the wrong (read the book &#8211; the black box recordings are amazing). What turned Korean Airlines around? They realised that the problem was not to do with the experience of their pilots or the maintenance of the planes, but that it was this cultural force which was at fault. They hired some help, enforced English (which does not have an inbuilt respect for authority) as the only language which could be used in the company, and as a result helped the co-pilots have the confidence to speak up when there was a problem.</p>
<p>Now, don&#8217;t get me wrong &#8211; I find airline investigation to be truly fascinating (have you ever read about the lead up to the flight on the Challenger? It wasn&#8217;t just the O-rings fault). But the most interesting take-home for me was how the cockpit experience parallels pair programming.</p>
<p><a title="Pair Progamming" href="http://en.wikipedia.org/wiki/Pair_programming" target="_blank">Pair programming</a> is intended for 2 people, and works best when you have one person checking the other, or both willing to participate. It is clear that when you have two people working cooperatively you will have a safer (ie higher quality) software than if you have a single developer developing the work and another person who is simply there to take over. Pair programming works well when you have the less experienced developer at the keyboard flying the development, and the more experienced developer course correcting when the co-pilot makes a mistake. And just like the cultural forces that caused so many disasters for Korean Airline, the cultural forces of the development community leads to many pair programming sessions, crash-and-burning.</p>
<p>There are <a href="http://www.fuzzylizard.com/archives/2008/12/08/989/" target="_blank">many people out there </a>who only experience the forces that lead up to pair-programming disaster stories. It can be very dismissive of us to say that these people just don&#8217;t get it (and never will), or that they haven&#8217;t tried hard enough, but Gladwell has lead me to start believing that there is a cultural bias towards single programming. Take universities for example &#8211; you can be expelled for working collaboratively; individual results count, team work in assignments is often discouraged.</p>
<p>Korean Airlines managed to change their practices despite of their culture; I am confident that anyone who is willing to can change their practices to have a successful pair programming flight. The first step as always, is to acknowledge the problem.</p>
<p> </p>
<p>* Typically, plane crashes occur as a result of seven trivial malfunctions, which, individually is no problem but the combination of all those errors leads to disaster. Typically crashes occur when the weather is poor, when the plane is running late and when the pilot has been awake for more than 12 hours. 44% of the time two pilots have never flown together before. (page 184 Outliers Gladwell, M)</p>
]]></content:encoded>
			<wfw:commentRss>http://sarahtaraporewalla.com/thoughts/agile/pair-programming-is-just-like-flying-a-plane/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
