<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Pairing for Quality</title>
	<atom:link href="http://edgehopper.com/pairing-for-quality/feed/" rel="self" type="application/rss+xml" />
	<link>http://edgehopper.com/pairing-for-quality/</link>
	<description>Tales from the Edge of Technology</description>
	<lastBuildDate>Mon, 26 Jul 2010 17:50:24 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Ken Daly</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-2/#comment-1221</link>
		<dc:creator>Ken Daly</dc:creator>
		<pubDate>Thu, 27 Nov 2008 15:03:08 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-1221</guid>
		<description>Personally, having been through large telecommunications companies down to very small 8-12 people companies. I put &quot;zero&quot; defect firmly on the side of unrealistic expectations. Now, a target of having &quot;zero&quot; defects found by customers, that you didn&#039;t already identify internally, is a very aggressive goal as well, but one the Development/QA teams should strive for. The balancing act of time, cost and quality is very real, but can be managed with the knowledge that you have measured your quality and are accepting the risks with your eyes wide open. So to answer your question, companies around the world do ship software, knowingly, with defects. How they manage that risk, provide support, manage corrective content in their iterations and how they improve as products are adopted and mature, it what separates the successful from the failed.</description>
		<content:encoded><![CDATA[<p>Personally, having been through large telecommunications companies down to very small 8-12 people companies. I put &#8220;zero&#8221; defect firmly on the side of unrealistic expectations. Now, a target of having &#8220;zero&#8221; defects found by customers, that you didn&#8217;t already identify internally, is a very aggressive goal as well, but one the Development/QA teams should strive for. The balancing act of time, cost and quality is very real, but can be managed with the knowledge that you have measured your quality and are accepting the risks with your eyes wide open. So to answer your question, companies around the world do ship software, knowingly, with defects. How they manage that risk, provide support, manage corrective content in their iterations and how they improve as products are adopted and mature, it what separates the successful from the failed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Chappell</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-2/#comment-1220</link>
		<dc:creator>John Chappell</dc:creator>
		<pubDate>Thu, 27 Nov 2008 14:31:15 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-1220</guid>
		<description>I&#039;ve found pair programming to be of great value in promoting knowledge sharing within the team. A less experienced developer paired with a more experienced one, the less experienced one has an opportunity to learn a lot - however, you have to have the right team culture to do this.

Open communication is absolutely vital. Without a culture of openness, pairs may fall into a position, as Eric Johnson has described, where one resents the other&#039;s greater insight. We found that it was important to ensure that it wasn&#039;t always one member of the pair who &#039;drove&#039;.

There are times, however, when pairing just doesn&#039;t give the results which its apologists trumpet. The worst case I&#039;ve seen is a super-fast developer paired with a very slow developer with the result that the super fast developer took a week to do something that would normally have taken him solo 2 days to do (even allowing for bug fixing time, it would have been completed and QA clear in a maximum of 3 days). It&#039;s important to pair people together who are fundamentally compatible, and not assume pairing will always give better results.

Some people are also natural loners, and they have their uses too. It will not automatically help (whatever their level of competence) to force them to work with others.

Finally, we had some interesting and good results pairing a coder with a tester. It isn&#039;t something to do all the time, but it really helps, especially when writing unit tests, and in our case, doing UI coding, to have that extra &quot;I bet I can break it this way&quot; mentality on hand, to suggest extra things that developers might naturally overlook. For this, though, you need good QA people, and they are hard to come by.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve found pair programming to be of great value in promoting knowledge sharing within the team. A less experienced developer paired with a more experienced one, the less experienced one has an opportunity to learn a lot &#8211; however, you have to have the right team culture to do this.</p>
<p>Open communication is absolutely vital. Without a culture of openness, pairs may fall into a position, as Eric Johnson has described, where one resents the other&#8217;s greater insight. We found that it was important to ensure that it wasn&#8217;t always one member of the pair who &#8216;drove&#8217;.</p>
<p>There are times, however, when pairing just doesn&#8217;t give the results which its apologists trumpet. The worst case I&#8217;ve seen is a super-fast developer paired with a very slow developer with the result that the super fast developer took a week to do something that would normally have taken him solo 2 days to do (even allowing for bug fixing time, it would have been completed and QA clear in a maximum of 3 days). It&#8217;s important to pair people together who are fundamentally compatible, and not assume pairing will always give better results.</p>
<p>Some people are also natural loners, and they have their uses too. It will not automatically help (whatever their level of competence) to force them to work with others.</p>
<p>Finally, we had some interesting and good results pairing a coder with a tester. It isn&#8217;t something to do all the time, but it really helps, especially when writing unit tests, and in our case, doing UI coding, to have that extra &#8220;I bet I can break it this way&#8221; mentality on hand, to suggest extra things that developers might naturally overlook. For this, though, you need good QA people, and they are hard to come by.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James McGovern</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-2/#comment-1219</link>
		<dc:creator>James McGovern</dc:creator>
		<pubDate>Thu, 27 Nov 2008 14:26:17 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-1219</guid>
		<description>Pair programming works when you have competent IT professionals. It is a waste of time if you are trying to do this in India...</description>
		<content:encoded><![CDATA[<p>Pair programming works when you have competent IT professionals. It is a waste of time if you are trying to do this in India&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ilias Jennane</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-2/#comment-1218</link>
		<dc:creator>Ilias Jennane</dc:creator>
		<pubDate>Thu, 27 Nov 2008 14:12:29 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-1218</guid>
		<description>What we&#039;ve done at our company is a mix of both.
We pair program once a day for an hour usually after our standup meeting.
30 minutes each.
With a daily rotation.
The real goal, rather than just code quality is to try to eliminate code ownership, and have shared responsibility over code .
thanks :)</description>
		<content:encoded><![CDATA[<p>What we&#8217;ve done at our company is a mix of both.<br />
We pair program once a day for an hour usually after our standup meeting.<br />
30 minutes each.<br />
With a daily rotation.<br />
The real goal, rather than just code quality is to try to eliminate code ownership, and have shared responsibility over code .<br />
thanks <img src='http://edgehopper.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Audrey Troutt</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-2/#comment-1217</link>
		<dc:creator>Audrey Troutt</dc:creator>
		<pubDate>Thu, 27 Nov 2008 13:59:30 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-1217</guid>
		<description>From a developers perspective pair programming is wonderful when both parties understand how to pair effectively and the task at hand warrants two brains instead of one. We often pair two experienced developers together in these cases and I can say from definite experience the amount of time saved by avoiding &quot;stuck time&quot; is significant. We also get less distracted by email, unrelated news articles and the like. Plus, we are consistently rigorous in following our code and testing standards (when alone it is easy to make up excuses to let this or that tiny case slide, etc.). Because of pair programming the bus number for our projects is higher, which comes in handy when a client has a new request and one or more of the developers are busy on another project.

The times when pairing has been a disaster is when the other party is unfamiliar with (and even suspicious of) the practice. Then it really does become 2x the cost or worse, plus it feels terrible.

We don&#039;t pair as a rule, but we are careful to evaluate whether it is needed for each story.</description>
		<content:encoded><![CDATA[<p>From a developers perspective pair programming is wonderful when both parties understand how to pair effectively and the task at hand warrants two brains instead of one. We often pair two experienced developers together in these cases and I can say from definite experience the amount of time saved by avoiding &#8220;stuck time&#8221; is significant. We also get less distracted by email, unrelated news articles and the like. Plus, we are consistently rigorous in following our code and testing standards (when alone it is easy to make up excuses to let this or that tiny case slide, etc.). Because of pair programming the bus number for our projects is higher, which comes in handy when a client has a new request and one or more of the developers are busy on another project.</p>
<p>The times when pairing has been a disaster is when the other party is unfamiliar with (and even suspicious of) the practice. Then it really does become 2x the cost or worse, plus it feels terrible.</p>
<p>We don&#8217;t pair as a rule, but we are careful to evaluate whether it is needed for each story.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Todd Britson</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-2/#comment-1202</link>
		<dc:creator>Todd Britson</dc:creator>
		<pubDate>Wed, 26 Nov 2008 19:14:07 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-1202</guid>
		<description>Hello Chris, I am not certain how Alan pairs them up if it is a one-to-one or not, but I thought I would let you know how I do it. We start the iterations with a complete team (test, dev, doc, etc..) and the developers start coding and the testers start writing test cases. However, I found it very useful to make sure the stories are worked as they are prioritized, meaning grab the first few stories assign them off and then complete them before moving on (of coarse you need to all some exceptions). These usually makes people step out from their own comfort zone and help one another. If the developer can not move on to the next story until that one is completed then he will help test, test it. The developer will either sit there assisting with setup and execution or help test another story (one he/she did not develop) be tested so that story is checked off and another can be started. This approach I find to be very affective but does make an agile coach work a little harder to stay on top of it all.</description>
		<content:encoded><![CDATA[<p>Hello Chris, I am not certain how Alan pairs them up if it is a one-to-one or not, but I thought I would let you know how I do it. We start the iterations with a complete team (test, dev, doc, etc..) and the developers start coding and the testers start writing test cases. However, I found it very useful to make sure the stories are worked as they are prioritized, meaning grab the first few stories assign them off and then complete them before moving on (of coarse you need to all some exceptions). These usually makes people step out from their own comfort zone and help one another. If the developer can not move on to the next story until that one is completed then he will help test, test it. The developer will either sit there assisting with setup and execution or help test another story (one he/she did not develop) be tested so that story is checked off and another can be started. This approach I find to be very affective but does make an agile coach work a little harder to stay on top of it all.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-1201</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Wed, 26 Nov 2008 16:13:39 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-1201</guid>
		<description>Thanks for all of the contributions to this lively discussion. 

@Alan Griffiths: I really like your idea of pairing a dev with a tester. Do you do this now and how does it work for you?</description>
		<content:encoded><![CDATA[<p>Thanks for all of the contributions to this lively discussion. </p>
<p>@Alan Griffiths: I really like your idea of pairing a dev with a tester. Do you do this now and how does it work for you?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cspag (Chris Spagnuolo ?)</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-1607</link>
		<dc:creator>cspag (Chris Spagnuolo ?)</dc:creator>
		<pubDate>Wed, 19 Nov 2008 22:43:27 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-1607</guid>
		<description>RT &lt;a rel=&quot;nofollow&quot; href=&quot;http://twitter.com/jamescarr&quot;&gt;@jamescarr&lt;/a&gt;: Another way to pair programm across geographical boundries: http://etherpad.com/ More on pairing: http://is.gd/8cgP</description>
		<content:encoded><![CDATA[<p>RT <a rel="nofollow" href="http://twitter.com/jamescarr">@jamescarr</a>: Another way to pair programm across geographical boundries: <a href="http://etherpad.com/" rel="nofollow">http://etherpad.com/</a> More on pairing: <a href="http://is.gd/8cgP" rel="nofollow">http://is.gd/8cgP</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Neelesh Vaikhary</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-674</link>
		<dc:creator>Neelesh Vaikhary</dc:creator>
		<pubDate>Mon, 10 Nov 2008 20:27:50 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-674</guid>
		<description>It works well if both the developers are extrovert and have same pace..if you pair the mismatch it&#039;s disaster. Again as Jane mentioned, most of the coding is pretty trivial these days, so having 2 senior deveoper to do pair programming is waste..may be good if you are writing some highly scalabe backend component. I have personally made it work with junior engineers just to mentor them. If that&#039;s the goal, I highly recommend it. Again the code is a as good as the programmer(s) writing it, process only helps.</description>
		<content:encoded><![CDATA[<p>It works well if both the developers are extrovert and have same pace..if you pair the mismatch it&#8217;s disaster. Again as Jane mentioned, most of the coding is pretty trivial these days, so having 2 senior deveoper to do pair programming is waste..may be good if you are writing some highly scalabe backend component. I have personally made it work with junior engineers just to mentor them. If that&#8217;s the goal, I highly recommend it. Again the code is a as good as the programmer(s) writing it, process only helps.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jane Prusakova</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-673</link>
		<dc:creator>Jane Prusakova</dc:creator>
		<pubDate>Mon, 10 Nov 2008 19:32:49 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-673</guid>
		<description>Pair programming is excellent for both knowledge transfer and when coding something non-trivial. The quality of the code written by two people is better, with fewer defects to fix down the road, and better interfaces and readability for later maintenance. Test coverage also is better when done in pair programming mode.

However, a lot of the code is relatively trivial, and having more than one person to write it is both wasteful and leads to over-engineering and extra complexity. I find that on the average 10-12 hours a week (that&#039;s about 2 days) spent pair programming is usually enough, more is too much.</description>
		<content:encoded><![CDATA[<p>Pair programming is excellent for both knowledge transfer and when coding something non-trivial. The quality of the code written by two people is better, with fewer defects to fix down the road, and better interfaces and readability for later maintenance. Test coverage also is better when done in pair programming mode.</p>
<p>However, a lot of the code is relatively trivial, and having more than one person to write it is both wasteful and leads to over-engineering and extra complexity. I find that on the average 10-12 hours a week (that&#8217;s about 2 days) spent pair programming is usually enough, more is too much.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chad Steele</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-654</link>
		<dc:creator>Chad Steele</dc:creator>
		<pubDate>Mon, 10 Nov 2008 16:13:13 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-654</guid>
		<description>Paired programming is great for short bursts of debugging or mentoring, but I don&#039;t recommend it as an ongoing management strategy. Social dynamics will eventually cost productivity. People either get a long too well or not well enough, either way the relationship gets more energy than the code.

A better strategy is cross-functional regression-test (XRT) development.

In short, you write code, someone else writes the regression test.. and you write the regression test for another developer. In other words, everyone supports each other by developing regression tests for each other&#039;s code. Nobody get&#039;s out of writing regression tests and the culture of checking each other&#039;s work through automated testing is collaborative... it rarely devolves into competition because everyone is transparent.</description>
		<content:encoded><![CDATA[<p>Paired programming is great for short bursts of debugging or mentoring, but I don&#8217;t recommend it as an ongoing management strategy. Social dynamics will eventually cost productivity. People either get a long too well or not well enough, either way the relationship gets more energy than the code.</p>
<p>A better strategy is cross-functional regression-test (XRT) development.</p>
<p>In short, you write code, someone else writes the regression test.. and you write the regression test for another developer. In other words, everyone supports each other by developing regression tests for each other&#8217;s code. Nobody get&#8217;s out of writing regression tests and the culture of checking each other&#8217;s work through automated testing is collaborative&#8230; it rarely devolves into competition because everyone is transparent.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lee Tambeau</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-623</link>
		<dc:creator>Lee Tambeau</dc:creator>
		<pubDate>Mon, 10 Nov 2008 00:59:39 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-623</guid>
		<description>I have found that the quality delivered is far superior to that developed without it and the impact on productivity has not been significant especially when considering the savings from producing a quality deliverable. However, it takes developers who are not thin-skinned and can leave their egos away from the keyboard. It&#039;s not for everyone.</description>
		<content:encoded><![CDATA[<p>I have found that the quality delivered is far superior to that developed without it and the impact on productivity has not been significant especially when considering the savings from producing a quality deliverable. However, it takes developers who are not thin-skinned and can leave their egos away from the keyboard. It&#8217;s not for everyone.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vicenç García-Altés</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-622</link>
		<dc:creator>Vicenç García-Altés</dc:creator>
		<pubDate>Mon, 10 Nov 2008 00:33:40 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-622</guid>
		<description>I think pair programming increases the quality of the product so much. You have two people thinking about the same problem and discussing about it, so the solution they found will be better. One programmer &quot;controls&quot; the other work ensuring that they accomplish the programation rules of the group, make all the tests they have to do and so on. Based in our experience I really encourages all the people to use pair programming.</description>
		<content:encoded><![CDATA[<p>I think pair programming increases the quality of the product so much. You have two people thinking about the same problem and discussing about it, so the solution they found will be better. One programmer &#8220;controls&#8221; the other work ensuring that they accomplish the programation rules of the group, make all the tests they have to do and so on. Based in our experience I really encourages all the people to use pair programming.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Kirby</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-554</link>
		<dc:creator>Nate Kirby</dc:creator>
		<pubDate>Sat, 08 Nov 2008 04:39:08 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-554</guid>
		<description>I am more in agreement with Chris &amp; Tim. Personally it seems that having QA trail the iteration makes it so you are not sure when things are actually completed and that makes metrics planning and setting expectations hard.

We use week long iterations and inside of a week we plan design implement and QA a small set of features. Yes, Naresh points out that it looks like mini waterfall, but we include daily scrums, deploying people where they are most needed, test driven design and it yields a highly productive and very agile process.

We started with 2 week long iterations, but found the meetings to oppressive, it seems 1-2 hours of planning for an iteration yields about 1 week of work and it seems that 1 week iterations are the sweet spot for our team. We have been doing this for 2 years now with a lot of success.</description>
		<content:encoded><![CDATA[<p>I am more in agreement with Chris &amp; Tim. Personally it seems that having QA trail the iteration makes it so you are not sure when things are actually completed and that makes metrics planning and setting expectations hard.</p>
<p>We use week long iterations and inside of a week we plan design implement and QA a small set of features. Yes, Naresh points out that it looks like mini waterfall, but we include daily scrums, deploying people where they are most needed, test driven design and it yields a highly productive and very agile process.</p>
<p>We started with 2 week long iterations, but found the meetings to oppressive, it seems 1-2 hours of planning for an iteration yields about 1 week of work and it seems that 1 week iterations are the sweet spot for our team. We have been doing this for 2 years now with a lot of success.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Donald Lawn</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-548</link>
		<dc:creator>Donald Lawn</dc:creator>
		<pubDate>Sat, 08 Nov 2008 01:33:53 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-548</guid>
		<description>Nobody codes well for a full day anyway. I consider 4 to 6 hours a day of hard slog to be very good. Much of the time is otherwise taken up with thinking, communicating, etc. and sadly with rework.
Pair programming helps meet the needs for socialisation, thinking, and reduces rework.</description>
		<content:encoded><![CDATA[<p>Nobody codes well for a full day anyway. I consider 4 to 6 hours a day of hard slog to be very good. Much of the time is otherwise taken up with thinking, communicating, etc. and sadly with rework.<br />
Pair programming helps meet the needs for socialisation, thinking, and reduces rework.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashley Ternes</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-546</link>
		<dc:creator>Ashley Ternes</dc:creator>
		<pubDate>Sat, 08 Nov 2008 00:33:00 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-546</guid>
		<description>I think that Dave Clack has offered one of the most common sense views on this (and there are a couple others along the same lines). We&#039;ve seen teams suffer under a regimented pairing scheme (forced pair changes based on time) and I&#039;ve definitely experienced unproductive and even very destructive code reviews (junior developers reduced to tears by arrogant and aggressive seniors). Paired programming can at least give a shared sense of ownership that actually facilitates a better working relationship between senior and more junior developers. This, of course, is dependent on the culture of the group and the desired outcomes. Like most aspects of software development you should be asking yourself what you are really trying to achieve. If you are seeking to write as much code as you can in a short period of time and you have very experienced people, then you could argue that they should pair less. If quality is more important, or you wish for more junior developers to learn from experienced heads then get them pairing. If you have the luxury, pick your teams accordingly. For the most part, we try to choose teams that consist of developers who pair very effectively and as a matter of course. This is because we have a long term view to development and we need the team to be flexible enough to work on almost any part of the code base (not to say we don&#039;t have &quot;experts&quot; in certain areas but the impact of them being away or unavailable is mitigated).

Common sense....</description>
		<content:encoded><![CDATA[<p>I think that Dave Clack has offered one of the most common sense views on this (and there are a couple others along the same lines). We&#8217;ve seen teams suffer under a regimented pairing scheme (forced pair changes based on time) and I&#8217;ve definitely experienced unproductive and even very destructive code reviews (junior developers reduced to tears by arrogant and aggressive seniors). Paired programming can at least give a shared sense of ownership that actually facilitates a better working relationship between senior and more junior developers. This, of course, is dependent on the culture of the group and the desired outcomes. Like most aspects of software development you should be asking yourself what you are really trying to achieve. If you are seeking to write as much code as you can in a short period of time and you have very experienced people, then you could argue that they should pair less. If quality is more important, or you wish for more junior developers to learn from experienced heads then get them pairing. If you have the luxury, pick your teams accordingly. For the most part, we try to choose teams that consist of developers who pair very effectively and as a matter of course. This is because we have a long term view to development and we need the team to be flexible enough to work on almost any part of the code base (not to say we don&#8217;t have &#8220;experts&#8221; in certain areas but the impact of them being away or unavailable is mitigated).</p>
<p>Common sense&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Welsh</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-541</link>
		<dc:creator>Patrick Welsh</dc:creator>
		<pubDate>Fri, 07 Nov 2008 22:45:25 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-541</guid>
		<description>Pair programming is absolutely not waste, neither in the short term (expressed in labor costs), nor in the long term. Quite the contrary, pairing reduces the defect risks, and increases the rate of continuous improvement, that together reduce the truly staggering costs of bad software delivered to production, rotting code, and the downward spiral of bad faith between customers and development teams. Speaking as an experienced solo-programmer and pair-programmer, I can say this with absolute conviction. One of my premier criteria for a new developer candidate is their aptitude for pairing -- for spotting when the pair is blocked, for spotting when the &quot;driver&quot; is slipping on practices or making a bad choice, for doing continuous testing, design, and refactoring as an ultra-high-bandwidth conversation between two highly focused programmers.

In the enterprise software dev environments in which I work, agile teams are increasingly asked to handle more and more projects, business domains, technology stacks -- you name it. And all of this happens in a context of ginormous existing legacy codebases. For the average enterprise team, the effort required Herculean, and the results often feel Sisyphean. Pairing is essential to addressing all of this.

Defect risks arise from far more locales than the object model -- we find defects all the time lurking in differences in deployment targets, in app server configurations, in un-tested database-resident biz logic, in requirements misunderstanding -- again, you name it.

Enterprise programmers must &quot;know&quot; far, far more than ever before. More business rules, more technologies, more specific codebases, more integration details, more process details. For a given story card, it is exceedingly rare that an individual programmer can &quot;know&quot; all of what is required to test-drive an implementation without defects, design flaws, and requirements misses, at a high enough rate of production.

Only with pairing do my teams have a prayer of spreading required knowledge quickly and effectively enough. Only with pairing do I see risks being systematically reduced, and continuous improvement steadily improving. Only with pairing do I see high quality at steady, high production rates.

Only with pairing can I learn, BTW, which of my team members are just not skilled enough to keep pace. Nothing separates wheat from chaff like pairing them a few times.

I have tried dev projects many times both ways: with pairing and without. Regardless of your agile blend and agile context, if you are working in a complex enterprise SW dev world, you likely need more pairing, not less. The risks you thus avoid, in my experience, far outweigh the apparent short-term increase in labor costs.

I question, BTW, most of the research done so far on this. I think we have mostly crappy methods of measuring long-term productivity that takes into account overall defects, code debt, overall production capacity (how skilled and knowledgeable the team is overall), turnover costs from burnout, production losses from context switching, etc, etc.

Before I seriously entertain discussions about how valuable pairing is, I personally want to see a far greater swath of the enterprise developer community actually capable of doing it well.</description>
		<content:encoded><![CDATA[<p>Pair programming is absolutely not waste, neither in the short term (expressed in labor costs), nor in the long term. Quite the contrary, pairing reduces the defect risks, and increases the rate of continuous improvement, that together reduce the truly staggering costs of bad software delivered to production, rotting code, and the downward spiral of bad faith between customers and development teams. Speaking as an experienced solo-programmer and pair-programmer, I can say this with absolute conviction. One of my premier criteria for a new developer candidate is their aptitude for pairing &#8212; for spotting when the pair is blocked, for spotting when the &#8220;driver&#8221; is slipping on practices or making a bad choice, for doing continuous testing, design, and refactoring as an ultra-high-bandwidth conversation between two highly focused programmers.</p>
<p>In the enterprise software dev environments in which I work, agile teams are increasingly asked to handle more and more projects, business domains, technology stacks &#8212; you name it. And all of this happens in a context of ginormous existing legacy codebases. For the average enterprise team, the effort required Herculean, and the results often feel Sisyphean. Pairing is essential to addressing all of this.</p>
<p>Defect risks arise from far more locales than the object model &#8212; we find defects all the time lurking in differences in deployment targets, in app server configurations, in un-tested database-resident biz logic, in requirements misunderstanding &#8212; again, you name it.</p>
<p>Enterprise programmers must &#8220;know&#8221; far, far more than ever before. More business rules, more technologies, more specific codebases, more integration details, more process details. For a given story card, it is exceedingly rare that an individual programmer can &#8220;know&#8221; all of what is required to test-drive an implementation without defects, design flaws, and requirements misses, at a high enough rate of production.</p>
<p>Only with pairing do my teams have a prayer of spreading required knowledge quickly and effectively enough. Only with pairing do I see risks being systematically reduced, and continuous improvement steadily improving. Only with pairing do I see high quality at steady, high production rates.</p>
<p>Only with pairing can I learn, BTW, which of my team members are just not skilled enough to keep pace. Nothing separates wheat from chaff like pairing them a few times.</p>
<p>I have tried dev projects many times both ways: with pairing and without. Regardless of your agile blend and agile context, if you are working in a complex enterprise SW dev world, you likely need more pairing, not less. The risks you thus avoid, in my experience, far outweigh the apparent short-term increase in labor costs.</p>
<p>I question, BTW, most of the research done so far on this. I think we have mostly crappy methods of measuring long-term productivity that takes into account overall defects, code debt, overall production capacity (how skilled and knowledgeable the team is overall), turnover costs from burnout, production losses from context switching, etc, etc.</p>
<p>Before I seriously entertain discussions about how valuable pairing is, I personally want to see a far greater swath of the enterprise developer community actually capable of doing it well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Meyer Rozengauz</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-535</link>
		<dc:creator>Meyer Rozengauz</dc:creator>
		<pubDate>Fri, 07 Nov 2008 21:48:44 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-535</guid>
		<description>All comments above are more or less positive and I have to agree with them. I used to practice pair programming a lot and it always gave a great result. We always got better solution than each of us could come up but his own. Pair programming with a proper partner is like making something with 2 hands and not like doing something with one hand and something else with another.

You have an issue of productivity. Yes, for simple tasks you will loose 50% or even more, so, don’t use it for simple tasks. With wrong person you will loose 90% productivity, so, don’t do it with wrong person “just to do pair programming”. But for complicated tasks you don’t loose productivity at all. Even if the pair finishes project slower you will save time on bug fixing. The most important thing here is there are projects that can be done well by a pair in reasonable time but cannot be done at all if they work not together on the whole thing but on different parts of it. I worked on project like this.

I’m not practicing pair programming any more for several years. Why? I have no proper pair-programmer. There are some great programmers around but non of them is my pair.</description>
		<content:encoded><![CDATA[<p>All comments above are more or less positive and I have to agree with them. I used to practice pair programming a lot and it always gave a great result. We always got better solution than each of us could come up but his own. Pair programming with a proper partner is like making something with 2 hands and not like doing something with one hand and something else with another.</p>
<p>You have an issue of productivity. Yes, for simple tasks you will loose 50% or even more, so, don’t use it for simple tasks. With wrong person you will loose 90% productivity, so, don’t do it with wrong person “just to do pair programming”. But for complicated tasks you don’t loose productivity at all. Even if the pair finishes project slower you will save time on bug fixing. The most important thing here is there are projects that can be done well by a pair in reasonable time but cannot be done at all if they work not together on the whole thing but on different parts of it. I worked on project like this.</p>
<p>I’m not practicing pair programming any more for several years. Why? I have no proper pair-programmer. There are some great programmers around but non of them is my pair.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Schlabach</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-534</link>
		<dc:creator>Kevin Schlabach</dc:creator>
		<pubDate>Fri, 07 Nov 2008 20:43:52 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-534</guid>
		<description>Pair programming can work and can pay off these dividends, but several things must be in place and it is not easy.

The team has to work like a team. It has to be able to handle conflict. Tools need to be in place to allow mature engineering practices. Pairs should switch constantly. Co-location is critical. It has to be eased into (can&#039;t be an all or nothing thing to start). Various levels of skill and domain knowledge increases its value. The team should be at least 4 people (two pairs) to allow rotation. A coach that can lead by example is critical in showing how it should be done and prove that it can be enjoyable.

Pair programming is easy to get wrong. I suggest it is the last of the XP practices to try since it is so fragile.</description>
		<content:encoded><![CDATA[<p>Pair programming can work and can pay off these dividends, but several things must be in place and it is not easy.</p>
<p>The team has to work like a team. It has to be able to handle conflict. Tools need to be in place to allow mature engineering practices. Pairs should switch constantly. Co-location is critical. It has to be eased into (can&#8217;t be an all or nothing thing to start). Various levels of skill and domain knowledge increases its value. The team should be at least 4 people (two pairs) to allow rotation. A coach that can lead by example is critical in showing how it should be done and prove that it can be enjoyable.</p>
<p>Pair programming is easy to get wrong. I suggest it is the last of the XP practices to try since it is so fragile.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave Aronson</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-533</link>
		<dc:creator>Dave Aronson</dc:creator>
		<pubDate>Fri, 07 Nov 2008 20:01:57 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-533</guid>
		<description>My two cents: I&#039;ve only tried it a few times, but it worked well for me. WIth one guy in particular, it was even fun! He had a similar sense of humor, skill level, attitudes re How Things Should Be Done (including that something different but still good was fine), etc. We also each knew a lot of little tricks (C, vi, Linux, shell, make, programming, whatever) that the other did not, so we each learned a lot that we could reuse. However, I can easily see how it would work poorly for certain other pairs. That guy reported that most of the others in his office, absolutely hated the experience and refused to do it any more. It definitely requires people who can give and receive criticism graciously. Toastmasters and other such leadership training can help people develop these skills.</description>
		<content:encoded><![CDATA[<p>My two cents: I&#8217;ve only tried it a few times, but it worked well for me. WIth one guy in particular, it was even fun! He had a similar sense of humor, skill level, attitudes re How Things Should Be Done (including that something different but still good was fine), etc. We also each knew a lot of little tricks (C, vi, Linux, shell, make, programming, whatever) that the other did not, so we each learned a lot that we could reuse. However, I can easily see how it would work poorly for certain other pairs. That guy reported that most of the others in his office, absolutely hated the experience and refused to do it any more. It definitely requires people who can give and receive criticism graciously. Toastmasters and other such leadership training can help people develop these skills.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: João Cintra</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-532</link>
		<dc:creator>João Cintra</dc:creator>
		<pubDate>Fri, 07 Nov 2008 19:46:08 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-532</guid>
		<description>For me pair programming worked when I was on a project with a very tight schedule and the team start to get physically tired. We use the pair programming to reduce the number of errors and to try to reduce the stress on the team. It worked very well.
I think there&#039;s no formula to this technique. There&#039;s no pattern showing us that it&#039;s time to use it.
Reading the above comments I saw a lot of different cenarios using the same technique, so I think we must have present that this exists and use it when makes sense.
Final note, I don&#039;t think it&#039;s a waste of time when it&#039;s well applied.</description>
		<content:encoded><![CDATA[<p>For me pair programming worked when I was on a project with a very tight schedule and the team start to get physically tired. We use the pair programming to reduce the number of errors and to try to reduce the stress on the team. It worked very well.<br />
I think there&#8217;s no formula to this technique. There&#8217;s no pattern showing us that it&#8217;s time to use it.<br />
Reading the above comments I saw a lot of different cenarios using the same technique, so I think we must have present that this exists and use it when makes sense.<br />
Final note, I don&#8217;t think it&#8217;s a waste of time when it&#8217;s well applied.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruce Eckfeldt</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-529</link>
		<dc:creator>Bruce Eckfeldt</dc:creator>
		<pubDate>Fri, 07 Nov 2008 18:13:02 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-529</guid>
		<description>Evaluation of pair programming needs to be discussed relative to the business value delivered. Two people working separately can write more code without a doubt; but that doesn&#039;t mean they are providing more value to the customer.

Some of the ways pairing adds more business value:

1) Continuous code review to ensure that obvious, or not so obvious, mistakes are not being created that would introduce defects.

2) Promotes code that is &quot;readable&quot; and greatly improves the long term value of a system by making it something that future developers can pick and start working with quickly.

3) Creates a collective knowledge of all aspects of the code base which reduces risks and the flexibility of team members to work on all parts of the system.

4) Discussion over implementation and requirements and a &quot;double-check&quot; of understanding of business needs. It&#039;s easy for one person to misunderstand a customer&#039;s needs, it&#039;s more difficult for two people to misunderstand something in the same way.

5) Energized work - pairing keeps the development moving and allows programmers to &quot;spell&quot; each other by taking turns driving.

6) Pairing promotes the development of &quot;simple&quot; (but not simplistic) solutions that are easier to understand and tend to produce less code. This leads to less system complexity and overall size which allows new features to be added in the future with less work.</description>
		<content:encoded><![CDATA[<p>Evaluation of pair programming needs to be discussed relative to the business value delivered. Two people working separately can write more code without a doubt; but that doesn&#8217;t mean they are providing more value to the customer.</p>
<p>Some of the ways pairing adds more business value:</p>
<p>1) Continuous code review to ensure that obvious, or not so obvious, mistakes are not being created that would introduce defects.</p>
<p>2) Promotes code that is &#8220;readable&#8221; and greatly improves the long term value of a system by making it something that future developers can pick and start working with quickly.</p>
<p>3) Creates a collective knowledge of all aspects of the code base which reduces risks and the flexibility of team members to work on all parts of the system.</p>
<p>4) Discussion over implementation and requirements and a &#8220;double-check&#8221; of understanding of business needs. It&#8217;s easy for one person to misunderstand a customer&#8217;s needs, it&#8217;s more difficult for two people to misunderstand something in the same way.</p>
<p>5) Energized work &#8211; pairing keeps the development moving and allows programmers to &#8220;spell&#8221; each other by taking turns driving.</p>
<p>6) Pairing promotes the development of &#8220;simple&#8221; (but not simplistic) solutions that are easier to understand and tend to produce less code. This leads to less system complexity and overall size which allows new features to be added in the future with less work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Sutherland</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-524</link>
		<dc:creator>Jeff Sutherland</dc:creator>
		<pubDate>Fri, 07 Nov 2008 17:31:04 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-524</guid>
		<description>I work with two companies that do pair programming on almost everything (hundreds of developers) and they are two of the most productive companies in the world - 5x, 10x, and even higher than many companies I work with on all projects. So pair programming doesn&#039;t slow you down.</description>
		<content:encoded><![CDATA[<p>I work with two companies that do pair programming on almost everything (hundreds of developers) and they are two of the most productive companies in the world &#8211; 5x, 10x, and even higher than many companies I work with on all projects. So pair programming doesn&#8217;t slow you down.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Louis Tassé</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-521</link>
		<dc:creator>Louis Tassé</dc:creator>
		<pubDate>Fri, 07 Nov 2008 16:58:11 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-521</guid>
		<description>Pair Programming needs to be well applied. It depends on your software project characteristics. Basically, it depends a lot on the culture at work, the people, whether you have documentation or implicit documentation. Overall, I have used it very often (in a punctual manner and as a standard in the process) and it always allowed the results to get done faster and better. Or course, for some situations, it might need more follow up from the coach. And some staff are simply not suited for that.

That&#039;s why it certainly cannot be applied abroad blindly and must always be a case per case evaluation. I especially recommend it for teams that have a very high team spirit and for critical situation where there is a lot of unknown in the feature you want to implement. In those case, two people will work way better than having each of them in their own corner alone.

Don&#039;t forget that while they are working on the same task, both of them are giving an effort on it. And since software engineering is not something that can be evaluated on quantitative production result (we are not making boxes), &quot;When well done&quot;, It is obvious that about the same value is given from a pair programming activity that there is with having both of them working separately.

It can be risky, but if you know your staff and your in control, then it&#039;s a definite plus.</description>
		<content:encoded><![CDATA[<p>Pair Programming needs to be well applied. It depends on your software project characteristics. Basically, it depends a lot on the culture at work, the people, whether you have documentation or implicit documentation. Overall, I have used it very often (in a punctual manner and as a standard in the process) and it always allowed the results to get done faster and better. Or course, for some situations, it might need more follow up from the coach. And some staff are simply not suited for that.</p>
<p>That&#8217;s why it certainly cannot be applied abroad blindly and must always be a case per case evaluation. I especially recommend it for teams that have a very high team spirit and for critical situation where there is a lot of unknown in the feature you want to implement. In those case, two people will work way better than having each of them in their own corner alone.</p>
<p>Don&#8217;t forget that while they are working on the same task, both of them are giving an effort on it. And since software engineering is not something that can be evaluated on quantitative production result (we are not making boxes), &#8220;When well done&#8221;, It is obvious that about the same value is given from a pair programming activity that there is with having both of them working separately.</p>
<p>It can be risky, but if you know your staff and your in control, then it&#8217;s a definite plus.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Slav Kabachenko</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-517</link>
		<dc:creator>Slav Kabachenko</dc:creator>
		<pubDate>Fri, 07 Nov 2008 16:39:30 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-517</guid>
		<description>From my personal experience: if the pairing developers are on the same level of the expertize - waste of the resources/time.
If you are not practicing the design/code reviews and Test First development(TFD), then pairing(two high level developers) can produce better quality software, but be prepared to pay more.
TFD and the reviews will improve the software quality even in AGILE environment.
Pairing is very useful for a knowledge transfer.
Again, those statements are from a personal experience, and are not Hypothetically Speaking.</description>
		<content:encoded><![CDATA[<p>From my personal experience: if the pairing developers are on the same level of the expertize &#8211; waste of the resources/time.<br />
If you are not practicing the design/code reviews and Test First development(TFD), then pairing(two high level developers) can produce better quality software, but be prepared to pay more.<br />
TFD and the reviews will improve the software quality even in AGILE environment.<br />
Pairing is very useful for a knowledge transfer.<br />
Again, those statements are from a personal experience, and are not Hypothetically Speaking.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob Lupton</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-511</link>
		<dc:creator>Bob Lupton</dc:creator>
		<pubDate>Fri, 07 Nov 2008 14:28:04 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-511</guid>
		<description>Has anyone else tried pairing a developer with a tester to gain the same benefit in terms of the detection close to the point of bug creation. It seemed to work especially where changes were being made to an existing system which the tester knew far better as a pseudo user. Interested to here the opinions of other on this on


- Another Bob</description>
		<content:encoded><![CDATA[<p>Has anyone else tried pairing a developer with a tester to gain the same benefit in terms of the detection close to the point of bug creation. It seemed to work especially where changes were being made to an existing system which the tester knew far better as a pseudo user. Interested to here the opinions of other on this on</p>
<p>- Another Bob</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Corbin</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-510</link>
		<dc:creator>David Corbin</dc:creator>
		<pubDate>Fri, 07 Nov 2008 13:53:19 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-510</guid>
		<description>EDIT: The post below was formulated, but not posted yesterday...the comments above reflect similar results, but I was not awaqre of them at the time of authoring....

My experiences with pair programming run the full spectrum. In summary, the vast majority of times it has not provided a net gain, but there have been a few instances where the results were fantastic (and I do not believe the project would have suceeded with out it).

So what has differentiated these experiences.....

The very best have been some occurances where I am paired with another senior developer on a task that requires strict attention to technical details and heavy conceptual work at the same time. In some of these (fondly remembered) cases, it actually involved me walking aoround the room, drawing on a white board, and giving verbal instructions. At the same time, the partner was concerned solely with the technical details of implementing my utterances and scribbles.

Similar effects are achieved when one member has strong technical knowledge, while the other has stronger &quot;problem domain&quot; knowledge. Individually they do not possess all of the required information to produce a world class solution.

Times when I have paired two juniors has often brought good results. I find this works much better than pairing a junior with a senior (more on that situation later). The &quot;Thwo heads are better than one&quot; principle applies here. If I find that the work results are becoming lopsided (they often do), then the pairs are shuffled. If a pattern emerges it makes &quot;HR&quot; decisions very easy.

For the senior/junior situation, I prefer to treat this as a mentoring scenario rather than a pairing scenario. This results in a different dynamic and different expectations. In most cases the number of hours where they directly work together is in the 8-20 range per week. During the remaining hours, the junior person &quot;plods through&quot; the directed assignments, while the senior person either mentors another junior, or actually performs senior level work.

OF course, these are just my experiences, but they have stood the test of time (the first example goes back to projects in the mid 1980&#039;s - well before these methodologies were formalized).</description>
		<content:encoded><![CDATA[<p>EDIT: The post below was formulated, but not posted yesterday&#8230;the comments above reflect similar results, but I was not awaqre of them at the time of authoring&#8230;.</p>
<p>My experiences with pair programming run the full spectrum. In summary, the vast majority of times it has not provided a net gain, but there have been a few instances where the results were fantastic (and I do not believe the project would have suceeded with out it).</p>
<p>So what has differentiated these experiences&#8230;..</p>
<p>The very best have been some occurances where I am paired with another senior developer on a task that requires strict attention to technical details and heavy conceptual work at the same time. In some of these (fondly remembered) cases, it actually involved me walking aoround the room, drawing on a white board, and giving verbal instructions. At the same time, the partner was concerned solely with the technical details of implementing my utterances and scribbles.</p>
<p>Similar effects are achieved when one member has strong technical knowledge, while the other has stronger &#8220;problem domain&#8221; knowledge. Individually they do not possess all of the required information to produce a world class solution.</p>
<p>Times when I have paired two juniors has often brought good results. I find this works much better than pairing a junior with a senior (more on that situation later). The &#8220;Thwo heads are better than one&#8221; principle applies here. If I find that the work results are becoming lopsided (they often do), then the pairs are shuffled. If a pattern emerges it makes &#8220;HR&#8221; decisions very easy.</p>
<p>For the senior/junior situation, I prefer to treat this as a mentoring scenario rather than a pairing scenario. This results in a different dynamic and different expectations. In most cases the number of hours where they directly work together is in the 8-20 range per week. During the remaining hours, the junior person &#8220;plods through&#8221; the directed assignments, while the senior person either mentors another junior, or actually performs senior level work.</p>
<p>OF course, these are just my experiences, but they have stood the test of time (the first example goes back to projects in the mid 1980&#8242;s &#8211; well before these methodologies were formalized).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Souness</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-509</link>
		<dc:creator>Stephen Souness</dc:creator>
		<pubDate>Fri, 07 Nov 2008 13:26:19 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-509</guid>
		<description>My most enjoyable and worthwhile pair programming experience was in a similar structure to that Jerome mentioned:
- weekly iterations
- fulltime pair programming
- switching pair each day or half day

The team was small and each member had a similar level of experience with the core technologies, but enough diversity in experience of the non-core technologies to make the development process double as a worthwhile learning experience for all.

Sometimes I find that I come up with a solution to a problem partway through explaining what it is, so having someone actively discussing something with me throughout the day prevents the occassional &quot;can&#039;t see the forest for the trees&quot; situations.</description>
		<content:encoded><![CDATA[<p>My most enjoyable and worthwhile pair programming experience was in a similar structure to that Jerome mentioned:<br />
- weekly iterations<br />
- fulltime pair programming<br />
- switching pair each day or half day</p>
<p>The team was small and each member had a similar level of experience with the core technologies, but enough diversity in experience of the non-core technologies to make the development process double as a worthwhile learning experience for all.</p>
<p>Sometimes I find that I come up with a solution to a problem partway through explaining what it is, so having someone actively discussing something with me throughout the day prevents the occassional &#8220;can&#8217;t see the forest for the trees&#8221; situations.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ralph Johnson</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-508</link>
		<dc:creator>Ralph Johnson</dc:creator>
		<pubDate>Fri, 07 Nov 2008 13:07:13 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-508</guid>
		<description>People who study programming tend to ignore personality differences, but I think they are important. Pair programming appeals much more to extroverts (using the Meyers-Briggs definition) than to introverts. Most programmers are introverts. The way we teach programming tends to select for introverts, and to discriminate against extroverts. The way most programming groups operate (everybody working by themselves in cubicles) is suited for introverts, and makes life hard for extroverts.

I&#039;ve talked to more than one person who quit programming because it was &quot;lonely&quot; and they needed to talk to people. They would have been much happier (and more productive) in an XP group.

There is a lot more to pair programming than personality, of course. One of my friends who is fairly introverted spent half a year or so pair programming, and says it was both one of the most productive and one of the most tiring periods of his life. The advantages of pair programming are the same whether you are introverted or extroverted, but costs are different.

I teach a software engineering class at Illinois in which the students all are required to practice XP, including pair programming. Some students like pair programming, some don&#039;t. Like anything else, you get better at it with practice. Most people have trouble with it at first, but after practice they can see its benefits. Some people think it is wonderful. I haven&#039;t done a careful study of it, but I bet the differences in how people feel about XP is related to their personality.</description>
		<content:encoded><![CDATA[<p>People who study programming tend to ignore personality differences, but I think they are important. Pair programming appeals much more to extroverts (using the Meyers-Briggs definition) than to introverts. Most programmers are introverts. The way we teach programming tends to select for introverts, and to discriminate against extroverts. The way most programming groups operate (everybody working by themselves in cubicles) is suited for introverts, and makes life hard for extroverts.</p>
<p>I&#8217;ve talked to more than one person who quit programming because it was &#8220;lonely&#8221; and they needed to talk to people. They would have been much happier (and more productive) in an XP group.</p>
<p>There is a lot more to pair programming than personality, of course. One of my friends who is fairly introverted spent half a year or so pair programming, and says it was both one of the most productive and one of the most tiring periods of his life. The advantages of pair programming are the same whether you are introverted or extroverted, but costs are different.</p>
<p>I teach a software engineering class at Illinois in which the students all are required to practice XP, including pair programming. Some students like pair programming, some don&#8217;t. Like anything else, you get better at it with practice. Most people have trouble with it at first, but after practice they can see its benefits. Some people think it is wonderful. I haven&#8217;t done a careful study of it, but I bet the differences in how people feel about XP is related to their personality.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Rowe</title>
		<link>http://edgehopper.com/pairing-for-quality/comment-page-1/#comment-507</link>
		<dc:creator>Matt Rowe</dc:creator>
		<pubDate>Fri, 07 Nov 2008 12:23:07 +0000</pubDate>
		<guid isPermaLink="false">http://edgehopper.com/pairing-for-quality/#comment-507</guid>
		<description>I&#039;ve not had a lot of experience managing pair programming but these are some of the benefits I&#039;ve seen; new team members pick up the product faster, healthy debate over the best approach to take, useful to motivate team members that may lag behind and better quality coding, not to mention a bit of old fashion competition. Our best example was cutting an estimate of 30 hrs down to 12 ( 6 x2) in recent times. In the team, we tried mixing some paring and some devs on their own, then rotating depending on skill sets to tasks.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve not had a lot of experience managing pair programming but these are some of the benefits I&#8217;ve seen; new team members pick up the product faster, healthy debate over the best approach to take, useful to motivate team members that may lag behind and better quality coding, not to mention a bit of old fashion competition. Our best example was cutting an estimate of 30 hrs down to 12 ( 6 x2) in recent times. In the team, we tried mixing some paring and some devs on their own, then rotating depending on skill sets to tasks.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
