 |
Pair Programming is NOT always a choice
Posted by kathysierra on March 30, 2004 at 02:43 PM | Comments (19)
I know this subject has been talked about practically to death, but from what I have read, there's an assumption about Pair Programming that I believe... no, I know is Just Plain Wrong.
The assumption is this: Paired Programming is a Choice.
In other words, most people seem to believe that whether you participate and thrive in a paired programming environment is a personal choice. And the sub-assumption is that if you do NOT, well, you clearly have a personality defect. Most of the debate goes something like this:
I don't like the idea of Paired Programming.
That's because you haven't tried it. You're just afraid to try something new.
No, I really DID try it.
You obviously didn't try it RIGHT. I'm sure you missed some key point about how to do it.
No, I was in an XP shop that had been doing it for a long time, with a lot of success.
Oh, so it's YOU that's the problem. Yeah, XP really smokes out who is and is not capable of being a good Team Player. Must be an ego thing.
No, I've always considered myself a really good team player and collaborator. I get high marks for this on every performance review I've had... from every manager I've had, and I've never had any trouble working well with co-workers.
Like I said, sometimes it takes XP to smoke out who is REALLY a Team Player. There's no room today for loners.
I know the arguments for and against XP, and I'm personally in favor of most of XP. I know the case for Paired Programming. I know the benefits. I know the studies and real results. I also know that for most people, Paired Programming really is a choice. That's because most people fall into the category known as Non-Loners. The masses. The majority.
But there is a minority (and they can't just be defined by a simple Meyers-Briggs type) for whom the idea of Paired Programming is NOT a choice any more than is their sexual orientation. People for whom the idea of being Not Alone that much (and with someone with whom they do not already have an intimate relationship) makes them as crazy as being alone makes Non-Loners, well, lonely.
One problem is that the majority world of Non-Loners largely views Loners as maladjusted. A condition to be "fixed". The "L" word has been perpetuated, especially by the media, to represent something sad, or worse, scary. On any given day, somewhere in the world (especially the US) a reporter is saying, "Neighbors describe the [mass murderer, pyromaniac, etc] as a loner." In reality, most of these so-called evil loners were in fact Non-Loners who were rejected by others and didn't take it well.
Loners are the folks for whom being alone is not a condition to be avoided, but relished. For whom a Thanksgiving day spent hiking alone, coding a game, or reading a good book is far preferred to a day spent locked in a house with ten bickering relatives. Yet the Non-Loners of the world find it inconceivable that a holiday spent alone could be anything but a cause for pity. Loners not only don't mind, but in fact have a strong need for, being alone. How do I know? I am one. And the idea of Paired Programming, in it's most-common implementation (you sit side-by-side, physically together, headphones off, for the majority of your programming day) makes me physically ill. Not because I'm afraid of something new. Not because I insist on personal code ownership as opposed to collective code ownership. Not because I just haven't tried it (I have). Not because I'm not a Team Player. Not because I have a Serious Character Defect. (OK, that last part is debateable but still...)
I simply NEED to work alone (which doesn't have to mean in my own office or anything... I can be alone sitting three feet from someone else) for larger portions of the day than the traditional Pair Programming model allows. For me, this is a need, not a choice. And please don't suggest that I have no self-awareness... most True Loners have fought the masses and the negative stereotypes long enough to know the difference between a need and a choice. We're the ones who who have to risk the life of another person (as in, "You'll kill your Aunt Betty if you don't come to the family reunion...") to protect our own sanity.
Non-loners experience real, physical symptoms of lonliness when forced to spend too much time NOT in the company of others. They become stressed, depressed, anxious. Loners, on the other hand, experience physical symptoms when they they don't have enough alone time. For us, time-without-company (espcially company not of our own choosing) is as necessary as water and oxygen. Not a habit. Not something to be learned. Not a choice.
However, the True Loner is definitely in the minority. So I believe an XP manager should spend time and energy to smoke out which of the reluctant programmers really ARE merely afraid vs. True Loners. In most cases, it's the former, and a gentle introduction is probably all that's needed. But ignoring that True Loners like me exist won't make us go away. And you're more likely to find the True Loner in the programming profession than, say, marketing.
We exist. The question is, what will you DO with us? Do you force us until we either numb ourselves to the overwhelming togetherness or just leave because we can't stand it? Do you find other tasks for us that aren't on the project? Do you fire us for non-compliance? Or do you find a way to exploit our strengths?
I'm not sure what the answer is. As a manager (and I was always a really bad one), I'd probably be tempted to say sacrifice the one for the many. But does that really, in the long run, serve the company and the team best? Is there really no other way to get the benefits of XP Pair Programming than by this particular (sit side-by-side, etc.) implementation? Because True Loners aren't against team work and being with people. Heck, I sit five feet away from my co-author/partner all day long, every day. It works GREAT for us. This does NOT violate my sense of aloneness, and we collaborate throughout the day, brainstorm, review each other's work, etc. A True Loner doesn't need or necessarily want to be in Solitary Confinement. And again, please don't confuse being a Loner with not being a team player. These are two completely different things. The majority of people are Non-Loners, and you'll find plenty of non-team-players among those ranks.
Part of the reason I felt compelled to post this is because True Loners by definition don't "stand together". There's no group advocating for the Loner. We don't get together with others of our own kind. We don't form clubs. We don't have meetings. But my heart nearly breaks for the True Loner not just forced but often humiliated into participating in Paired Programming, lest he or she be viewed as Not A Good Person. Which means, Not Like Most People. For most Non-Loners (except those that have come to know and appreciate a Loner), the True Loner simply does not represent Goodness. Non-Loner == Good and Normal. Loner == Trouble.
If you are (or suspect you might be) a True Loner, you might consider the book Party of One: The Loner's Manifesto. If you're a manager, and you suspect that you might have a True Loner in your midst, or you're perhaps in a relationship with someone you think might be a True Loner, you can read the book to learn more about us. To see that we're not evil, stuck-up, cold. We're just different. If you're a Non-Loner with negative feelings about True Loners, perhaps it's because you're afraid of something new? ; )
And maybe you wouldn't have wanted any of these folks on any team of yours, but the world is filled with examples of True Loners who made a difference in the world. As "Party of One" author Anneli Rufus puts it in the book, "Down the years, around the world, they form a shining line -- in single file, of course. Da Vinci. Michelangelo. Issac Newton. Rene Descartes. Issac Newton. Kipling. Thoreau. Beatrix Potter. Dickinson. Lawrence of Arabia." She later includes Alec Guinness and Albert Einstein. Do we have anything to offer the project, even if we can't survive Paired Programming? Maybe not. But this passage from Rufus makes me feel better about it:
"Yet here we are, not sad, not lonely, having the time of our lives amid their smear campaign.
We are the ones who know how to entertain ourselves. How to learn without taking a class. How to contemplate and how to create. Loners, by virtue of being loners, of celebrating the state of standing alone, have an innate advantage when it comes to being brave;; like pioneers, like mountain men, iconoclasts, rebels and sole survivors. Loners have an advantage when faced with the unknown, the never-done-before and the unprecedented. An advantage when it comes to being mindful like the Buddhists, spontaneous like the Taoists, crucibles of concentrated prayer like the desert saints, esoteric like the Kabbalists. Loners, by virtue of being loners, have at their fingertips the undiscovered, the unique, the rarefied. Innate advantages when it comes to imagination, concentration, inner discipline. A knack for invention, originality, for finding resources in what others would call vacuums. A knack for visions."
At least that's what we True Loners like to believe when we're labeled at best "not a team player" and at worst, "an axe-murderer". Besides, we're cheaper in the long run. We rarely stay for the pizza and beer parties. ; )
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
I'm not alone anymore
At last I find someone who feels the same as I do about working alone.
I've always found I'm most productive when not forced to work with others, but rather being able to do my own thing.
In a corporate environment you can get some of that by shutting yourself off putting on headphones and some music.
At first people indeed look weird at this person who doesn't socialise, but I've found that usually it's accepted after a while.
Pair programming for me would be constant hell. I've nothing against sitting down with someone to solve a problem together if you or the other person is stuck but to do it all the time, no I could never do that.
Managers who cannot work around such things, instead trying to force everyone into the same role model don't I think deserve the title.
The main job of a manager is to leverage his people to get them as productive as possible.
If that means letting some people work alone in a shop that otherwise practices pair programming than that's what it takes. Maybe start an R&D group for those people, where they can let their minds wander a bit trying new technologies that can benefit the company in the future without breaking the corporate "standard" of using pair programming to increase the quality of production code.
Or maybe recognise that pair programming is not the holy grail and see that those "loners" can produce as good a volume of code as a pair of herd animals working together.
Posted by: jwenting on March 30, 2004 at 11:00 PM
-
I have to disagree that we're a minority...
Sorry Kathy, but as a long time developer and reluctanct manager, I have to disagree with your statement that "the True Loner is definitely in the minority".
Perhaps you are right about the population at large, but in my experience most real programmers are lone wolves. I marvel whenever I hear of a shop where paired programming works... in 20 plus years of programming I have only found 2 colleagues with whom I could really interact, and in all honesty the interaction was mostly passionate arguments rather then shared moments of elightenment.
As a sometimes manager, I cannot imagine how I would go about hiring folks for a paired programming environment... It seems similar to the process of finding a mate through the personals.
Posted by: johnreynolds on March 31, 2004 at 06:55 AM
-
Loner isn't the right way to characterize it
I wouldnt consider someone who works independently as a loner. Actually I find that most pair programming enthusiasts tend to be less well rounded socially, and find community in having people being forced to work with them. The ultimate irony is that within the pair you become more isolated, not less.
Posted by: tcowan on March 31, 2004 at 07:02 AM
-
I have to disagree that we're a minority...
At our XP shop, we put interviewees through a brief pair programming exercise with one of our developers, to see how they take to it. That gives them an idea what pair-programming is like, and allows us to weed out those who we don't think would get along with it.
Posted by: skaffman on March 31, 2004 at 07:23 AM
-
studies?
>I know the studies and real results
Can you point to some of the studies? A big complaint I have with XP is all these claims of benefit and almost ZERO studies or research backing it up.
I've seen many studies that show code inspection/review is effecient. I've never seen a study that says pair programming is more effecient than doing more traditional code reviews/inspections.
Posted by: ckessel on March 31, 2004 at 07:52 AM
-
I'm not. I'm the same.
"You're all individuals."
Crowd: "Yes, we're all individuals"
Loner: "I'm not. I'm the same."
Sorry, that's Python, not Java.
Seriously, though there are two parts to any pair. I'm a loner, but I can have great fun programming with one or two others. Who you are working with, and what you are working on, can make more difference than what kind of person you are.
Are you with me? Anybody? Anybody?
Posted by: coxcu on March 31, 2004 at 11:39 AM
-
I have to disagree that we're a minority...
Sounds like a good idea... Do you have interviewees go through an activity with the person they will actually be paired with? Are your "pairs" a temporary or permanent construct? Are the "pairs" assigned as a unit, or do you have different pairings when folks are assigned to multiple projects?
I must admit the whole thing sounds like too much of a commitment to another individual to me... but then I dated my wife for a llloooonnnggg time before I popped the question :-)
Posted by: johnreynolds on March 31, 2004 at 01:28 PM
-
introverted nature versus extreme programming
"Introvert" is probably a better term than "loner", which sounds more like a label an extrovert would attach to the (negative) perceived behavior of an introvert. I'd also point out that introverts aren't so much anti-social but rather can find dealing with people exhausting. "Extreme" anything implies high energy levels which are not normally a characteristic of introverts.
Personally, while I actually enjoy sharing/reviewing code with someone else, I can't think of a worse way to actually write code than via pair programming - it just strikes me as one of those forced social activities initiated by people who always think out loud and like to work in groups.
Posted by: geozeal on March 31, 2004 at 02:55 PM
-
References
There are some interesting articles on this on hacknot. I tend to agree that pair programming is not a thing for all. In fact, I believe that in some cases it is warranted and successful. However, I still do not see (as others have pointed out) the hard evidence for XP, except the convictions of its followers. They're too loud for my taste.
Here's a little question. If someone starts screaming at you that tomorrow the sun will rise and that you'll go to hell, if you do not agree, will this person be more believable than the guy who says the same thing matter-of-factly without all the fuss? Well, I like to follow the Buddha, who allows me the freedom of mistake rather than the fanatic who believes to force me into something in order to cure me from making those mistakes. But, hey, that's just me.
http://www.hacknot.info/hacknot/action/showEntry?eid=11
http://www.hacknot.info/hacknot/action/showEntry?eid=22
Posted by: norb on April 01, 2004 at 12:32 AM
-
References
There are some interesting articles on this on hacknot. I tend to agree that pair programming is not a thing for all. In fact, I believe that in some cases it is warranted and successful. However, I still do not see (as others have pointed out) the hard evidence for XP, except the convictions of its followers. They're too loud for my taste.
Here's a little question. If someone starts screaming at you that tomorrow the sun will rise and that you'll go to hell, if you do not agree, will this person be more believable than the guy who says the same thing matter-of-factly without all the fuss? Well, I like to follow the Buddha, who allows me the freedom of mistake rather than the fanatic who believes to force me into something in order to cure me from making those mistakes. But, hey, that's just me.
http://www.hacknot.info/hacknot/action/showEntry?eid=11
http://www.hacknot.info/hacknot/action/showEntry?eid=22
Posted by: norb on April 01, 2004 at 12:32 AM
-
References
Martin Fowler, at a recent lecture of his I attended, pointed out that the primary factor as to the success and productivity of a team is simply how well the team members get along and work together. Team cohesion trumps the use of any programming methodology. A good team leader/manager should then utilize those programming techniques and methods that best matches the team's disposition. Trying to force things like pair programming on a team simply because that is what XP doctrine dictates is likely to be counter-productive at best. Considering that introverts make up a much greater portion of the computer programming discipline than in the overall population, one can see why many programmers balk at some of the stated XP methods.
For the extroverts, the following article entitled "Caring for Your Introvert " is an amusing but informative guide to introvert behavior :-)
http://www.theatlantic.com/issues/2003/03/rauch.htm
Posted by: geozeal on April 01, 2004 at 09:56 AM
-
Thank you for this article, Kathy
Thank you, Kathy. Before reading your article I felt I was the only person with these behaviour.
I haven't been in a pair-programming session actually, but sometimes I had to write a part of my code having a team mate at my side, reading what I was typing and I felt terribly unconfortable and unable to concentrate on what I was doing. I like to share my ideas and code with my team mates, I have a good relationship with all the team mates I have been working with, but writing code in pair with a team mate definitely is not made for me.
Posted by: xmirog on April 03, 2004 at 11:24 PM
-
I have to disagree that we're a minority...
Our pairs are very fluid. For each task/story that needs doing, a pair is formed, but for the next task, you might pair with someone else. That way, over time everyone gets to pair with everyone else on various projects, and knowledge doesn't get locked into one person and/or pair.
Posted by: skaffman on April 07, 2004 at 04:38 AM
-
Been on both sides of the fence...
I prefered working alone and then reviewing as a team when reaching a milestone. Working alone has both advantages and disadvantages.
For me it's turning out to be an advantage as I move from technical architect to entrepreneur where I have to make the decisions, do the programming and then testing all by myself.
The one man web design firm is not dead and neither is the one man programmer. Anyway, I get to the pizza first and then have the beer afterwards.
jaseb
Posted by: jasonbell on May 29, 2004 at 02:56 AM
-
I still don't see that it's justified
Preamble: I've not tried pair programming except on specific tasks of interfacing, interop or brutal bug hunts. I've been on agile teams, on more traditional rapid dev teams, and I've managed a number of different teams.
I've heard a number of people rave about pair programming, but usually it's about how they can bounce the design instantly off their colleague, and how they can pull an observer role, just typing, or drive the design, or cooperate doing both.
I always feel that I just don't see the benefit of ALWAYS doing it. I tend to collaborate quite a bit with my teams, and my peers, but on an as-needed basis. The team I'm on is very senior overall, and I just can't see that the benefit would be as pronounced trying to pair-up this team, fluidly or not.
Reasons? Most are loners or introverts. I'm an extrovert, but I relish time alone to myself and my iPod coding away. Getting the problem in my head, pulling together the design and solution, and expressing it in tests and code. Without someone disagreeing, needing an explanation, or contributing two cents ad infinitum.
Again, I've never done it, I just don't like the concept. But there's a bigger reason.
I put my manager's hat on, and I don't like the cost equation. The scenarios when my colleagues have testified to it working and working WELL are usually in cases where there is a mentor/student level of difference in experience and/or skill. At times, the student is still fully in the driver's seat in the pair, and in others, the mentor/senior developer is. So let's assume that is the case.
Why am I paying for two programmers? Are you getting twice the work done? Or just %75 of what you would do individually? Assume that the pair augments your code quality and efficiency due to an instant peer review. Does that make up for two people collaborating continuously, two salaries going to that code stream? Maybe I really don't get it, or maybe the people I've had the good fortune to hire are that good that they just don't botch the code enough to justify 2-on-1 attacks on problems.
Peer reviews are great. Code reviews are definitely worth the time and effort. Add up the numbers on time and effectiveness, and I just can't get the math to work for pair programming, especially with accountants and investors wondering why the hell I just don't offshore the whole lot anyway.
IMHO of course, YMMV, and pick any other applicable acronym. IANAXP (I am not an xtreme programmer) agile yes, extreme no.
Posted by: hockleyd on June 24, 2004 at 12:14 AM
-
re: Pair Programming is NOT a choice
Kathy, very nice article and well-argued.
Thank you!
Posted by: homam on July 19, 2004 at 10:25 AM
-
This blog entry has spawned an interesting discussion in JavaRanch
Posted by: ipreuss on October 07, 2004 at 08:05 AM
-
Without someone disagreeing, needing an explanation, or contributing two cents ad infinitum.
A different way to look at it is that you don't have someone at your side whom you can exchange ideas with, who can inspire you with new thoughts.
I understand that you're skeptical. Our project manager was, too - until we simply tried it for two weeks. He was surprised by the result. Now we are free to pair program as much as we see fit.
Posted by: ipreuss on October 07, 2004 at 08:13 AM
-
wow power leveling
wow powerleveling
wow power leveling
wow gold
wow items
feelingame.com
wow tips
Most Valuable WOW Power Leveling Service
wow power leveling faq
cheap wow power leveling
wow power leveling
wow powerleveling
wow power lvl
Posted by: wowleveling11 on December 14, 2007 at 07:52 PM
|