<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Two heads are better than one</title>
	<atom:link href="http://assertionfailed.wordpress.com/2009/06/13/two-heads-are-better-than-one/feed/" rel="self" type="application/rss+xml" />
	<link>http://assertionfailed.wordpress.com/2009/06/13/two-heads-are-better-than-one/</link>
	<description>Software Testing and Development related blog</description>
	<lastBuildDate>Mon, 20 Jul 2009 18:45:36 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: shyamseshadri</title>
		<link>http://assertionfailed.wordpress.com/2009/06/13/two-heads-are-better-than-one/#comment-59</link>
		<dc:creator>shyamseshadri</dc:creator>
		<pubDate>Mon, 20 Jul 2009 18:45:36 +0000</pubDate>
		<guid isPermaLink="false">http://assertionfailed.wordpress.com/?p=63#comment-59</guid>
		<description>Heya,

Completely agree on some of the points you raised, and that devil&#039;s advocate is usually permanently resident on my shoulders, so I know where you are coming from.

1.) With regards to productivity, as I mentioned, Pair programming is not for everyone. There are people I know on my team (me included), who are far more productive when they pair than when they are not. This is not due to the fact that they can&#039;t work independently, oh heaven&#039;s no. Its mostly because of lack of focus. Its easier to get in a 2-3 hour slot of pure productivity as compared to sometimes getting distracted when working independently. Would I recommend pairing all the time ? Hell no. I find that if I pair maybe 2 - 3 hours a day, and then work on my own the rest of the time, I get the most work done.

As for TDD, I will be the first one to say that doing TDD will not keep your bugs away. Because there is no way to cover or even remember what cases are possible. TDD just gives me confidence that when I finally hit play, it won&#039;t blow up for the silliest things like forgetting an operation or method call. When I write things with conditionals or tricky operations, TDD is my safety net to fall back on. Trivial stuff, I usually don&#039;t bother.

2.) Well, even ignoring the fact that they might not have lengthy code reviews, I still find the fact that not having what you call generalizing specialists and common codebase ownership can be extremely fatal when that specialist goes on leave (happening right now with me, in fact...). I have had times when I worked solely on a part, and then when I went on vacation, things blew up and people had to spend a day trying to patch a trivial issue. And its not the fact that few programmers would time-bomb themselves with poor code, its the fact that they don&#039;t know any better, not having been told there&#039;s a better way (I was guilty of this when I initially joined). This is especially true if you hire a lot of new grads.

3.) I love vi-slingers. I love vi, in fact. And if someone tells me to pair all the time, I would be the first one to tell them to take a hike. Fact of the matter is, there are times when we need to sling some code on our own, and pairing or teaching someone else would just be a hindrance. In those cases, sling away. Don&#039;t let anyone tell you otherwise. But just don&#039;t frown upon pairing completely, because its often a useful and underused technique, and best of all, can help get you someone else who can maintain what you just wrote :D.

Finally, I moved blogs, so find all my new posts from now at http://theshyam.com
Thanks for commenting.</description>
		<content:encoded><![CDATA[<p>Heya,</p>
<p>Completely agree on some of the points you raised, and that devil&#8217;s advocate is usually permanently resident on my shoulders, so I know where you are coming from.</p>
<p>1.) With regards to productivity, as I mentioned, Pair programming is not for everyone. There are people I know on my team (me included), who are far more productive when they pair than when they are not. This is not due to the fact that they can&#8217;t work independently, oh heaven&#8217;s no. Its mostly because of lack of focus. Its easier to get in a 2-3 hour slot of pure productivity as compared to sometimes getting distracted when working independently. Would I recommend pairing all the time ? Hell no. I find that if I pair maybe 2 &#8211; 3 hours a day, and then work on my own the rest of the time, I get the most work done.</p>
<p>As for TDD, I will be the first one to say that doing TDD will not keep your bugs away. Because there is no way to cover or even remember what cases are possible. TDD just gives me confidence that when I finally hit play, it won&#8217;t blow up for the silliest things like forgetting an operation or method call. When I write things with conditionals or tricky operations, TDD is my safety net to fall back on. Trivial stuff, I usually don&#8217;t bother.</p>
<p>2.) Well, even ignoring the fact that they might not have lengthy code reviews, I still find the fact that not having what you call generalizing specialists and common codebase ownership can be extremely fatal when that specialist goes on leave (happening right now with me, in fact&#8230;). I have had times when I worked solely on a part, and then when I went on vacation, things blew up and people had to spend a day trying to patch a trivial issue. And its not the fact that few programmers would time-bomb themselves with poor code, its the fact that they don&#8217;t know any better, not having been told there&#8217;s a better way (I was guilty of this when I initially joined). This is especially true if you hire a lot of new grads.</p>
<p>3.) I love vi-slingers. I love vi, in fact. And if someone tells me to pair all the time, I would be the first one to tell them to take a hike. Fact of the matter is, there are times when we need to sling some code on our own, and pairing or teaching someone else would just be a hindrance. In those cases, sling away. Don&#8217;t let anyone tell you otherwise. But just don&#8217;t frown upon pairing completely, because its often a useful and underused technique, and best of all, can help get you someone else who can maintain what you just wrote <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Finally, I moved blogs, so find all my new posts from now at <a href="http://theshyam.com" rel="nofollow">http://theshyam.com</a><br />
Thanks for commenting.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: oogtech</title>
		<link>http://assertionfailed.wordpress.com/2009/06/13/two-heads-are-better-than-one/#comment-58</link>
		<dc:creator>oogtech</dc:creator>
		<pubDate>Sun, 19 Jul 2009 16:14:56 +0000</pubDate>
		<guid isPermaLink="false">http://assertionfailed.wordpress.com/?p=63#comment-58</guid>
		<description>Yes! This is right.

