Slashdot Mirror


Experiences with Pair Programming?

gmletzkojr queries: "I recently was able to engage in some Pair Programming for a couple of days. However, my experience was less than rewarding. I have read books regarding the subject, and all of the case studies show praise for the effort. I found my pair programmer a bit difficult to work with. Has anyone been in this situation, and what things can be done to work around the personality conflicts?"

125 comments

  1. Hmmm by 2nd+Post! · · Score: 1

    Acknowledge the personality conflict with your partner to your partner and then don't let it get in the way of your work.

    1. Re:Hmmm by avalys · · Score: 1, Funny

      And, along similar lines, here is 2nd Post!'s approach to pulling the US military out of Iraq:

      1) Pull the US military out of Iraq.

      --
      This space intentionally left blank.
    2. Re:Hmmm by aminorex · · Score: 1, Funny

      I'd really like to get 2nd Post! into the presidential race.

      --
      -I like my women like I like my tea: green-
  2. Personality Problems... by lesv · · Score: 2, Interesting

    I've always tried to deal with personality issues when I hire.

    I've also had significant success when using pair programming. It's a great way to make sure process is followed, it improves quality, and it spreads knowledge around.

    1. Re:Personality Problems... by JQuick · · Score: 1

      I've always tried to deal with personality issues when I hire.

      I've also had significant success when using pair programming. It's a great way to make sure process is followed, it improves quality, and it spreads knowledge around.

      The phrase "Personality Problems" is merely one type of difference, which is relevant. You are right that some people do not work well with other, and are not valuable contributers in tight team environments.

      You mention knowledge transfer which is of great value to both individuals and the wider organization. You mention process which if appropriate, can also provide similar benefit. However, "improves quality" is too vague to be a very useful statement.

      I would agree that "improves quality" by reducing the frequency and magnitude of certain kinds of flaws. Common bugs, implementation flaws and design errors tend to to be less likely to occur and noticed more quickly if they do. If you refer to these by the phrase "improve quality", I agree.

      In other senses, however, I believe that pair programming can reduce quality. It imposes a structure which can put some programmers at a distinct disadvantage, and thereby reduce their potentially valuable contributions to the code base and to the organization. The most common ways that pair programming can be a poor fit for some programmers is often categorized as a "Personality Problem",

      Personality and individual temperament is highly variable. Despite this, statistically, there are a number of common traits shared by large groups of individuals. The ways in which a person habitually perceives problems and reasons about possible solutions is a core aspect of a persons personality. A number of occupational/industrial psychologists (and lay people) have performed research and written about personality or temperament. Much of this is worthless drivel (i.e. bull).

      Despite this, the overwhelming evidence from experimental psychology, and several statistically sound studies of industrial psychology concur on several key points. First, certain aspects of personality emerge in infancy, and are highly stable throughout an individual's life. Second, several of these distinct personality traits influence the problem solving styles, perceptual styles, and interpersonal styles of the individual in ways which are both statistically significant and subject to analysis.

      One such basic trait, an individual's tendency towards introversion or extraversion is especially relevant to pair programming. In conversation and thought an introverted person requires quiet reflection in order to develop their ideas and consider broader consequences. An extraverted person may find that talking out loud about a problem is most productive. Paired together, an introvert may be distracted and unable to realize their full potential. The extravert will suffer by not benefiting from good critical analysis of their work, They will not benefit from the ideas and knowledge that otherwise would have been forthcoming if their "chattiness" and relative impatience had not adversely affected their partner.

      Some people benefit greatly from paired programming. Most people tend to be extraverted and pragmatic. Theoretical and highly technical professions tend to attract those who are more adept at abstract reasoning. Despite this, the majority of programmers tend to learn best from concrete examples and from hands on experience. The minority, about 10% in the general population and perhaps as much as 30% in the programming profession are introverts who work best by learning abstract principles and generalizing from them. Slight more than half of these have moderate to extreme introverted tendencies. Collaboration between these practical and theoretical types is theoretically of great value to both individuals and the organization. Their significantly different perceptions and problem solving styles can be highly complementary. The most stunning and productiv

    2. Re:Personality Problems... by MetalNoise · · Score: 1

      I have no mod points, or I would mod this up. This psychological assessment of intraverts and extraverts is one of the most insightful things that I have read.

  3. What? by Anonymous Coward · · Score: 0, Interesting

    It's a crock. You'll never, get anything done if two or more individuals are sitting down to code. The only point where you want more than one person is when you are actually doing design. Coding or programming, which is only one aspect of Software Engineering should be done by a single fully capable individual working on a small part of the overall code.

  4. I too find my coworkers difficult to deal with by Cecil · · Score: 4, Insightful

    What is to be done about this? Ask for a different partner, maybe? Pair programming is useless if you can't work with your partner. This should be obvious. Not everyone is compatible, not with each other, and some people probably aren't even compatible with pair programming at all. That's fine, everyone's different.

    Nothing will ever be a magic bullet. Pair programming, agile methods, and all that other crazy marketing-speak, it's just a procedure. If it works for you, use it, if not, try a different approach.

    1. Re:I too find my coworkers difficult to deal with by Tye_Informer · · Score: 3, Interesting

      I have found that along with Pair Programming, all code needs to be "group owned". Anyone can modify any code they think they need to. Having Pair Programming in this situation helps because you have a second set of eyes to keep your code as clean as possible.

      Since all code is group owned you don't always have to have the same partner all the time, you just end up with whoever is available when you are ready to code. I can't imagine how Pair Programming is much of a benefit if the pair is always the same two people.

      Of course, most of the time I have had a personality problem with a partner in Pair Programming was because I was being hard-headed and not willing to learn from my partner. If you are truly the expert, you will not feel threatened and will be willing to help your partner learn. If you aren't then the personality problem is probably caused by both.
      As for what to do, let it go. Do your job and leave the problems out of it. If they are that bad, others will notice in time and the Pair Programming practice will work.

    2. Re:I too find my coworkers difficult to deal with by Javagator · · Score: 2, Insightful
      some people probably aren't even compatible with pair programming at all

      I think I fall into this category. I would probably fall asleep when my partner was programming, and when it was my turn at the keyboard, I would erase everything he had done and do it the way I wanted it done.

    3. Re:I too find my coworkers difficult to deal with by dubl-u · · Score: 2, Insightful

      What is to be done about this? Ask for a different partner, maybe?

      It's good to change pairing parters every 2-4 hours. That's short enough that you should be able to deal with anybody on your team, and long enough to get something done and checked in.

      Also, learning to pair is exhausting. When people are first getting used to it, I encourage them to work into it slowly. E.g., 1 short session the first day, 2 the second, and so on.

    4. Re:I too find my coworkers difficult to deal with by DaveInAustin · · Score: 1

      Actually, if you do your job while you were navigator, you shouldn't be erasing everything when you are driving. The critical part of pair programming is that the driver needs to talk a lot to keep the navigator engaged. If both people are have their heart into it, it really works. If you just want to sit in a corner and code and don't want to be a team player and don't want to talk to anyone, you are asking for your job to be sent overseas.

      --
      --- http://davidnehme.blogspot.com
  5. perhaps this is relevant? by Shaleh · · Score: 2, Funny

    When I first looked at the comments this was my fortune:

    It's hard to be humble when you're perfect.

    Think that may relate to this issue, as others have commented on personality conflicts.

    1. Re:perhaps this is relevant? by JVert · · Score: 1

      I was thinking the other day about possible personality faults that I have. I was simply going through all the traits I could think of and when I got to 'arogance' my blood ran cold. I'm concerned that my arogance may be holding me back when receiving instructions and training. One personal flag is my wife loves to ask questions and I love to answer them. But when was the last time I actually asked her a question?

    2. Re:perhaps this is relevant? by aminorex · · Score: 1, Funny

      Did you come yet?

      Well, maybe she's a screamer.
      Not my business, I guess.

      --
      -I like my women like I like my tea: green-
    3. Re:perhaps this is relevant? by br0ck · · Score: 1

      Don't worry "corganbilly", all your fans have always known that you're an arrogant prick.. ;)

      Not that I'm an expert but having dealt with many personalities over the years, I think the fact that you are introspective enough to even think about this and then post it where everyone can see means that you don't have a real problem. If you're really concerned, look up intJ personality types and read a little Venus/Mars and you'll be fine.

    4. Re:perhaps this is relevant? by aminorex · · Score: 1

      and look up the spelling of arrogance while you're at it.

      i don't have to be a jeenius to know i are one.

      --
      -I like my women like I like my tea: green-
  6. Sounds like... by Trikenstein · · Score: 1
    something the personal hygiene products industry would come up with.

    Guy at KB: "would you quit breathing on me!"
    Guy not at KB: "Hey! your no rose either!"

    Or any variations you can come up with.

  7. My Experience by Apreche · · Score: 4, Insightful

    Scenarios and results from my experience.

    1) If your partner is more experienced it is usually annoyance for them and great fun learning for you.

    2) Vice versa of 1.

    3) Neither partner is experience or knowledgable enough to do the work on their own then productivity increases only slightly because you have two people trying to figure out new things at once. Also makes the job programming less painful for both since you share suffering.

    4) Both partners are knowledgeable and experience enough for the work. It depends on the personalities of the people

    4a) personalities are conducive to teamwork, super productivity! Project gets done fast, bugs are caught during implementation, everyone is happy.

    4b) personalities not conducive to teamwork, super bad! Both programmers are knowledgeable and could therefore be doing more work if they each coded separately.

    As long as neither partner lacks basic social skills and is not a complete loner then teamwork is usually good experience because you can enjoy the company and conversation of another programmer while you work.

    --
    The GeekNights podcast is going strong. Listen!
    1. Re:My Experience by Anonymous Coward · · Score: 0

      1) If your partner is more experienced it is usually annoyance for them and great fun learning for you.

      2) Vice versa of 1.


      This is a good scenario. The more experienced partner needs to just put up with the "annoyance" of explaining things to other people. It's called teamwork, and he/she needs to get used to it.

      3) Neither partner is experience or knowledgable enough to do the work on their own then productivity increases only slightly because you have two people trying to figure out new things at once. Also makes the job programming less painful for both since you share suffering.

      Why would you pair two people together when one can't learn from the other? Use this as a last resort.

      4) Both partners are knowledgeable and experience enough for the work. It depends on the personalities of the people

      4a) personalities are conducive to teamwork, super productivity! Project gets done fast, bugs are caught during implementation, everyone is happy.

      4b) personalities not conducive to teamwork, super bad! Both programmers are knowledgeable and could therefore be doing more work if they each coded separately.


      What does "not conducive to teamwork" mean? To me, it sounds like they need to lose the prima donna attitudes and realize that they aren't the center of the universe. Honestly, if you can't stand to be around your coworkers as code is being produced, then maybe you're the problem.

    2. Re:My Experience by Anonymous+Brave+Guy · · Score: 4, Insightful
      The more experienced partner needs to just put up with the "annoyance" of explaining things to other people. It's called teamwork, and he/she needs to get used to it.

      I've seen this mistake in numerous contexts, from programming to pairs sports. If you put two people together of very different abilities, there really is very little for the more senior partner to gain. Sure, they can pick up the odd thing occasionally, but not enough to keep them motivated and justify the time they "waste". Likewise, teaching can be a useful way to solidify knowledge, but that only works if the abilities are different but not too different. Getting a world champion to coach an absolute beginner will be frustrating for both. Getting a 20-year veteran to teach programming 101 to a newbie by drip-feeding on the job will be frustrating for both.

      The art of good management/coaching in these situations is to pair up appropriate people, and only appropriate people. If you do, it can be a rewarding experience for both parties. If you don't, the senior guys will simply decide it's not worth it and walk away, leaving you with only the junior guys left. Good management consists of making the best use of all your resources, not dumping half the guys with things they really don't want to do and calling it "teamwork".

      FWIW, I don't rate full-time pair programming in most places. IME, a culture where junior developers feel able to ask for help as often as required and senior developers are happy to give it whenever they can, and where training and review are taken seriously, gains you most or all of the benefits without anyone getting claustrophobic and feeling under permanent pressure. This has been the case in pretty much every good dev team I've ever worked on.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:My Experience by lphuberdeau · · Score: 1, Insightful

      Totally agree, it all depends on how good the communication is between the two persons. If it's not good, try with omeone else. I have had some great experiences with pair programming with experienced people. It's just good when both are experienced but have different kind of knowledge. This way, both will focus on different aspects and make the entire thing better.

      On the other hand, if both have totally different approaches to the problem, it can cause a nuclear war, especially if both programmers have a large ego.

      I would just take away the three first cases. If one of the pair is not experienced enough for the job, why was he hired?

      --
      Qui ne va pas à la chasse n'a pas de gibier
      PHP Queb
    4. Re:My Experience by Anonymous Coward · · Score: 1, Insightful

      I've seen this mistake in numerous contexts, from programming to pairs sports. If you put two people together of very different abilities, there really is very little for the more senior partner to gain. Sure, they can pick up the odd thing occasionally, but not enough to keep them motivated and justify the time they "waste". Likewise, teaching can be a useful way to solidify knowledge, but that only works if the abilities are different but not too different. Getting a world champion to coach an absolute beginner will be frustrating for both. Getting a 20-year veteran to teach programming 101 to a newbie by drip-feeding on the job will be frustrating for both.

      This isn't about having a guy with 20 years of experience tell someone who can barely spell "Java" about a JVM. It's about a more senior level person providing the necessary direction and instruction in best practices for a less experienced programmer. It is necessary to transfer knowledge from more experienced people to less experienced people. Senior level people cannot expect to work in a vacuum.

      The art of good management/coaching in these situations is to pair up appropriate people, and only appropriate people. If you do, it can be a rewarding experience for both parties. If you don't, the senior guys will simply decide it's not worth it and walk away, leaving you with only the junior guys left. Good management consists of making the best use of all your resources, not dumping half the guys with things they really don't want to do and calling it "teamwork".

      Junior guys need to interface with the senior guys so the junior guys can learn something. If the senior guys refuse to help the junior guys expand their knowledge and understanding of software development, then they are not team players. I don't care if it's something that they really don't want to do. I also have something that I really don't want to do: my job.

      Slashdotters love what you're saying, though, because it supports their ideas that they should be able to ignore everyone else and work alone on a project. Enjoy the mod points.

      FWIW, I don't rate full-time pair programming in most places. IME, a culture where junior developers feel able to ask for help as often as required and senior developers are happy to give it whenever they can, and where training and review are taken seriously, gains you most or all of the benefits without anyone getting claustrophobic and feeling under permanent pressure. This has been the case in pretty much every good dev team I've ever worked on.

      Yes, pair programming is typically used in place of more formal code reviews. They end up doing roughly the same things (although one may be more effective than the other). Usually, pair programming at least makes both programmers feel more involved.

    5. Re:My Experience by dubl-u · · Score: 1
      On the other hand, if both have totally different approaches to the problem, it can cause a nuclear war, especially if both programmers have a large ego.

      Well, this is true whether or not you're pair programming. It's just that in pairing, you get to find out about the conflict before the code gets written. That's generally the best time to resolve things. And if things are hard to resolve, it's often a sign that
      • the people involved need to learn how to negotiate,
      • they don't have enough data to make a good judgment, in which case a little research is in order, or
      • they have different priorities.
      That last one can be an especially big problem; the team should be working from a common set of priorities and values. Much better to discover this as soon as possible, so that everybody can get together and agree on what's important. For example, if it's really a problem of ego (in the sense of arrogance), it's good for everybody on the team to figure out that they're not getting paid to stroke their own egos.
    6. Re:My Experience by angel'o'sphere · · Score: 0

      Hi,

      hm, sorry to answer to your post, as your analysis is quite ok.

      Most posts here are really negative. I wished that most of you would start your post with: I've never done it.

      Bottom line: only the posts starting with: "I've done it" are relevant.

      I was allways wondering about an "Gedankenexperiment" (I know this is an english term :D ) like this: Posting a slashdot question: "Hi all, did you ever read Brooks? What about the factor ten programmer, who of you is one? Did you ever meat another one? What is your experiance?"

      Well, to answer that question: in school I was a factor 100 programmer, in university, I considered myself a factor 10 or 20 programmer. In my company, ALL my partners are factor 10 programmers. In my usually projects, I'm a factor 2 programmer.

      What I want to say is: YES I'M ARROGANT. I meat every day people in my job who have NO CLUE ABOUT EVERYTHING. But also I meat people who ARE factor 10, often in a different topic of CS, but they are, DAYLY.

      Obviously the discussion here about pair programming is: what do I do as a factor 10 or factor 20 programmer when I'm paired with a factor 1 programmer?

      Obviosuly that situation is pure hell .... so we think pair programming is bullshit.

      I guess that still most of the posters here are american. Interesting. Pair programming is an american invention and seems to werk well for american situations. But most people critizising it, with out ever having touched it, are american as well.

      My experiance is: when I pair program with a guy who is as smart than I ( we both think we are factor 10 - 20 coders) it is:
      a) pure fun
      b) incredible fast
      c) we nearly never have an error (deect/bug)
      d) we both learn, without calling it like that, we have "ideas" "inspiration" "influence"

      Why do you allways try to pair a factor 1 with a factor 10 programmer? Well if you would be honest you would call the factor 1 a factor 0.5 and yor resolution is 0.5 * 10 -> 5.0, the factor 10 programmer is only half as productive and you pay for two is right.

      Tzzzzzzzzzzz ........

      I pair a factor 10 with a factor 10 and get 10 * 10 -> 100.

      And the funny thing is: in reallity you approach 10 * 3 or 10 * 5 ... pair programming has a productivity boost of 5 and up to 10.

      So, if you do not like to test it with a smelling, ugly, fat, noissy guy you dislike anyway, why don't you try it with your best friend (coworker)?

      Pair programming does not mean by definition that the good guy is tracking (tracktoring) the bad guy behind him.

      The definition is: have fun. Work smarter. Dont get tired that fast. See more. Write clearer. Inspire each other. Try to impress the other one. Get astonished if he is not impressed. Wonder why. Try again. He askes. What did he ask? How to write different, so he does not ask? And so on.

      Just some thoughts.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:My Experience by Anonymous+Brave+Guy · · Score: 2, Interesting
      It is necessary to transfer knowledge from more experienced people to less experienced people. Senior level people cannot expect to work in a vacuum.

      Both of those things may be true, but there is a big difference between "not working in a vacuum" and "never having time to work on something alone and uninterrupted". A strong dislike of the latter situation does not imply that you are "not a team player".

      As is often the case, the best programmers don't necessarily make the best programming teachers, nor vice versa. Sometimes junior guys will benefit more from a training course. Sometimes they'll get more out of working on something with a mentor available when they need one. Working full-time with a much stronger developer would just intimidate the hell out of a lot of people and cause their productivity to plummet.

      As I said before, the art of good management is to make the best use of all your people. The first step to that is acknowledging their respective strengths and weaknesses. The second step is figuring out how to take best advantage of the former while avoiding the latter as much as possible. If that means taking a guy who can write excellent, highly maintainable code and leaving him to get on with it most of the time, so be it.

      Slashdotters love what you're saying, though, because it supports their ideas that they should be able to ignore everyone else and work alone on a project. Enjoy the mod points.

      That would be an overly naive and/or arrogant attitude, unbecoming of a senior developer. However, the alternative explanation is that some of slashdot's moderators appreciate the point that this is a management issue, which needs to account for individuality. And while it's nice to know some people found my post insightful, I didn't make it for the karma, and have plenty of that already, thanks.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    8. Re:My Experience by angel'o'sphere · · Score: 0, Flamebait


      I've seen this mistake in numerous contexts, from programming to pairs sports. If you put two people together of very different abilities, there really is very little for the more senior partner to gain. Sure, they can pick up the odd thing occasionally, but not enough to keep them motivated and justify the time they "waste". Likewise, teaching can be a useful way to solidify knowledge, but that only works if the abilities are different but not too different. Getting a world champion to coach an absolute beginner will be frustrating for both. Getting a 20-year veteran to teach programming 101 to a newbie by drip-feeding on the job will be frustrating for both.

      I don't want to get arrogant or sarcastic. Because I' know I'm arrogant and sarcastic ...so what?
      Did you ever consider to get children? Hu hom, so you are about 20 years more experianced in EVERYTHING, not just coding, IN LIVE than your children? And: ITS NO FUN, teaching them? You DON'T GET ANYTHING back as teh more experianced one?
      So having children and going with them to a summer holliday is a total waste?
      Yeah, sorry, I was sarcastic. But why can't you try to live your job like you would want to live your live?
      Why do you, YOU ALL on /. , allways see a gap between live, job and wishfull thinking?

      angel'o#sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re:My Experience by Profane+MuthaFucka · · Score: 0, Offtopic

      I'm sure you're a great programmer, but your spelling is a Factor ZERO.

      Slashdot needs a spellchecker.

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    10. Re:My Experience by Anonymous+Brave+Guy · · Score: 1

      Hmm... Your posts are usually much better than that, so I'm guessing you're tired, drunk, or high. Fair 'nuff.

      In any case, I think you're making my point beautifully. Of course children can be a source of great joy; I'm not challenging that at all. Many people would also enjoy teaching a newbie programmer, or gain a sense of satisfaction from helping someone less experience out on-line. (In my real life guise, I've got thousands of newsgroup posts logged doing just that.)

      But a child will not teach a 25-year-old to drive, or to use calculus, or to appreciate art, or to consider the ethics of contemporary voting systems. Nor will a child build a new set of shelves, repair a car, or write a touching birthday card to your mother. If you want to develop these aspects of your life, you would look elsewhere. So it is when it comes to programming. There is much to be gained from mentoring a more junior developer, and if that is your desire, then I wish you nothing but success. That doesn't mean it's everyone's desire, and the things to be gained may not be the things that would be most beneficial if the programming in question is something you're doing professionally.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    11. Re:My Experience by Tony-A · · Score: 1

      It's just good when both are experienced but have different kind of knowledge. This way, both will focus on different aspects and make the entire thing better. [Emphasis added]

      Different skill sets. That's the crux. When it works, it dominates everything else.

      On the other hand, if both have totally different approaches to the problem, it can cause a nuclear war, especially if both programmers have a large ego.

      If both egos are after the same turf, you will have problems. With a bit of skill in working in close without being annoying, enormous egos can be amazingly cooperative so long as they do not invade each other's turf. You play black, I play red, we both grab the winnings.

    12. Re:My Experience by Zarf · · Score: 1

      it's good for everybody on the team to figure out that they're not getting paid to stroke their own egos.

      They're not? Woah.

      --
      [signature]
    13. Re:My Experience by Anonymous Coward · · Score: 0

      After a long, strange rant...

      angel'o#sphere

      angel'o'sphere: For God's sake, man, put the browser down! You're so f#$ked up you can't even type your handle! :-)

    14. Re:My Experience by Ark42 · · Score: 1


      I think this about sums it up. I've never done this in a work-environment, but can easily guess from doing programming in the CS-major-only lab. Man did I hate 1 / 2 when the other guy was a real dumbass and didn't really care. You have to laugh at 3 if you overhear them talking to eachother from a distance. 4a was the best though. How I wish I could have 4a and still be self-employed. Nothing beats writing a huge chunk of code and finding all the bugs simply because another great programmer is looking over your shoulder as you write it while chitchating on the side, and when you go to compile and test it, it runs flawlessly on the first try.

    15. Re:My Experience by Anonymous Coward · · Score: 0

      If I understand your incoherent babbling there, it seems like you're suggesting that having a kid would be the same as trying to teach programming to someone with 20 years less experience than you.

      I would agree. And that's why I would NEVER EVER have any kids. Just a constant annoyance and a drain on my wallet. Can't stand them. I can say the same for junior programmers too...

    16. Re:My Experience by angel'o'sphere · · Score: 1

      Oh I was tired, and sarcastic :D
      You are right. But most posts ANTI pair programmng are ephasizing the discrepancy betwen the better and the weaker coder.

      Just as if they fear they have to code all week and all month from now on for ever with a weaker code "who drains them".

      But that is very unlikely. You will have a weaker guy for a week as partner. And then you get another partner. And he weaker one is moving to someone else. After 1/2 a year he will have learned or you kick him anyway. And if the guy is bright, then he will be inspirering, regardless how much he allready KNOWS, the mind is the important thing not the knowledge.

      But why, did I get a flaimbait for my post, LOL, I did not attack anyone :D

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    17. Re:My Experience by angel'o'sphere · · Score: 1

      Sorry about my spelling erros, when I'm tired I make even more :D
      You saw that post on /. about reading and words where only the starting letters and ending letters need to be somewhat correct for understanding? I guess my problme is, I don't see spelling errors. (Besides the problem that I make errors like piece/peace/ peese and do not really notice it)

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    18. Re:My Experience by Profane+MuthaFucka · · Score: 1

      Luckily we have compilers to take care of the details. A lot of people think that I'm a really detail oriented person because I can write a program with hundreds of thousands of individual characters, all of them in the right place. The truth is that it's the compiler that enforces that, not me.

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
  8. Just get off the keyboard retard! by QuantumG · · Score: 4, Funny

    "Type foo"
    "What?"
    "There, foo"
    "Oh yeah, ok"

    "No, foo"
    "Oh right"

    "Oh for fuck sake.. FOO, the keyword is FOO"
    "Oh sorry, was thinking about something else"

    Pair programming is like watching a woman change channels. "You know what's on this channel, it's shit, keep going."

    --
    How we know is more important than what we know.
    1. Re:Just get off the keyboard retard! by Hard_Code · · Score: 1
      --

      It's 10 PM. Do you know if you're un-American?
    2. Re:Just get off the keyboard retard! by dubl-u · · Score: 2, Interesting

      Pair programming is like watching a woman change channels. "You know what's on this channel, it's shit, keep going."

      If it's like that, you're doing it wrong.

      For me, it's like the driver/navigator combination on a road trip through an unfamiliar city. Except it's better. If I notice my partner glazing over, I just shove the keyboard over to him. That's harder to do in a car.

    3. Re:Just get off the keyboard retard! by rawg · · Score: 1

      This is where you need to be using a Mac and SubEthaEdit.

      --
      The above is not worth reading.
    4. Re:Just get off the keyboard retard! by QuantumG · · Score: 1, Offtopic

      It's like that for me too, but it's a woman driving the car.
      "Ok, just turn left before the round about."
      "What? Turn left at the round about?"
      "No, turn left before the round about."
      "So I have to drive up to the round about?"
      "Yeah, but turn left before it."
      "Ok". We then proceed to turn left at the round about.
      "No, you needed to turn left back there."
      "You said turn left at the round about."
      "I said turn left before the round about."
      "No you didn't."
      "I did!"
      "I asked you if we needed to drive up to the round about and you said yes."
      "I also said we need to turn left BEFORE the round about."
      "Well how do I get back on that road?"
      I start looking at the map for a road to get back to the road we were just on so we can get onto the road we were supposed to be on.
      "Which way do I go?!?"
      "I'm looking, ok."
      "Should I turn around?"
      If she was willing to do a U-turn why did she ask me how to get back on that road?
      "Ok, fine, do a U-turn."
      "I can't do a U-turn here."
      Then why did you just ask if you should turn around?!
      "Ok, fine, just go back to the round about."
      "What round about?"

      --
      How we know is more important than what we know.
    5. Re:Just get off the keyboard retard! by Anonymous Coward · · Score: 0

      Not necessarily.

    6. Re:Just get off the keyboard retard! by orkysoft · · Score: 1

      Attached, please find an overview of the company
      guidelines, and prospectus.

      Frank Fingerman

      It is most efficient to communicate by means of the
      internet. I have conducted studies to confirm this.
      Please convey your remarks via email.

      Frank Fingerman

      How are you coming along on the prospectus?

      Frank Fingerman

      --

      I suffer from attention surplus disorder.
    7. Re:Just get off the keyboard retard! by CTalkobt · · Score: 1

      >>Re:Just get off the keyboard retard! (Score:3, Funny)

      The funny thing about the comment above was that someone actually thought it was funny. Heh. Wait until you get married ... you won't find it funny then.

      --
      There's a gorilla from Manilla whose a fella that stinks of vanilla and has salmonella.
    8. Re:Just get off the keyboard retard! by Uncle+Jimmy · · Score: 1

      Worse is being given directions by a woman:

      *Map being turned sideways/upside down*
      "You need to turn left..."
      *Looking out the window for street signs*
      ".....here!" (as we pass the street)
      "That street back there?"
      "Yes"

    9. Re:Just get off the keyboard retard! by QuantumG · · Score: 1

      Worse is when they see that you're not turning the map sideways/upside down and assume you are not looking then proceed to yell at you or turn the opposite direction to the one you said cause they got confused by you not turning the map upside down.

      --
      How we know is more important than what we know.
  9. I gave up by sfjoe · · Score: 4, Interesting

    I was assigned to do pair programming with a more senior person. I got so tired of my suggestions being ignored (not disagreed with, ignored), that I just gave up and sat and watched him. The project had long since morphed into a Death March so this was just one more reason to loathe going into work each day.
    If I ever get forced into another pair programming situation, I'll use my spare time to apply for other jobs.

    --
    It's simple: I demand prosecution for torture.
    1. Re:I gave up by Anonymous Coward · · Score: 1, Funny

      I tried pair programming with my siamese twin, but I guess I pissed him off so much he tried to beat me senseless.

    2. Re:I gave up by pyrrhonist · · Score: 4, Informative
      I was assigned to do pair programming with a more senior person. I got so tired of my suggestions being ignored (not disagreed with, ignored), that I just gave up and sat and watched him.

      Your experience was done completely wrong. Part of pairing a senior developer with a junior is to teach the junior developer things they didn't learn in school However, the junior developer constantly questioning the senior developer's judgement is equally as bad as the senior developer ignoring the junior developer. Neither developer is there for the other's amusement, and it's good to keep in mind that there should be no criticism; sometimes neither developer's idea is very good.

      These are the problems as I see them:

      • You should have been the one typing. You will learn more this way, the other person should express things as ideas, and not code. Then, as a senior, he can point out optimizations, if you go astray while coding. Telling someone how to type printf is not pair programming, noting that the error needs to be logged is.
      • The senior programmer should have told you why he thought your ideas wouldn't work, and not be such an asshole. It's not helping you any if you don't understand why the senior is choosing not to implement your idea, and he probably has a good reason.
      • Likewise, you need to learn when to shut up and not be such and asshole. The senior has more experience than you, and stating the obvious on every line is not going to accomplish anything. He already knows what to do, so either ask constructive questions or add to the design; don't just spout idioms and cliches.
      Pair programming is a two way street!
      --
      Show me on the doll where his noodly appendage touched you.
    3. Re:I gave up by CodeWanker · · Score: 1

      The times it's worked for us was in death march mode. One person who was the better-animated zombie for the time being would code. The less-well animated zombie would eyeball the code and look for stuff. Worked well because there were lots of annoying errors popping up: people picking nondescriptive variable names in a for loop then forgetting to actually use the incrementing variable (declaring a descriptive incrementing variable elsewhere that never changed! Genius!)When zombie A wound down, zombie B would take over the coding. We were able to get a lot better work out of it. But the critics elsewhere are right; it does suck. Once you've lost your will to live, your partner ceases to be unbearably annoying. At least in our cases.

      --


      "Wow. Now THAT'S a lot of angry Indians." - Lt. Col. George Armstrong Custer
    4. Re:I gave up by Anonymous Coward · · Score: 1, Insightful

      some of these so called "experienced" developers are completely idiots with no real skills. There are these terrible hacks who know little about good practices and aren't willing to learn. I think we've all seen this before. If I ever get paired with one of these types, I would lose it, working with them on the same project is bad enough. They break the build constantly, keep files checked out for no reason, make rookie mistakes constantly, get you to help fix a problem that was their fault yet act like it was yours, etc. Experience does not mean someone is a good at what they do.

    5. Re:I gave up by dubl-u · · Score: 1

      Your experience was done completely wrong.

      Agreed. When people are learning to pair, I tell them they should make sure the keyboard changes hands every 10 minutes or so.

      Another good way to force collaboration is to have person A write a test and person B make it pass. Then B writes the test and A makes it pass. It's a fun game.

    6. Re:I gave up by Zarf · · Score: 1

      Worked well because there were lots of annoying errors popping up: people picking nondescriptive variable names in a for loop then forgetting to actually use the incrementing variable (declaring a descriptive incrementing variable elsewhere that never changed! Genius!)

      Wow. Sometimes it's better to just slow down and not make stupid mistakes like that to begin with. When I start to do that I go home... and post on slashdot.

      --
      [signature]
    7. Re:I gave up by pyrrhonist · · Score: 1
      Likewise, you need to learn when to shut up and not be such and asshole.

      That didn't come out right. Before I get flamed, let me explain myself by saying that I'm not claiming that you personally are an asshole. I was attempting (badly) to show how you could be perceived by the senior developer, and that sometimes it requires practice to learn to not say something at the right moment.

      Anyway, I hope I preempted any confusion, hurt feelings, etc.

      --
      Show me on the doll where his noodly appendage touched you.
    8. Re:I gave up by sfjoe · · Score: 1

      You should have been the one typing.

      That was one of my ignored suggestions.

      ...and he probably has a good reason.

      Possibly. Actually, I don't think he was even hearing me.

      Likewise, you need to learn when to shut up and not be such and asshole.

      I did shut up. I thought that was made clear in my OP.

      --
      It's simple: I demand prosecution for torture.
    9. Re:I gave up by pyrrhonist · · Score: 3, Interesting
      That was one of my ignored suggestions.

      You were on the right track! Your pair was improperly trained.

      Possibly. Actually, I don't think he was even hearing me.

      That's completely unprofessional. All I can say is that the developers that I have worked with would never do anything like this. In fact, in the last place I worked where pair programming was not policy, we sometimes ended up initiating a pair programming session on our own when we had a particularly hard problem to solve. This happened regardless of the seniority of the engineer.

      I did shut up. I thought that was made clear in my OP.

      Ack, that's not really what I mean; see this earlier explanation. In your particular case, being quiet wouldn't have helped you. Unfortunately, your partner is an antipattern, and probably no amount of diplomacy would have helped.

      Let me try to illustrate this better with an example: Back when I was a junior developer, I was put on a project I had no experience with (I didn't even know how to program in the language they used), and told to add a particular feature in a very complicated section of the code. Of course, I had questions, and it so happened that the main developer (and the person I was told to work with) was located right across the hall from me. So, I would pop in from time to time to ask questions about what certain undocumented variables meant, or which part of the state machine I could safely change. I thought everything was fine until my annual review where I got lambasted for, "asking too many questions". Of course, my first thought was, "That greasy bastard!"

      However, you have to look at it from his point of view. The code that I was working on was not critical (it was going to be heavily reviewed and documented before it was passed off on). The code he was working on was critical, more complicated, and on a tighter deadline. He was the more critical resource, and even though he was told to help me, his time was more important. What I should have done was prepare a list of all the questions and sample code that I had, and scheduled an early meeting with him. In other words, working with him instead of pissing him off.

      This is a skill that has to be learned, and unfortuately the way it's usually learned is that the junior developer gets pinged. Over the years, I have found myself in the same situation as the senior developer in my story, but I have, at least, been better about telling junior developers what I expect and scheduling time with them.

      --
      Show me on the doll where his noodly appendage touched you.
    10. Re:I gave up by ZorroXXX · · Score: 2
      As others have pointed out, it's all about working toghether.

      We have bought the book "Pair Programming Illuminated", ISBN 0-201-74576-3, which talks about the practical things related to pair programming.

      I have not read it yet, but I noticed that one of the chapters has the following title: My Partner Is a Total Loser and Other Excess Ego Problems :)

      --
      When you are sure of something, you probably are wrong (search for "Unskilled and Unaware of It").
    11. Re:I gave up by mikael · · Score: 1

      Your experience was done completely wrong. Part of pairing a senior developer with a junior is to teach the junior developer things they didn't learn in school However, the junior developer constantly questioning the senior developer's judgement is equally as bad as the senior developer ignoring the junior developer. Neither developer is there for the other's amusement, and it's good to keep in mind that there should be no criticism; sometimes neither developer's idea is very good.

      I would hope that any project large enough to require two or more programmers working in a team, would have a general design written up, and listing the basic architecture (libraries, user-interface, file formats) if nothing else. I can't see how this would help for the implementation for anything like file format readers, user interface dialogs (layouts, callbacks/slots/signals). Discussions on the design of the application should be done in the beginning of the project or at least the beginning of a particular module.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
  10. Small experiences by Anonymous Coward · · Score: 1, Funny
    Had a chance to do a few days of pair programming with a coworker. We have worked well together for the past two years, but this was our first time paired. Normally, all coding is done alone in my company.

    I fell in love with her.

  11. you were no rose either by greywar · · Score: 2, Funny

    Hey! You were no rose either. And that whole printing routine was a farce. And its YOUR FAULT. I suggested something different but you had the keyboard. And speaking of which-you hogged the keyboard the whole freakin time too!

  12. Missing the point? by Anonymous Coward · · Score: 4, Insightful

    I found my pair programmer a bit difficult to work with.

    That's actually the whole point of pair programming. It's supposed to slow you down so you make fewer mistakes.

    1. Re:Missing the point? by deacon · · Score: 1
      That's actually the whole point of pair programming. It's supposed to slow you down so you make fewer mistakes.

      Um, couldn't I just type with one hand tied behind my back?

      People either know what they are doing, or they don't. A system which siameses two people to do the job of one sounds like the latest "Managment Consultant" speak, as well as a way to sidestep the issue that some of the people can't do the job.

      Teamwork is for Horses. More can be accomplished by having fewer people exerting individual effort, with managers who act to remove senseless roadblocks, provide a clear specification, and stick to it.

      The projects that are doomed have a cast of millions who spend most of their time arguing whos job it is to polish the halter and oil the harness. The amount of *REAL* work available for each person is too small, and people find other, pointless things to do in order to justify their existance wasting their own time and that of many others.

      Note to spelling socialists: English is not my native language, so I always welcome pointless corrections on spelling.

      That is all.

    2. Re:Missing the point? by The-Bus · · Score: 1

      Working by yourself makes the assumption that you are the best there is at everything and you have the time to do everything quickly and efficiently. This does not mean that every task needs a commitee of ten idiots working with you. This does mean that having a 2nd person that is really good covering your weaknesses (and you in return) is something that will be immensely productive.

      The problem lies in the fact that you can't just automatically put two people together and assume that that is the best case scenario.

      --

      Small potatoes make the steak look bigger.

  13. 4 years of xp and all i got was this lousy t-shirt by dwatling · · Score: 5, Interesting

    Things I would recommend:

    - Communication. This is by far the most important quality to have as a pair.
    - Patience. Sometimes your pair might not be at the same level you are, in this case, it is your job to help get them there.
    - Assertiveness. If you have no clue what your pair is doing, ASK!

    Other recommendations I have are to force your partner to drive if they are more inexperienced than you. This will help you both learn. If you don't have any idea what's going on then tell your partner you'd like to drive for awhile. I find this helps get you focused and allows you pick things up faster.

    Of course, if your partner just isn't willing to cooperate, then I think there are other issues that need to be dealt with. But, for the most part, I think people are more than willing to teach others, you just have to ask and communicate.

    Another thing to keep in mind, too, is to give it time. You aren't going to be a master pair after a few days or weeks.

  14. I get a lot done by Paradise+Pete · · Score: 3, Insightful

    The main thing it does for me is keep me focused on working. It's also good when there's a hairy problem to figure out. But sometimes when it's time to just crank out some straightforward code without getting distracted it's better for one person to go take a break for a while.

    1. Re:I get a lot done by aminorex · · Score: 1

      Personally, I'd rather have an elbow fungus when there is straightforward code to crank out, because I might fall asleep and drive off the road. It's when there's a hairy problem to solve that I need to focus, concentrate, and comprehend the path traced by each follicle in solitude.

      --
      -I like my women like I like my tea: green-
    2. Re:I get a lot done by John+Harrison · · Score: 1

      You mean that having someone sitting next to you keeps you off of /., right?

    3. Re:I get a lot done by Paradise+Pete · · Score: 1
      You mean that having someone sitting next to you keeps you off of /., right?

      Well, yeah, that's part of it :-)
      Last week I travelled to an office where I had no internet connection. One of my most productive weeks in a long time.

    4. Re:I get a lot done by Paradise+Pete · · Score: 1

      BTW, in pacman I'm seeing trails. I noticed in your notes that you've tried to fix it, and they don't always appear, but sometimes they still do. I don't see an obvious pattern as to when. Also, I tried to look at the source code, but the link that says source points to the jar.

    5. Re:I get a lot done by Anonymous Coward · · Score: 0

      There's only one hairy problem around here buddy, and it's not me!

    6. Re:I get a lot done by John+Harrison · · Score: 1
      I tend to export both .java and .class files to my jar files. So the source is in the jar.

      I am guessing that you own a Mac! Java draws things slightlty differently on a Mac. Drawing a circle is always 1 pixel larger to the right and also down on a Mac. Now that I know this I need to take it into account. I also need someone with a Mac to test it.

      I will put a fix up and reply to this your comment.

  15. Nothing different by The-Bus · · Score: 4, Insightful

    Not really anything different than working with any other person. Programming doesn't introduce some new kind of situation to deal with that teams of two haven't been dealing with for centuries.

    So, my tips, just coming off about a year's worth of pair work:

    1. The most important thing is that you have to be complementary. That is, their strengths have to fix your weaknesses, your strengths have to fix their weaknesses. If they don't have any strengths, it will be more like training for them, a mentor/student situation as opposed to a true team.
    2. Think of it as a product. If "average" or "baseline" is 1, it helps if you're a 2.1 and they are a 1.4. If you're very good and they're not, the total suffers. Only work with someone that is as good as you or better, and only do it if you're very good to begin with.
    3. Define exactly who is going to do what! This is not terribly succesful when managers do it because they're not you two -- they can't see you in action and suggest anything. It's up to you to figure out what works best --- split up all the different tasks so that each of you are doing what you do best. As you go along you will find out whether it's better to write these down and adhere to them or (better yet) have them be somewhat fluid so that some responsibilities cross over.
    4. One system should keep track of what's going on. Whether that's a calendar you both use, a checklist pinned on the wall, an eraseboard, or just one of you two.
    5. (Regarding the previous). Think in term of goals, not minutiae. You both should be good enough that if you're, for example, auto mechanics, one of you says, "Find out where the noise on the Pontiac is coming from" rather than saying "From 10:30 to 11:00 I want you to inspect the following parts and pieces of the Pontiac: A, B, C, D..."
    6. Keep everyone else out of it! Once a system is established and you've learned to rely on each other it's going to be really obtrusive to have others meddle in.
    7. Meet together with management whenever possible.
    8. It helps if both of you have similar goals as to the level of your performance. Even if both of you are skilled gurus and one of you is checking job sites because they need to leave in the next six months, that's not going to work out.

    This is, as I said before, from about a year's experience working day-to-day with only one other person. I hate paperwork, don't really like a lot of "busy" work and, in both cases, the other person just wasn't very good at some of the major intricacies of the position. The first time, we were more succesful than either of us was alone (generally being 2.5x times as productive as any individual). The second time, we were doing about as much as eihter of us were doing individually.

    The good thing is that now I'm back by myself and have become a lot better thanks to the teamwork environment. I wasted a couple of months, but that's behind us now.

    --

    Small potatoes make the steak look bigger.

    1. Re:Nothing different by Tony-A · · Score: 4, Interesting

      Programming doesn't introduce some new kind of situation to deal with that teams of two haven't been dealing with for centuries.

      1. "their strengths have to fix your weaknesses, your strengths have to fix their weaknesses"
      By far the most important. An old rule of thumb (before the Mythical Man Month) was that "if one programmer can do it in one year, two programmers can do it in two years." When and if the "two heads are better than one" comes enough into play, the answer can be two months!

      3. "who is going to do what". Bad place for management to meddle. People tend to hide their weaknesses, even from management. When a team works, individual weaknesses are very well hidden from all onlookers.

      4. "One system should keep track of what's going on."
      Absolutely. In fact one bad system will beat two good systems.
      You can tolerate different goals or directions. You cannot tolerate different positions of where you are now.

      6. "Keep everyone else out of it!" Effective teams become very suspicious of all "foreigners", not excluding management.

    2. Re:Nothing different by DavidpFitz · · Score: 1
      6. "Keep everyone else out of it!" Effective teams become very suspicious of all "foreigners", not excluding management.


      Keep the people who are paying the bills out of it? You're joking?

      Keep management out of it? You're joking? They're the ones who tell the bill payers how things are going.

      A teams actions must be transparent and accountable for their actions, right up the chain of leadership.

      D
    3. Re:Nothing different by Tony-A · · Score: 1

      Teams are an "in place of" not and "in addition to" type of thingee.

      Management judges a team on results, not on how the results were achieved.
      If a team fails to perform, it's back to the old way of doing things.
      Management's rights regarding teams is the ultimate solution, to destroy the teams.

      A teams actions must be transparent and accountable for their actions, right up the chain of leadership.
      That isn't a team. It's a chain of command. Weakest link and all that.

    4. Re:Nothing different by DavidpFitz · · Score: 1
      Management judges a team on results, not on how the results were achieved.

      Really? The ends justtify the means, and all that? I have never seen a management team who judge only on results. They manage, not just judge.
      A teams actions must be transparent and accountable for their actions, right up the chain of leadership.
      That isn't a team. It's a chain of command. Weakest link and all that.

      Really? You've never seen a situation where one team reports to another team? e.g. a Build team reports to a management team, who reports to senior management, who report to the project sponsor etc. etc. ?
    5. Re:Nothing different by Tony-A · · Score: 1

      "The ends justify the means, and all that?"
      Good one, but if the ends do not justify the means, then what does justify the means? If the means are not employed to effect some end, then why are the means employed? What is true is that ordinary ends do not justify extraordinary means.

      "management team"? Like a "sanitary engineer" is almost certainly not an engineer, a "management team" is almost certainly not a team. The term "team" is used in the hopes of maybe getting a wee bit of cooperation out of the members.

      Real teams are pretty rare, and when they do exist they tend not to advertise themselves. The use of the term "team" is a fairly good indicator that it is not in fact a team, but a pretender.

  16. I learned the hard way that by Anonymous Coward · · Score: 0

    you should never participate in pair programming when naked.

  17. Who's in charge? by GCP · · Score: 4, Insightful

    I think the best approach is to pair an experienced person with a less experienced person, and make it clear to both that the more experienced person had two votes and the less experienced had one in any disagreements.

    I wouldn't mind being partnered with someone with a lot more experience. I would consider it an opportunity to turbocharge my own learning, and though I would ask lots of questions and might even gently challenge some decisions, I would make it clear that they were HIS decisions to make, even if the boss didn't manage it that way.

    I also wouldn't mind being the senior partner as long as the junior understood that, though I would appreciate his input, the decisions were mine.

    Two inexperienced people shouldn't be paired. All of their arguments will end up being over who is able to make who back down. Complete waste.

    I would also be willing to be paired with another experienced person, with my (senior) level of experience, if it were the right person. It would be harder to make this work with two arbitrary people than the case with unequal pairings and one guy in charge. In the case of two experienced people, if you had to specify which one was in charge, it probably wouldn't be a good pairing.

    I had a discussion with another senior architect (like me) the other day, and both of us agreed that it would be fun for us to try pair programming together some time because both of us have concluded that the other has expertise that we wish we had. ;-) He's the only one in his group I'd be willing to work that way with, though.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    1. Re:Who's in charge? by dubl-u · · Score: 4, Interesting
      I had a discussion with another senior architect (like me) the other day, and both of us agreed that it would be fun for us to try pair programming together some time because both of us have concluded that the other has expertise that we wish we had. ;-) He's the only one in his group I'd be willing to work that way with, though.

      That's one good reason for pair programming, but it's far from the only one. Here are reasons I like promiscuous pair programming:
      • instant code review
      • instant design review
      • keeps me from making stupid mistakes
      • keeps me from gold-plating
      • I spend less time debugging
      • I know more about the system
      • handing off work is easier
      • code is more consistent throughout system
      • when we get tired, we notice and take breaks
      • improves truck factor massively


      That last one is probably my favorite. When I'm on an XP team, taking a vacation is never a big deal, because I'm never the only person who knows how to do something.
    2. Re:Who's in charge? by angel'o'sphere · · Score: 1


      Two inexperienced people shouldn't be paired. All of their arguments will end up being over who is able to make who back down. Complete waste.

      This is not my experiance.

      EWither the topic is not important, then they will really fast solve it by chosing either of the two approaches.

      If he topic is important, the one who is wrong will very likely understand the arguments of the other one.

      Smart people usually want to get the job done and move forward to other interesting "problems" like anyone else.

      If the guy who is wrong does not step back, he wont "understand" regardless with whom he is paired ... or in other words: if a guy shows to not step back or not to understand regardless with whom he is paired, he is out of he team in no time.

      Bottom line: YES!! Besides for education purpose, two experianced people should be paired!!! Suppose you have space shuttle mission, the co pilot is NOT a guy who has made his flight license just a week ago. The co pilot is VERY experianced. The fact that the commander/pilot is more experianced does not mean that the co pilot is newby.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    3. Re:Who's in charge? by DavidpFitz · · Score: 1
      That's one good reason for pair programming, but it's far from the only one. Here are reasons I like promiscuous pair programming:

      * instant code review
      * instant design review
      * keeps me from making stupid mistakes
      * keeps me from gold-plating
      * I spend less time debugging
      * I know more about the system
      * handing off work is easier
      * code is more consistent throughout system
      * when we get tired, we notice and take breaks
      * improves truck factor massively


      And it therefore costs your employer twice as much. Good programming teams will pair up when the going gets tough and two sets of eyes are better than one.

      I really don't think pair programming is productive. When you are just churning out code there is no need for two people to look at the screen - one is enough and you can get things done quicker working seperately. Pair programming inhibits the JFDI approach, in my experience.

      I don't really code any more (not allowed to, I'm apparently too expensive!), but when I did and I ran into trouble I'd ask for help from a colleague - we would often spend hours pair programming until we it was sorted.

      D.
    4. Re:Who's in charge? by Paradox · · Score: 1
      And it therefore costs your employer twice as much.
      In many cases, the amount of time saved on code creation, bug catching, and testing far outweighs the initial investment of two developer's time. If the code is better and contains few bugs, it is worth a lot more than the same mass of code with far more bugs.
      I really don't think pair programming is productive. When you are just churning out code there is no need for two people to look at the screen - one is enough and you can get things done quicker working seperately. Pair programming inhibits the JFDI approach, in my experience.
      Well, XP people would say that Pair Programmingis only step one. But, when people start a job and work together until it's finished, the results are very impressive, in my experience.
      I really don't think pair programming is productive. When you are just churning out code there is no need for two people to look at the screen - one is enough and you can get things done quicker working seperately. Pair programming inhibits the JFDI approach, in my experience.
      In my experience, a pair team can churn out far more quality code in the same unit time. Pair Programming is also about the social aspects. A million little things can slow you down and distract you, and your partner's job is to keep you focused (and in turn, you keep him focused).

      You mention bringing someone "in" on a project late in the cycle. That's a surefire way to lose time. Bringing someone up to speed on a project can be time consuming. For someone already up to speed on the project, understanding a bug is much easier, and the faster they understand it the faster you can move to a solution.

      Maybe when you paired, you paired with people unsuitable, or you initiated pair programming too late in the dev cycle?

      --
      Slashdot. It's Not For Common Sense
    5. Re:Who's in charge? by dubl-u · · Score: 1

      And it therefore costs your employer twice as much. Good programming teams will pair up when the going gets tough and two sets of eyes are better than one.

      Therefore? That may or may not be true, but you've proven nothing.

      Between me and the previous poster, we listed 11 things that pair programming improves. If those have any effect on productivity, then that changes the productivity ratio. The only thing that's 2x in pair programming is the hand/keyboard ratio, so your theory would only be true when typing speed is the limiting factor in programming. But in my experience it rarely is; most of the time, the barrier is thinking speed.

      When you are just churning out code there is no need for two people to look at the screen - one is enough and you can get things done quicker working seperately. Pair programming inhibits the JFDI approach, in my experience.

      And thank goodness for that.

      f you're pounding out a short bit of write-only code that you never have to maintain, pair programming probably isn't necessary. But if you're doing serious development on a code base that you plan to keep, then you should never be "churning out" code.

      If code is so obvious that you don't have to think while writing it, then it means you're missing an opportunity to abstract it and remove duplication.

      I really don't think pair programming is productive.

      You're welcome to your opinion, of course. But the studies on pair programming don't confirm that. And having done serious projects both ways, neither does my experience.

    6. Re:Who's in charge? by GCP · · Score: 1

      If the guy who is wrong does not step back...

      I think the reason we disagree on the question of two inexperienced people being paired relates to the source of the disagreements between them. You are talking about "the one who is wrong" as if in most disagreements one will be right and one wrong.

      In my experience, almost all of the disagreements are over personal preferences regarding how to do handle something. "We should use a 'for loop' because... No, a 'while loop' is better in this case because...." Or whether a certain method really belongs in Class A or Class B, or whether to bring in an additional library for two small functions or to avoid that dependency and rewrite both yourself, etc.

      Two inexperienced people arguing over these decisions is not a productive situation. You should have a senior partner who is authorized to make the decision as he sees fit, after listening to the counter argument, without being required to convince his partner.

      --
      "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    7. Re:Who's in charge? by Anonymous Coward · · Score: 0

      The only type of pair-programming that works is me and myself.

  18. Quasi_pair by cookiepus · · Score: 3, Insightful

    First of all, I think the problem is with you. Here you are asking us for feedback on pair-programming, but you barely tell us what problems you encountered. Do you just sit with your pair and say "all this shit is fucked up?" You should probably tell us the specifics of the issues, at the very least for our education, and maybe someone can address them more specifically.

    Anyway, just kidding. Didn't mean to attack you personally, just consider what I said.

    I find sitting and developing with someone very useful, especially if this person is new-ish and I want to bring them up to speed. Basically I watch them do their thing and comment on what they're doing, especially if it could be done better. This is certainly very effective at keeping them from putting in silly errors, because I spot those right away. But the real advantage is that from short sessions like this I can ascertain the person's grasp of the task. If I can see that he's basically looking at the right things and going about it the right way, I feel OK with going back to my desk and doing my stuff. If the guy makes a lot of errors and is generally approaching things the wrong way, good thing I am there to keep him from getting too deep.

    I would guess that mandating 2 programmers per computer at all times is too much, but there certainly are times when doing this for short periods of time is extremely productive.

  19. Well said. by BrokenHalo · · Score: 2, Insightful
    In other words:

    Grow up and get on with your job.

  20. It doesn't have to be all day! by Just3Ws · · Score: 1

    In my most recent contract I've been working with various levels of experience and switch between working solo, teaming with an associate at the same workstation and working remotely on several junior associates workstations. For those that are significantly less experienced I've found that remotely accessing their desktop to demonstrate or help with a problem/question to be very useful, plus I can help more people in a shorter time. I get to continue working on my assignments at a steady pace and they can still work at their own pace. For more the more experienced, it just saved us time, and a long walk (although we all could use the walking!). Either way it was good because we could all maintain our own personal spaces, weren't so constrained by other people's schedules and didn't have to change contexts. While the other was testing a routine or some other long process, I could review documentation or even continue working on my assignment. Team programming doesn't have to be always at the same workstation all the time.

  21. The key is communication by Zarf · · Score: 2, Interesting

    ... if you are not both effective communicators then pair programming will only be painful. You must be able to handle criticism, give criticism, and do so in a constructive way. If you can't do that then you're too old skool programmer for the new skool programmer ways.

    --
    [signature]
  22. Actually I'm doing this right now... by BeatdownGeek · · Score: 2, Informative
    And I think it may help if you and your partner have different strengths and weaknesses so that you compliment each other somewhat.

    Right now I'm taking a real-time and embedded systems course at RIT. The idea is that it's inter-disciplinary: CE, EE, CS and SE students are taking the course.

    So for the projects, they pair a CS or SE student with a CE or EE student. This makes for teams with one person who's strong in lower level (assembly/ hardware) work, and another who's more familiar with higher- level programming concepts.

    I've found that while my teammate knows the assembly much better than I do (I'm SE) I can more easily grasp the overall design and algorithms involved to complete the task. This actually made for very productive work since it's like having two different perspectives working on the same puzzle.

    I imagine that if both of the ppl involved were at the same level knowledge-wise, it could get frustrating. In that case I would just look for peer review. But in my case it's been working great.

  23. Extreme Programming by lexarius · · Score: 1

    Over the summer I had to do an "extreme programming" project. The group had three members, including myself. I was the 'code monkey' type. I took care of the libraries and helper functions and regular expressions and filesystem quirks. The second member was the database guy and front-end guy. Since both of us could to an extent do the job of the other while being primarily focused on separate components, this worked well. We sat down and worked on our own stuff. Occasionally we would request functions of each other, and rarely a problem would crop up that benefitted from combined knowledge. The most useful part of having someone sitting next to you was when you have those brain fart moments when you can't figure out why the thing doesn't compile or work properly. Then your buddy looks over and points at the spot where the close-brace should go and everything is rosy again. Despite having never worked together, we quickly came to trust each others work. On the other hand, the third member was useless. No matter what work was assigned to him or requested by him, he could not accomplish it without major help. He did not make any deadlines until nearly the end of the project. Even then, everything he produced had to be rewritten or overhauled. He was eventually banned from putting functions in the libraries because he had a habit of working from old files and wiping out our good working copies. Despite his enthusiasm and willingness to make a great effort at trying to learn, I cringe at the thought of working with him again or using anything he produces. He will probably end up working for Microsoft. (Other than all that, I have nothing against him. Nice guy really.) The Point: It all depends on who you work with.

    1. Re:Extreme Programming by Bitsy+Boffin · · Score: 1

      He was eventually banned from putting functions in the libraries because he had a habit of working from old files and wiping out our good working copies.

      Eek, you had more than one programmer working on the same system, and NO REVISION CONTROL???

      Please tell me you at least had backups?

      --
      NZ Electronics Enthusiasts: Check out my Trade Me Listings
    2. Re:Extreme Programming by lexarius · · Score: 1

      Of course we had backups. The project wasn't big enough to bother with CVS, though. It worked as long as common sense was used. However, this fellow apparently didn't see anything wrong with writing functions into a two week old copy of the library and then dropping it into the working copy.

    3. Re:Extreme Programming by Anonymous Coward · · Score: 0

      Yah "common sense" to you. You gotta realize that this (obviously) did not make sense to someone else. If you were having issues like this then the project WAS big enough to bother with CVS. Blaming problems on people when there is a perfectly good technical solution is a sign of poor management. God I worked at a place with five people were the two (yes two managers, three employees, wtf?) managers believed in neither version control or backups. I tried very hard not to laugh when one the managers lost a day of work right before a deadline because a hard drive crashed. Or one of the programmers (and think each of us in turn did it a few times) would get yelled at for not knowing the manager's "common sense" approach to version control, and overwrote files. Hope they never put you in charge of something important.

  24. Thick Skin by Ratbert42 · · Score: 1

    It helps to have a thick skin. The only times I've done pair programming we end up making fun of every little mistake the other makes. It's fun and funny with the right person, but with the wrong person this can go too far.

  25. that should be a lot of fun by jdkane · · Score: 2, Funny
    From the article: "The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects"

    Driver: click, click, click, tappety-tap tap tap, click.

    Observer: Dude, Intelli-sense just underlined that word in red. It's some kind of syntax error -- just hover your mouse over it to see it.

    Driver: Ya, I saw it ... I just want to finish up what I'm typing and ...

    Observer: It just underlined something else in your code. I don't think it's gonna' compile.

    Driver: Of course it won't compile. Just wait until I finish this thought .... tap, tap, clickety click, tap-tap

    Observer: I would fix those errors before continuing.

    Driver: WHY? clackety-clack, slam, bang

    Observer: Why not?

    Driver: ARGH!

    Observer: I'm bored. I'm just gonna' go grab another coffee.

    Driver: GO AHEAD. AND WHILE YOU'RE AT IT, HAVE A SMOKE, AN EXTRA LONG LUNCH, AND THEN TAKE THE REST OF THE DAY OFF BECAUSE YOU'RE NOT LOOKING SO GOOD RIGHT ABOUT NOW.

    1. Re:that should be a lot of fun by clintp · · Score: 2, Insightful

      When we were pairing around here (gave it up, not appropriate for this business model, etc...) we got over this in the first day.

      Our Driver could type all of the mistakes he wanted to, but since the Navigator was doing the big picture stuff too (in addition to being an observer) he could indicate just before the driver switched functions/files/pages that there were problems. So your conversation would have gone more like:

      Navigator: Modify that bit in Foo.bar() to do such-and-so.
      Driver: clickety-clickety
      Navigator: (Quetly noting mistakes.)
      Driver: clickety-clickety, fixing some mistakes he's noticed, making others Okay, now where?
      Navigator: Before we pop over to Class.method(), that variable should have an uppercase Z and you want to pass obj1 to method bar() not tmp1.
      Driver: Okay. clickety-clickety Going over to Class.method now.... mousey-mousey

      The Navigator isn't backseat driving and the driver can type things any way he wants too as long as he doesn't leave a mess somewhere.

      --
      Get off my lawn.
  26. Pair Programming with two keyboards by Skinkie · · Score: 1

    I actually like the working together fact. Not on a regular base, but for complex stuff it is quite usefull. So while we were having two laptops and a screen session to a file I asked out loud:

    Why don't we have two carets in the same file so we can edit both at the same time.

    If someone knows an editor capable for this groupworking please reply.

    --
    Support Eachother, Copy Dutch Property!
    1. Re:Pair Programming with two keyboards by cpforbes · · Score: 1

      emacs is the solution. meta-x make-frame-on-display and there you have a single emacs instance on 2 displays with the same set of buffers and both displays can edit at the same time. If you are clever with cygwin probably can do this on windows too.

      All praise emacs!

    2. Re:Pair Programming with two keyboards by firefarter · · Score: 2, Informative

      If you're lucky and work on OSX you might want to try out SubEthaEdit.

      You can browse other user's open documents via Rendezvous - errr... OpenTalk, grant them access to your open docs. And nice colors so you can see who is breaking what.

  27. One word: by Anonymous Coward · · Score: 0

    SubEthaEdit.

    Well, if you have Macs, that is. I've heard great things about it, and it's shareware so you can try it out for free.

  28. I peer program every day... by heistgonewrong · · Score: 2, Interesting

    me and my partner run a web development firm, after getting to know eachothers styles, it's a breeze now! we can colaborate together, or finish up eachothers work, it's a great experience. i guess not so much if you're just starting out with someone, but give it time and you'll love the benifits.!

  29. One word by some+guy+I+know · · Score: 1
    Has anyone been in this situation, and what things can be done to work around the personality conflicts?
    One word: Firearms.
    --
    Those who sacrifice security to condemn liberty deserve to repeat history or something. - Benjamin Santayana
  30. Extreme Programming? by Anonymous Coward · · Score: 0

    Ummm...that doesn't sound like extreme programming...more like collaborative programming.

    Extreme programming is where you both work on the same code, on the same monitor, with one doing the typing.

    Always reminded me of the Dilbert cartoon where the PHB stands over Dilbert's shoulder and screams "Click the mouse" but then extreme programming seems to be designed for people who look at coding as something to do only at work.

  31. Working in pairs requires two focuses by Peter+Cooper · · Score: 2, Interesting

    Working in pairs can only work if each member of the pair has their own responsibilities, and not, like in most pair programming, the same responsibilities. For example, pilots can work in pairs since while one 'has the stick' or is talking to the tower, the other can be dealing with navigational and environment issues.

    Sitting watching someone program is not the same, whether you're making input or not. Put it into the pilot's position. Pair programming is like the co-pilot constantly saying to the pilot.. 'er, nudge to the left a bit', 'hey, watch out for that cloud there', 'it's time to call the tower', instead of actually doing something productive.

    Mechanics can work in pairs, but generally they'll be working on different areas of the car.

    Surgeons can work in pairs, but each will have a specialty, or more hands are just required to do that particular op.

    Musicians can work in pairs, trios, and so on. But they don't all gather around a piano and give suggestions to the person at the keys! They all have their own instrument and play at the same time.

    If you want to code in groups, code in groups.. but make sure at least everyone has a keyboard!

  32. Equal opportunities by fishfinger · · Score: 1

    I think pair programming can be useful but I think it is important to pair up programmers of similar skill level.

  33. Alternatives by hugg · · Score: 1

    I like the concept of pair programming, but it seems in practice it's hard for everyone to get behind it, and there are other things you can do that are just as good. Like, you can get everyone in the same room with their computers close together. You can occasionally ask "what are you doing now?" and solicit opinions on your own tasks. You can give show-and-tell sessions every day. You can help write unit tests for someone else's code. If everyone understands the high-level issues, and the priorities, and helps each other occasionally, that's what matters.

  34. sounds too much like being married! by museumpeace · · Score: 1

    No two people think alike, regardless of any equality of externaly measurable/testable aspects of their intelligence. So what is left to fix? Their EGOs. My understanding of the theoretical advantage of this approach is that it is like the discovery that you could more easily make a waterproof super-thin rubber membrane, despite the tendency of the raw material to have tiny holes, by laminating two thinner membranes: the defects never line up. Two programmers are not likely to have exactly the same blind spots in devising a piece of code. But in practice, the more the two ego's just happen not to get in the way, the sooner the two begin to work just alike, with one merged perspective whereas two competing perspectives were actually the root of the benefit. Back in the 70's the term "egoless programming" was briefly in vogue for conducting code reviews...in my experience it WAS an improvement in quality for code production. Even when it was not better code, at least it had better comments.
    But DAMN I HATE IT WHEN PEOPLE LOOK OVER MY SHOULDER!

    --
    SLASHDOT: news for people who can't concentrate on work or have no life at all and got tired of yelling back at the TV.
  35. What to do by Brother+Grifter · · Score: 1
    What things can be done to work around the personality conflicts?

    You can dig a hole in a ground, and fill it with water, with shark that have frikkin' lasers on their heads and then toss that guy in it.

  36. I hate it I hate it I hate it I hate it. by Anonymous Coward · · Score: 2, Insightful

    Pair programming is a crutch to prop up people who have no clue what they're doing. Take one smart person, one thumb twiddler, and they just might be a quarter as productive as the smart person alone. But we don't mind, because Mr. Thumb Twiddler isn't twiddling his/her thumbs anymore. And getting things done isn't nearly as important as making sure everyone looks busy.

    The only way to program is on your own. Learn stuff from more experienced people at code/design reviews. If you need someone staring over your shoulder all the time, your either very lonely outside of work or just incompetitent on your own. Sometimes there's something tricky enough to warrant talking it through with someone, but doing it all the time is just being chatty.

  37. Different skills by Sentry21 · · Score: 1

    I often pair up with a friend of mine on projects - not necessarily programming directly, but sometimes technical stuff (design, implementation, etc with programs already written). My friend is doing his Master's in CS, and I have one year of an Arts major done. Suffice to say, he's the better programmer.

    What I bring to the team, however, is the big picture. I can design in my head in a few moments how things should be laid out and the possibilities of each option, I know enough about languages to pick the proper tool for the job, and I know enough about programming to provide input in that respect when it's needed.

    Teaming up two programmers with the same skillsets might be handy from a catching-bugs point of view, but the two of us working together with our completely different skillsets works great from a design-and-implementation point of view, since I can do the design and he can do the implementation, but we each know enough to help with both.

    That's what pair programming should be. Not two C wizards sitting down nagging at each other, but two people who know C and who know design, but who are only excellent at one or the other, to bring different skills to the table, and defer to the other in their areas most lacking.

    --Dan

  38. My Pair Programming Experiences by Paradox · · Score: 1
    I've had a few experiences with Pair Programming at Lockheed. It's been pretty interesting, but it has its ups and downs. Some people are very suited to "pilot" and others more to "copilot". It's important to switch off these two roles, but some people just can't take one role.

    I had to do a kind of emergency-coding-session with my boss, he had dawdled on a project and then management applied thumbscrews, so we decided to just crank it out in a week.

    I started as copilot, and didn't like it very much, since I was the one who had come up with a new design for the program (when meteorologists make data file formats, parsing them in real time without delays can be an exercise in ingenuity). However, my boss was very good at driver and appreciated someone to keep him focused when he was diverted by code details.

    On that day, we wrote about half the project, about 750 lines of code. It worked well once we got the rhythm down. Afterwords, we were both really tired. The intensity of the activity surprised us both. It is more work than just coding, and until you're used to it, you may feel like it's a lot of work.

    My boss though, basically refused to play copilot and only checked in with me ever 15 minutes the next day,so I had to finish the project on my own (the other 600 lines of the project went quickly).

    Still, when it worked, it worked well, and I can recommend it. But, it does take a conscious effort to let go of your ego and a lot of effort to listen careful.

    --
    Slashdot. It's Not For Common Sense
  39. Ego by web_boyo_in_sac · · Score: 1

    I don't see what the problem with Ego is, it can be a very good driving force, I've worked longer and harder on projects just because of my Ego, I know I can do it, my Ego knows I can do it, but doubt will hold you back, Ego can drive through Doubt. Not to confuse Ego with Arrogance, I know of others skills, and when to rely on their knowledge over my own. Ego is good, Arrogance is bad.

  40. waste by Anonymous Coward · · Score: 1, Interesting

    Seems to me this approach would actually WASTE time. "What are you doing....why....how 'bout doing it this way....what's that...." SHUT THE F*CK UP! Seriously, you would pay 2 people to do the work of 1, it would likely take longer, & I really have doubts that the quality would be better. A different perspective isn't necessarily a better perspective, but developer A may go along with bad ideas just to get developer B to not A) keep talking B) tell the boss dev A isn't a team player. Personnaly I hate working with someone looking over my shoulder. This approach has too many flaws to mention...

  41. integrating by Eric604 · · Score: 1

    IMO
    Pair programming is just training each other. For example when putting modules together - say module A has calls to module B - then it could be helpfull when the programmers of A and B get together and while A is typing his code programmer B instructs how to use module B.

    In any case, pair programming should not be done full time, some things need to be thought out without distraction. If you can't get any work done on your own then you're a lazy ass or just incompetent.

    But i'am not a pro, so what do i know.

  42. This is a joke, right? by titzandkunt · · Score: 1


    "...Why don't we have two carets in the same file so we can edit both at the same time..."

    For the same reason that cars don't have two steering wheels up front.

    You're renaming/deleting class member variables in your editor view, while your buddy suddenly sees the member functions he's working on fall to pieces, because they depend on those variables?

    Of course you could tell him what you're doing, and he can wait until you're done. And like many world-beating multi-threaded concepts, it is degraded into a single-threaded way of working in order to avoid those pesky race conditions & deadlocks.

    This is a simplistic objection. Coming up with more horrific examples is left as an exercise for the reader.

    T&K.

    --
    Political language ... is designed to make lies sound truthful and murder respectable...
    1. Re:This is a joke, right? by Skinkie · · Score: 1

      Nope, what about on the fly fixing typo's your mate made instead of getting him out his mantra. Writing two functions at the same time, if the work is designed first, following by implementation it is pretty clear who is going to implement what.

      --
      Support Eachother, Copy Dutch Property!
    2. Re:This is a joke, right? by titzandkunt · · Score: 1

      Hm. This sounds like two people doing the job of a typist - if everyone knows what attributes and functions are required, it all sounds a bit waterfall-ey.

      Design->Code->Test. Do it once, and do it *right*. Fred Brooks has much to say about the pitfalls of this strategy. Waterfall is often associated with over-design or design paralysis and failed, over-budget projects.

      Nowadays, many folk prefer some iterative or incremental approach, where skiing off piste (unforseen additions/removals/refactoring) during an implementation phase is ok and often vital: It can be round-tripped back into the design and acommodated during the next design phase.

      On this basis, I don't see any impending clamour for multiple carets & editor views.

      T&K.

      --
      Political language ... is designed to make lies sound truthful and murder respectable...
  43. Poster Update by gmletzkojr · · Score: 1

    I posted the original topic and read through many of the comments that have been made. Some of you asked for more info, so here are a couple of my return comments.

    I initially wrote a couple classes to perform some messaging, and maintain some states of objects. The code was to integrate into an existing system. I was to write the logic of the new feature, and (as a pair) we were going to integrate the new code into the system. However, the other half of the pair didn't bother to read any of the code prior to us meeting - instead, he just waited for me to tell him.

    My partner was essentially put in charge of the integration from our boss - he drove the couple of days we worked together. However, even though he asked for guidance, he wouldn't actually listen to what I had said, until multiple failed attempts on his own.

    As far as the obvious issues (hey, you smell bad!), they really didn't come up. And I'm sure we could all take the high road and inform the boss of the incompatibility between us, but, in the end, the code needs to get done. My pair was a competent person, but seemed to wrap his brain around the problem at hand late in the game.

    In case anyone was wondering, the completed system did work successfully.

    --
    I for one welcome our new [insert main topic] overlords.
    1. Re:Poster Update by Anonymous Coward · · Score: 0

      However, even though he asked for guidance, he wouldn't actually listen to what I had said, until multiple failed attempts on his own.

      This is largely the experience I had with pairing. I worked at a company that has used it for years and many of the developers at the keyboard (including me) don't want to hear what their partner is saying. Why? because I'm thinking damnit! shutup!

      My experience was that pairing didn't work very well. I used to literally see non-KB partners snoozing from time to time. Do you think that was working? Pair programming is just another tool in the box. I'd say that it was an appropriate tool to use about 7% of the time. The rest of the time should have been solo coding.

  44. A good agile company, NOT pair programming by Anonymous Coward · · Score: 0

    This is interesting: http://www.agiledevelopmentconference.com/files/XR 1-3.pdf/ (pdf format)

    It describes how, on one project, a team from Thoughtworks chose NOT to pair program. They still had a "buddy" system though, and that replaced pair programming.

  45. It is different in practice by Kolisar · · Score: 1

    Having spent the past two years pair programming I am left with a negative impression of its practicality. My experience has shown that the amount of time saved by the other person catching something that you may have done incorrectly (from a typo to pure coding error) is only a fraction of the time wasted explaining what you were thinking and why you coded something that particular way. I agree with an earlier comment that design is best done in groups but coding is a solitary task. Having someone looking over your shoulder performing a real-time code review is more distracting than helpful. If the design was done properly the coding can be done by one person. A proper code review, after the code is written, will address the issues that will be caught by your partner without interrupting you mid-thought because you missed a semi-colon. I am not sure that this holds for everyone who writes code but, in my case, I tend to get into a stream of consiousness and the code flows from that, if interrupted just because I misspelled a variable name or didn't properly indend a block of code can can pull me out of the stream and it takes some time to build the momentum back up. especially when the compiler would catch any syntactical errors.

  46. Single Flow is not the same as Group Flow by shapr · · Score: 1

    Group Flow is a different thing, but it's even more powerful than single flow.

    I got the power when it comes to creative and unusual ideas, but I get easily distracted into investigating all those ideas. When I work with a good partner, they point out the flaws that are obvious to them and things move a lot faster.

    My experiences with PairProgramming were euphoric, each time my partner and I produced far more high quality code in a few hours than I usually produce by myself in days.

    Anyway, the point of 'Agile Programming' is to be agile, you wiggle around till you find what works for you and the rest of your team. If you try pair programming and it doesn't work for you, don't do it.

    One important part of eXtreme Programming is that qualified people make decisions, programmers make tech decisions, and managers support the programmers who are actually doing the work.
    That means pair programming or whatever should not be mandated.

    The idea of XP is to form a tight and smooth team, like a jazz band, where everyone can jam together. Whether you like Acid Jazz or prefer something closer to Blues, it's the choice of the team, and every team is unique.

    --

    Shae Erisson - ScannedInAvian.com