Yet... To be comprehensive, I think it&#039;s nice to point a couple of things about pair programming and TDD:

1) Most technical managers readily believe pair programming increases quality. What they wonder about is productivity.

Not all companies have a quality problem with their code. Paradoxically, I work in a company where the work process generates endless piles of bugs - yet the company is a market leader: they have tester teams, their customers have testers teams, and although programmers like me tend to get very unhappy about the situation, there is not actually a business problem.

On a completely different line, I write and promote software in my own time. This is a do or die activity. I get strict when it comes to keeping code modular, but I don&#039;t do TDD (and can&#039;t afford pairing). Modular warrants that, when the s...t hits the fan, it&#039;s actually hitting one out of many many tiny fans. TDD I use not, because the essence of quality (from a user&#039;s perspective) is what the software does, and how many bugs software can tolerate before quality is actually affected.

If I build a rocket someday, I wll use TDD and cleanroom software. No bugs is great! Point taken.

2) If a company doesn&#039;t use pair programming, they may not have time-consuming code reviews either.

I totally join in when it comes to avoiding distractions. Active pairs (programming or not) are much harder to distract than isolated workers. Distractions are a huge productivity sink at work - there&#039;s been a good study showing that it takes 15 minutes to get fully concentrated after an interruption, aggravated by the fact that workers on an open floor office get distracted about every 15 minutes(!). Maybe that stands as one of the greatest, unproven arguments suggesting that pairs program &#039;at least twice as fast as individuals do&#039;.

Yet it may not be fair to oppose pair programming to long code reviews - not having pair programming doesn&#039;t imply having lengthy code reviews, and having neither is not wrong in all respects... Single programmers own their mistakes fully, and as far as I know, companies that dedicate an extensive amount of time to code reviews probably overlook the fact that few programmers would time-bomb themselves with poor code.

Generalising specialists are created by rotating developers and common codebase ownership. Having a specialist handy may teach you less about a special problem than solving it yourself.

3) Last, but not least... It would be great if people acknowledged more often the social bias involved in pair programming - never mind open floor offices.

I seem to remember a lost era when the image of &#039;bedroom geniuses&#039; coding smart stuff in their own corner was not unrespectable in the programming community.

One thing I love about new methodologies and processes is that they potentially open doors to different kinds of people. One thing I&#039;d hate is seeing lonesome vi-slingers mobbed amidst a gregarious &#039;simple and social is code&#039; epiphany,

Don&#039;t get me wrong. I love this stuff - a devil&#039;s advocate is whispering in my ears.

Cheers</description>
		<content:encoded><![CDATA[<p>Yes! This is right.</p>
<p>Yet&#8230; To be comprehensive, I think it&#8217;s nice to point a couple of things about pair programming and TDD:</p>
<p>1) Most technical managers readily believe pair programming increases quality. What they wonder about is productivity.</p>
<p>Not all companies have a quality problem with their code. Paradoxically, I work in a company where the work process generates endless piles of bugs &#8211; yet the company is a market leader: they have tester teams, their customers have testers teams, and although programmers like me tend to get very unhappy about the situation, there is not actually a business problem.</p>
<p>On a completely different line, I write and promote software in my own time. This is a do or die activity. I get strict when it comes to keeping code modular, but I don&#8217;t do TDD (and can&#8217;t afford pairing). Modular warrants that, when the s&#8230;t hits the fan, it&#8217;s actually hitting one out of many many tiny fans. TDD I use not, because the essence of quality (from a user&#8217;s perspective) is what the software does, and how many bugs software can tolerate before quality is actually affected.</p>
<p>If I build a rocket someday, I wll use TDD and cleanroom software. No bugs is great! Point taken.</p>
<p>2) If a company doesn&#8217;t use pair programming, they may not have time-consuming code reviews either.</p>
<p>I totally join in when it comes to avoiding distractions. Active pairs (programming or not) are much harder to distract than isolated workers. Distractions are a huge productivity sink at work &#8211; there&#8217;s been a good study showing that it takes 15 minutes to get fully concentrated after an interruption, aggravated by the fact that workers on an open floor office get distracted about every 15 minutes(!). Maybe that stands as one of the greatest, unproven arguments suggesting that pairs program &#8216;at least twice as fast as individuals do&#8217;.</p>
<p>Yet it may not be fair to oppose pair programming to long code reviews &#8211; not having pair programming doesn&#8217;t imply having lengthy code reviews, and having neither is not wrong in all respects&#8230; Single programmers own their mistakes fully, and as far as I know, companies that dedicate an extensive amount of time to code reviews probably overlook the fact that few programmers would time-bomb themselves with poor code.</p>
<p>Generalising specialists are created by rotating developers and common codebase ownership. Having a specialist handy may teach you less about a special problem than solving it yourself.</p>
<p>3) Last, but not least&#8230; It would be great if people acknowledged more often the social bias involved in pair programming &#8211; never mind open floor offices.</p>
<p>I seem to remember a lost era when the image of &#8216;bedroom geniuses&#8217; coding smart stuff in their own corner was not unrespectable in the programming community.</p>
<p>One thing I love about new methodologies and processes is that they potentially open doors to different kinds of people. One thing I&#8217;d hate is seeing lonesome vi-slingers mobbed amidst a gregarious &#8217;simple and social is code&#8217; epiphany,</p>
<p>Don&#8217;t get me wrong. I love this stuff &#8211; a devil&#8217;s advocate is whispering in my ears.</p>
<p>Cheers</p>
]]></content:encoded>
	</item>
</channel>
</rss>
