Slashdot Mirror


The Programmers Go Coding Two-by-Two — Hurrah?

theodp writes "The Wall Street Journal reports that pair programming is all the rage at tech darlings Facebook and Square. Its advocates speak in glowing terms of the power of pair programming, saying paired coders can catch costly software errors and are less likely to waste time surfing the Web. 'The communication becomes so deep that you don't even use words anymore,' says Facebook programmer Kent Beck. 'You just grunt and point.' Such reverent tones prompted Atlassian to poke a little fun at the practice with Spooning, an instructional video in which a burly engineer sits on a colleague's lap, wraps his arms around his partner's waist and types along with him hand over hand."

318 comments

  1. Suck it and see, it's not for everyone by Peter+Cooper · · Score: 5, Insightful

    Like many workplace practices, it's something worth trying, but not something to be trumpeted as "the way" to do things. Some people get on with pairing, some don't. And it's OK either way. Likewise, there are writers who work in pairs, but many who do great work alone. There are architects who work in groups and alone. So it goes for software developers.

    Where it goes sour, however, is when people who find pair programming valuable start tarring anyone who doesn't do it as being error-prone slackers.

    1. Re:Suck it and see, it's not for everyone by O('_')O_Bush · · Score: 5, Insightful

      It also works better for inexperienced programmers than it does for seasoned vets. Partly because of egos, partly because problems don't end up being as difficult to solve.

      Also, there is the problem of getting tired, where programming ends up being handed off between partners while the other partner zones out, and at each handoff, one has to come back up to speed. Surfing the web is bad for some, but for many programmers it is an opportunity for one to collect and organize their thoughts, and attack problems from new angles.

      I've heard pair programming increases productivity by 150% over a single programmer, but two programmers independent are still more efficient than a pair. I believe this to be accurate, after a few months experience.

      --
      while(1) attack(People.Sandy);
    2. Re:Suck it and see, it's not for everyone by man_of_mr_e · · Score: 5, Insightful

      I agree. Not everyone can work in pairs. And certainly there are many people who cannot work in pairs with certain other people. It really requires a good friendship to make it work.

      I actually stumbled across this myself in 1994 when I was forced due to time constraints to work with another programmer to finish a project... we sort of accidentally did pair programming and it was very effective.

      But i'm not sure I could recreate that kind of synergy again.. I've tried and it didn't work.

    3. Re:Suck it and see, it's not for everyone by mooingyak · · Score: 4, Insightful

      It also works better for inexperienced programmers than it does for seasoned vets.

      My understanding of the process is that it's ideally a pair with one seasoned vet who is supposed to have the large view and one junior programmer who is supposed to be handling the details while learning from the seasoned vet.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    4. Re:Suck it and see, it's not for everyone by Jane+Q.+Public · · Score: 2, Insightful

      "Some people get on with pairing, some don't."

      And if they're just getting into it now, they're only about 6 years behind the curve.

      But why should I be surprised? Considering that Facebook was based on PHP?

    5. Re:Suck it and see, it's not for everyone by fermion · · Score: 2

      15 years ago I knew a few senior programmers that did this. Like the current case it was internal software that would never be distributed to external customers. It all ran in house, was updated frequently, so overall quality was not as important as rapid development. Serious bugs could be recalled instantly, less serious could be rolled out in day or two. Which is to say I think pair programming, if that is what the kids are calling it now, might be very workable for certain people and certain situations, but we will have to see if it is all the rage in a few years.

      --
      "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    6. Re:Suck it and see, it's not for everyone by jellomizer · · Score: 5, Insightful

      I found paring inexperienced with experienced developers actually work a lot better.

      1. Ego - Developers need to keep their ego's aside. There Egos is what keeps them doing the wrong thing over and over again. A fresh young mind to challenge his decision really helps him rethink what he is doing.

      2. Experience - The new guy doesn't have experience, experience isn't how fast you code, but to know what gatcha will get you, unless you account for them early. New developers tend to code themselves in a box. More experienced developers keep a hook open to add changes in particular areas where they know there will be a change (even though non of the specs say it will change), Experience workers can teach them why they break the rules when they do.

      3. Trading Skills - Having one code owner is dangerous, having a few developers knowing what is going on is very handy. The idea of coding yourself a job, is often short sited because you have coded yourself in a position where you cannot advanced. Plus giving young developers skills to work and advance in the project is a good thing too.

      4. It restricts getting tired - Coders will pass off the boring stuff back and forth so when you are at the 80% complete mark, you have energy to fill in the 20%
       

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    7. Re:Suck it and see, it's not for everyone by jythie · · Score: 3, Insightful

      Sadly there seems to often be an attitude of 'I selected programmers who are ideal for X, X worked, therefor X is the way to program!'... which if you follow the mantra too closely can really limit your pool of talent since not only do you have to find someone who is good at the job, but someone who enjoys working in that very specific environment..... it decreases workplace flexibility.

      Then again, with the rise of brogammer culture, I gather a lot of place are not concerned with flexibility or diversity in the first place and actively encourage mono-cultures. And of course it is another way to push out all those pesky introverts who keep thinking they are people.....

    8. Re:Suck it and see, it's not for everyone by ifrag · · Score: 1

      I've found it to be valuable for short time periods working through either specific integration tasks or refining certain code that multiple people have had input on. Or sometimes just as a sort of natural thing where I'd bring up an issue with someone and we'd work through it right then. I'd probably go crazy and find another job if I had to pair program all the time.

      --
      Fear is the mind killer.
    9. Re:Suck it and see, it's not for everyone by slim · · Score: 4, Interesting

      Great points all. I'll add:

      5. It keeps you honest. Coding is full of temptations to cut corners. But you're less likely to cut that corner if someone else is watching -- and you won't let a colleague do the kind of lazy things you'd do yourself.

    10. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 1

      My experience has been that if one programmer is more knowledgeable of the code being worked on that the other the other programmer quickly just ends up being a secretary taking dictation. A total waste.

    11. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      I have found that pair programming works well when either working out a particularly difficult and contracted problem or when starting from total scratch on a new project while you're trying to get the foundation set in. Then, once everyone knows what's going on, it's more efficient to split up and work on the pieces you need completed.

    12. Re:Suck it and see, it's not for everyone by Surt · · Score: 2

      I'd be very curious to know how you're measuring productivity. Our experience has been that pairing results in more than 200% productivity.

      (For our definition of productivity, which includes the long-term maintenance effort on the resulting code).

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    13. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      YMMV. In my experience, it makes me cut corners more, because I feel like I'm wasting the other guy's time if I sit and think hard for a couple minutes about how to, say, rewrite a loop more clearly.

    14. Re:Suck it and see, it's not for everyone by Gr8Apes · · Score: 3, Informative

      Mine's been pretty much consistently <50% productivity for the pair.

      Why, you ask? Because 2 senior people working on web services can knock out 2 web services in 'x' timeframe, or 1 when paired, in 'x' + 'y' timeframe, where 'y' is a number equal to or greater than 0. The same goes for any other component functions.

      --
      The cesspool just got a check and balance.
    15. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 2, Funny

      ego's, there, sited, advanced

      Just pair-programming the errors in your post. Don't mind me.

    16. Re:Suck it and see, it's not for everyone by jeffmeden · · Score: 1

      I'd be very curious to know how you're measuring productivity. Our experience has been that pairing results in more than 200% productivity.

      (For our definition of productivity, which includes the long-term maintenance effort on the resulting code).

      It almost has to be in LOC or some other hard to judge metric. If anyone really believed that pairing two coders results in one of them getting only half of their work done, they would be idiots for letting it go more than one day.

    17. Re:Suck it and see, it's not for everyone by CodeHxr · · Score: 3, Insightful

      I currently work in this scenario with myself being the more knowledgeable programmer. While there is a bit of dictation from time to time, I always take the time afterwards to make sure my pair understands what was done and, more importantly, why. As time goes on, these dictations become fewer and farther between. If a pair is working primarily and continually from dictation, then they're doing it wrong.

    18. Re:Suck it and see, it's not for everyone by Fallingcow · · Score: 3, Insightful

      Shit, I spend more time reading docs, googling, staring in to space thinking about problems, and doodling ideas and flows on paper than I do actually coding. I'd think it would be hard for two programers' true coding time to line up well enough for pair programming to work, and you'd have to allow time for them to share any breakthroughs they'd had between sessions, unless you tried to pair-think too, which sounds annoying at best. Bouncing ideas off co-workers as necessary is one thing, but beyond that it seems counterproductive.

      Maybe this works if you have a very top-down structure with an engineer/analyst up the chain handing you every single thing you need and defining in extremely precise terms how everything last detail should be implemented so there's nothing left to do but type, and maybe decide which kind of loop to use or whether to use switch/case versus if/else or whatever.

    19. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 3, Insightful

      Yeah, if you want the seasoned vet to commit seppuku...

    20. Re:Suck it and see, it's not for everyone by AwesomeMcgee · · Score: 5, Informative

      No, this is a magnificent technique for mentoring, but this is *not* pair programming. I can't stress how great it is for mentoring though. Turn a Junior into a mid-level engineer real fast.

    21. Re:Suck it and see, it's not for everyone by AwesomeMcgee · · Score: 1

      Completely agree. I've loved both mentoring in pair and pairing with experienced engineers, I find pair coding with another experienced engineer the best way to sketch up the beginnings of new work, or untangle the guts of somewhere dragons be. However I find it definitely slows you down when you have 2 experienced guys crunching out the boilerplate after the guts have been neatly piled together for the new or old bits. As soon as this part is complete, I find it best we each take a pile of guts, go to our respective desks and start working out the boiler plate that uses it.

    22. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      I've heard pair programming increases productivity by 150% over a single programmer, but two programmers independent are still more efficient than a pair.

      If you used pair posting, your buddy might have corrected your math.

    23. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      most people are too slow to work with... dont memorize the keyboard short cuts, lazily drag the mouse to the menu bar and select, etc. If the likes pair its good, but getting the right mix is the hard thing.

    24. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      Experienced programmers cut corners all the time. But they cut the proper corners. (Cf. cargo cult programmers, or inexperienced programmers, who think every dot has to be crossed, and every t; what they end up having is a big pile of overwrought crap.) Having an inexperienced person constantly question "why, why, why" would just get on my nerves. It already gets on my nerves, and I'm not even pair programming.

      The problem with pair programming is that it doesn't allow you to think. Inexperienced programmers, like children, tend to ask questions before thinking about the problem. If the senior engineer is 2 feet from your face, that doesn't sound to me like the best situation to encourage critical thinking, as opposed to just asking "why, why, why".

    25. Re:Suck it and see, it's not for everyone by Surt · · Score: 1

      Seems like for work that you just need to knock out, you might be even better off offshoring, or at least hiring new grads instead of seniors.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    26. Re:Suck it and see, it's not for everyone by schlachter · · Score: 2

      i find co-ed naked pair programming to be the most productive; especially when looking to start a new branch.

      --
      My God can beat up your God. Just kidding...don't take offense. I know there's no God.
    27. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      what's this Engineer bullshit? I thought we were talking about coding?

    28. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 2, Insightful

      No thanks.

      I believe as an experienced coder that I will end up spending all my time explaining my code to someone with less experience and/or justifying my code to someone who wants to do things a different way. Since I'm "old" the collected experience of my life, and all the generations before me that I studied, will be deemed "outdated" because it doesn't jive with something someone read in a book.

      A continual flame war, with continuous interruptions, with another ego maniac really sounds like a great technique for getting things done to me.

      I worked on a project with another programmer where we were told to record our time conscientiously. It was going to be billed back to a consulting firm who delivered the original unworkable code. At the end we found we had spent 55% of our time explaining what was done to the other programmer. The inescapable
      conclusion is that the project would have been done faster by one programmer.

      For gods sakes, just say no to the madness.

    29. Re:Suck it and see, it's not for everyone by slim · · Score: 2

      The problem with pair programming is that it doesn't allow you to think. Inexperienced programmers, like children, tend to ask questions before thinking about the problem.

      This may be a problem with pair programming with an inexperienced partner. It shouldn't be a problem when you're pairing with an equal.

      Pairing with a less experienced partner is a great way of teaching though -- and teaching is irritating for many people.

      Pairing itself is a skill. I think a lot of people shooting it down have tried it briefly, and given up before seeing the benefits. Like spending an hour with a guitar and a fingering chart, then saying "this instrument is incapable of making a pleasant sound".

    30. Re:Suck it and see, it's not for everyone by slim · · Score: 1

      I think even the most ardent pair programming advocate would recognise situations where it's not adding value, and break out to do that aspect a different way.

      That said, they'd probably see your boilerplate activities and chase a way to avoid doing it that way.

    31. Re:Suck it and see, it's not for everyone by luis_a_espinal · · Score: 3, Interesting

      YMMV. In my experience, it makes me cut corners more, because I feel like I'm wasting the other guy's time if I sit and think hard for a couple minutes about how to, say, rewrite a loop more clearly.

      But that's part of one's job, to think about those things and when to do them and when not to. You are teaching the junior person how to thing about such concerns, and hopefully many others (instead of just let's get this shit to compile asap!!!!). Quality coding is not just banging the shit out of the keyboard, and anytime a vet helps a junior cross that mental chasm faster, it helps both the junior and the company's bottom line.)

    32. Re:Suck it and see, it's not for everyone by luis_a_espinal · · Score: 1

      Mine's been pretty much consistently <50% productivity for the pair.

      Why, you ask? Because 2 senior people working on web services can knock out 2 web services in 'x' timeframe, or 1 when paired, in 'x' + 'y' timeframe, where 'y' is a number equal to or greater than 0. The same goes for any other component functions.

      That would be yet one more indication that pair programming should be taken as a tactical approach, and not as a general, strategic one (or religious one as the pair-programming zealots would like the rest of the world to think.) There are times when pair programming does not make sense, and engaging developers should know when not to. It certaintly cannot be mandated from above because the people on the trenches... err keyboards know when they should and when they shouldn't pair themselves up for a given task.

      Putting two seniors together to do something they can do perfectly well by themselves is one of those cases. Putting two seniors together to tackle a truly new problem, or when only one of the participants is familiar with the problem space, that's a case where pair programming could be used (assuming the people involved are compatible as paired co-workers.)

      Pair programming is a tool, and like all tools, it has a context in which it should and should not be used.

    33. Re:Suck it and see, it's not for everyone by luis_a_espinal · · Score: 1

      I'd be very curious to know how you're measuring productivity. Our experience has been that pairing results in more than 200% productivity.

      (For our definition of productivity, which includes the long-term maintenance effort on the resulting code).

      It almost has to be in LOC or some other hard to judge metric.

      Doesn't have to be like that. Another metric is to simply get something done with degrees of quality and efficiency that are self-evident (you know it when you see it kinda thing.) Sometimes a coarse, abstract measure is better than a concrete one.

      Also, and at the risk of getting of the tangent, LOC and other metrics are not hard to judge, provided you establish some context that gives them meaning. By themselves, they don't mean anything.

      It's like body weight: 200lbs for a person. What does that mean? What information that weight conveys? None at all. Add gender, age, height and girth, and now you can infer some information out of the body weight measure.

      If anyone really believed that pairing two coders results in one of them getting only half of their work done, they would be idiots for letting it go more than one day.

      If anyone where to believe that, they would be idiots themselves. Same with anyone who believes pairing will increase productivity two-fold. The truth is contextual to the problem at hand (and the participant's skills and personality traits), and it is always somewhere in the middle.

    34. Re:Suck it and see, it's not for everyone by luis_a_espinal · · Score: 1

      Shit, I spend more time reading docs, googling, staring in to space thinking about problems, and doodling ideas and flows on paper than I do actually coding. I'd think it would be hard for two programers' true coding time to line up well enough for pair programming to work, and you'd have to allow time for them to share any breakthroughs they'd had between sessions, unless you tried to pair-think too, which sounds annoying at best. Bouncing ideas off co-workers as necessary is one thing, but beyond that it seems counterproductive.

      Maybe this works if you have a very top-down structure with an engineer/analyst up the chain handing you every single thing you need and defining in extremely precise terms how everything last detail should be implemented so there's nothing left to do but type, and maybe decide which kind of loop to use or whether to use switch/case versus if/else or whatever.

      YMMV, but my experience has not been like that. I typically work solo, but I've done pair programming, or rather, pair-thinking using a whiteboard and paper while coding or reading (or deciphering) technical specs. It works pretty well when devising test cases too (in particular for stress/failure testing as in "how do we break this shit" or "is there any scenario we have not thought of yet?").

      I've never encountered a counter-productive pair-wise experience, but that's because I rarely engaged in the practice. However, I can think of scenarios where pair programming does not work. It is one's job to know or envisage when pair programming (or any technique for that matter) is applicable or not.

    35. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      This is true when you pair two mediocre coders together.

    36. Re:Suck it and see, it's not for everyone by xtracto · · Score: 3, Interesting

      I have seen a problem in that in the time I have done pair programming.

      When I am the 'seasoned vet' I get quickly frustrated by the slowness of the person who is writing. On the other hand, when the writer is more senior than I am, oftentimes I just cannot follow what he is doing, if he goes too fast (like when doing Vi-editing).

      This maybe except with one particular very good senior who was saying out loud what he was doing *as* he was doing it.

      --
      Ubuntu is an African word meaning 'I can't configure Debian'
    37. Re:Suck it and see, it's not for everyone by gutnor · · Score: 4, Interesting

      That is the most difficult pairing you can make unfortunately. Either you put the vet as the driver and the junior will simply not follow or get bored. Or you let the junior drive and then it becomes a dictation. In both case, the junior brain shut down and it relies on what's written/dictated and stop thinking for himself.

      You want junior dev to struggle a bit on their own so they have the opportunity to evaluate various options. That process is enhanced in pair with another junior developer. Immediate feedback from a more senior dev is in my experience slowing the learning process and killing the creativity of the junior.

    38. Re:Suck it and see, it's not for everyone by Jane_Dozey · · Score: 4, Interesting

      Yes, I've worked with people who are great at pair programming and those who are not so good. I find that when working with someone who really gets PP you end up with two programmers (or more!) working together, both of them on the same page, catching mistakes and improving how the code is written.
      When working with someone who just starts coding and expects their partner to magically understand what they've decided to do then it can be impossible to keep up or figure out what on earth they're doing. At that point you have a programmer programming and another programmer wasting their time scratching their head.

      PP works wonderfully when you pair people up correctly and train everyone involved how to effectively work like that, but if you don't then you waste resources and frustrate your coders.

      --
      Silly rabbit
    39. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      I agree. Not everyone can work in pairs. And certainly there are many people who cannot work in pairs with certain other people. It really requires a good friendship to make it work.

      I would actually disagree with that sentiment. I've worked in a pair with someone who I didn't really get along with and managed to be productive. You both have to learn a little give and take and make sure that you don't always try and force your own preferences on the other person (understanding when something is incorrect and just not how you would have done it is important). It can even force you to learn new techniques that you would otherwise have dismissed.

      But i'm not sure I could recreate that kind of synergy again.. I've tried and it didn't work.

      Yes, you have to both really understand what PP is about and practice it to make it work on demand, which is hard to do if it's just a casual dojo, short term project or something similar.

    40. Re:Suck it and see, it's not for everyone by jgrahn · · Score: 1

      Seems like for work that you just need to knock out, you might be even better off offshoring, or at least hiring new grads instead of seniors.

      That reminds me of the *many* times I've seen qualified people ready to do job X, but it gets assigned to some newbie instead. Newbie does it badly, and the qualified people get to clean up the mess afterwards. That last phase is likely to take more time than if they had been allowed to do it right from the beginning.

      Why this notion that the person who can do better than a half-assed job, is *overqualified* to do it?

    41. Re:Suck it and see, it's not for everyone by KC0A · · Score: 1

      Introversion is not the same as social anxiety. I'm an introvert, and have happily paired with other introverts. Pair programming is not a party, it's just work. Confident introverts do fine.

    42. Re:Suck it and see, it's not for everyone by SomePgmr · · Score: 5, Interesting

      You used the word, "mentoring". It occurs to me that people have been doing this in virtually every trade for centuries in more traditional apprenticeships.

      I was in a situation similar to this as a programmer. Nobody had planned for us to work in pairs, it just worked out that way. The bit in the summary about the two of you learning to basically read each others' minds is pretty accurate.

      One guy tends to introduce the more creative, interesting ideas, while the other (probably more experienced guy) sees when you're missing the forest for the trees. The end result is, hopefully, more impressive work that's not so impressive that it fails at basic functionality.

      It worked out really well for us. Of course, YMMV.

    43. Re:Suck it and see, it's not for everyone by slim · · Score: 1

      "Some people get on with pairing, some don't."

      And if they're just getting into it now, they're only about 6 years behind the curve.

      But why should I be surprised? Considering that Facebook was based on PHP?

      This article is about Kent Beck. Kent Beck is not "just getting into" pairing.

    44. Re:Suck it and see, it's not for everyone by eulernet · · Score: 1

      You forgot to mention Köhler's effect:
      http://wayback.archive.org/web/*/http://www.uni-hamburg.de/fachbereiche-einrichtungen/fb16/absozpsy/HAFOS-40.pdf

      It's a motivational effect, which encourages the lowest performer to surpass himself.

      Köhler's effect is the opposite of Ringelmann's effect.

    45. Re:Suck it and see, it's not for everyone by eulernet · · Score: 1

      In fact, productivity increases when the task to be done is boring to do.

      When the task is motivating, pair-programming reduces the productivity.

      For example, I hate coding UIs, but when I pair-program UIs, I'm very efficient at that.
      When I'm motivated by a coding challenge, pair-programming slows me down, because I'll have to communicate, which is a slow process.

    46. Re:Suck it and see, it's not for everyone by Jane+Q.+Public · · Score: 1

      "This article is about Kent Beck."

      But the SUMMARY was about Facebook and Square.

    47. Re:Suck it and see, it's not for everyone by Surt · · Score: 1

      It also appears to be true for two highly skilled coders, and one skilled and one mediocre.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    48. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      Time to initial output is probably going to be longer, yes, but in theory the output will be higher quality (fewer bugs, fewer serious design flaws).

      If that's true (I have no firsthand experience to say whether it is or not), then the higher quality output will more than make up for the time spent with less time spent downstream identifying and fixing the issues.

    49. Re:Suck it and see, it's not for everyone by ElusiveJoe · · Score: 2

      I currently work like this, being less experienced programmer. You know what, it was much better when I worked in pair with same level programmer. When both programmers are equally experienced (or inexperienced), the relationship is very friendly and motivating, as both persons are learning and helping each other.

      When one of them is more experienced than the other, it immediatly turns into boss-subordinate relationship, which is not good. It turns out that not only you are at disadvantage and supposed to catch up on your own, you are constantly scolded for your work, while offering zero help for your mentor and irritating him with "naive" questions.

      TLDR: bad idea.

    50. Re:Suck it and see, it's not for everyone by fm6 · · Score: 1

      there is the problem of getting tired, where programming ends up being handed off between partners while the other partner zones out, and at each handoff, one has to come back up to speed.

      If only one programmer is actually working and the other is zoning out, is that really pair programming? Doesn't sound like it.

      The first time I heard of pair programming, it was in this article, which describes combining it with the Pomodoro technique, where nobody works for more than 25 minutes at a stretch. That would seem to address the one-guy-gets-tired issues, and indeed the general problem of people pushing at a job when taking a break would raise their overall efficiency.

      I'm a tech writer, and I've often wanted to try pair writing with a development engineer. That would be a nice dovetailing of skills, since each of us would be strong in areas where the other is weak. Opportunity has never come up, alas.

    51. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      Mod parent up! Coding is the final, most superficial phase of "programming", and research and thinking is non-linear and subjective (person-dependent). The entire experience of communicating with someone else throughout that process would mostly be chaotic and frustratingly unrewarding for both.

    52. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 1

      [sarcasm]
      6. Facebook says it works so it must be true. It's even written on the internet!
      [/sarcasm]

      Pair programming isn't some magical shortcut to become a skilled developer.
      Years of programming, trying to understand other peoples code and trying to educate yourself is the only way to get there.

    53. Re:Suck it and see, it's not for everyone by Gr8Apes · · Score: 1

      I don't think paired programming would help me when coding UI's (I am in the same boat as you). In fact, I strongly suspect that I'd be the boat anchor with the paired partner in that case.

      --
      The cesspool just got a check and balance.
    54. Re:Suck it and see, it's not for everyone by Gr8Apes · · Score: 1

      Time to initial output is probably going to be longer, yes, but in theory the output will be higher quality (fewer bugs, fewer serious design flaws).

      If that's true (I have no firsthand experience to say whether it is or not), then the higher quality output will more than make up for the time spent with less time spent downstream identifying and fixing the issues.

      You're correct in one thing - everything you stated is pure speculation.

      --
      The cesspool just got a check and balance.
    55. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      It also works better for inexperienced programmers than it does for seasoned vets.

      I dunno - Jeff Dean and Sanjay Ghemawat did it: http://www.wired.com/wiredenterprise/2012/08/google-as-xerox-parc/all/

    56. Re:Suck it and see, it's not for everyone by phantomfive · · Score: 1

      Coding is full of temptations to cut corners.

      Someday I shall quote you.

      --
      "First they came for the slanderers and i said nothing."
    57. Re:Suck it and see, it's not for everyone by bungo · · Score: 1

      You shouldn't be creating a new branch ..... no forking in the office!

      --
      "The best part? I became an ordained minister while not wearing pants." -- CleverNickName
    58. Re:Suck it and see, it's not for everyone by jellomizer · · Score: 1

      Why don't you give them an answer?

      Are you sure you are always cutting the proper corners or you are cutting the corner because you really don't know how to do it the proper new way?

      And with all those why why why, when you manager needs to know what is going on, chances are you will now have a better answer. As you get experienced you can often code without thinking about it. Being forced to think about what you are doing is usually a good thing.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    59. Re:Suck it and see, it's not for everyone by justforgetme · · Score: 1

      Yep, that is an issue. Ususally people will need some time to "sync" and usually during that time they can get dangerously frustrated.

      --
      -- no sig today
    60. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      Like many workplace practices, it's something worth trying, but not something to be trumpeted as "the way" to do things. Some people get on with pairing, some don't. And it's OK either way. Likewise, there are writers who work in pairs, but many who do great work alone. There are architects who work in groups and alone. So it goes for software developers.

      Where it goes sour, however, is when people who find pair programming valuable start tarring anyone who doesn't do it as being error-prone slackers.

      I did that with a subordinate for a year. We lived in the same office, drank the same coffee, and ate the same Burger King Whoppers.
      What we did was describe the code to be produced in the day, and deliberated as to whether the approach was the best one. Then he coded the module, and I did the walkthrough and the test QA.
      I don't think we gained speed, unless you measure re-work, which was substantially reduced.
      And I was able to do other things while he did the coding.

    61. Re:Suck it and see, it's not for everyone by Anonymous Coward · · Score: 0

      This. I was a mid-level programmer when I was asked to pair program with a new college grad. My boss believed that this would increase my productivity, and reduce distractions. What actually happened was that I slowly, painfully, taught a new guy how to program. Seriously - it was bad.

      Pair programming is a great way to get into a fistfight, or to waste a *large* amount of time teaching a novice the basics.
      If two devs want to do it, fine. But don't expect increased productivity unless they're both novices.

  2. Maybe this is a generational thing... by sticks_us · · Score: 3, Interesting

    But most of the elder wizards of the programming community (at least the ones I know) tend to shy away from the pair programming mentality. Younger folks (especially people in their 20s) don't seem to mind as much.

    I wonder if this has something to do with the nature of the people who went into programming 20 years ago (compared to today), or what...?

    --
    "Beware of bugs in the above code; I have only proved it correct, not tried it." -- Donald Knuth
    1. Re:Maybe this is a generational thing... by noh8rz8 · · Score: 0

      I work best when throwing ideas around and talking through challenges. don't like working alone in a cubicle. so it works really well for me! doesn't hurt that my programming partner is a cutie (girl, to be specific).

      --
      You want to upvote/downvote? Go back to Reddit! Here we mod up/mod down.
    2. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      well, its frustrating and terrible inefficient for both parties.

      let me spend a couple of hours in the evening doing something interesting

      then discuss it in the morning with my peers, and flesh it out

      then have someone seriously review it

      we can talk about it in complete detail when it makes sense, i don't need to smell your farts

    3. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 2, Interesting

      I started doing this about 15 years ago in college. I was working on a project with a partner, but we only had one computer between the two of us. He did most of the typing, while I discussed design with him, helped debug, and pointed out typos. It's like an instant code review.

      Of course we didn't call it "pair programming" at the time. But I've done it at every opportunity since.

      dom

    4. Re:Maybe this is a generational thing... by O('_')O_Bush · · Score: 5, Insightful

      That is because new programmers don't have experience solving problems, and end up getting stuck spinning their wheels. For them, programming is the challenge. For more experienced people, the programming is trivial, it is the design that is a challenge.

      --
      while(1) attack(People.Sandy);
    5. Re:Maybe this is a generational thing... by macbeth66 · · Score: 1

      Interesting. In my office, it seems the the opposite is true. I thought it was because the younger ones had the attention span of gerbils on speed.

      Just don't pair me with a girl.

    6. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 2, Funny

      Doesn't hurt that my programming partner is a cutie (girl, to be specific).

      Pic or it didn't happen!

      Well, okay, I'm single and I'd like a faux-girlfriend photo to print and hang on my cubicle wall.

    7. Re:Maybe this is a generational thing... by mooingyak · · Score: 4, Funny

      we can talk about it in complete detail when it makes sense, i don't need to smell your farts

      You might change your mind if you were working with me. My farts smell like roses.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    8. Re:Maybe this is a generational thing... by vlm · · Score: 5, Insightful

      I wonder if this has something to do with the nature of the people who went into programming 20 years ago (compared to today), or what...?

      After you live and work through 10 or so silver bullet fads you'll get a bit jaded at "oh god not yet another silver bullet that'll magically fix everything if we just change everything and hire some expensive consultants".

      http://en.wikipedia.org/wiki/No_Silver_Bullet

      My main whine about pair programming is its a bastardization of ye olde master/apprentice. Oh so close to being correct, yet still miss the target. That's worked in about a zillion other fields for only about a zillion centuries. I learned a lot as an apprentice from some good masters and taught a few apprentices as a master, hopefully well. Pair programming claims master/apprentice inevitably leads to "watch the master" where the apprentice sits around and learns nothing. That's wrong; its not an inherent effect of master/apprentice, it's an inherent effect of shittymaster/apprentice. It does correctly show that having a con man or moron as master doesn't work, or maybe the older the programmer is the more important it is that he not be an idiot. Also its the apprentice's job not to be passive... ask why, ask how it works, ask what other options exist, etc.

      I suppose you can't charge $xxx/hr as a consultant or book author merely by telling the boss to set up something like a medieval blacksmithing guild, gotta come up with some new twist on the old story.

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    9. Re:Maybe this is a generational thing... by ArsenneLupin · · Score: 1, Informative

      i don't need to smell your farts

      Your doing it wrong. Watch the video. Pair programming is not 69. Your head should be next to his head. Not near his ass (because then he will smell your farts too, and one of you would have his hands under the keyboard...).

    10. Re:Maybe this is a generational thing... by vlm · · Score: 5, Funny

      we can talk about it in complete detail when it makes sense, i don't need to smell your farts

      You might change your mind if you were working with me. My farts smell like roses.

      Theoretically pair programming is supposed to pair up programmers with other programmers, not with management.

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    11. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      Young programmers are easily replaceable, so they can't complain.

    12. Re:Maybe this is a generational thing... by mooingyak · · Score: 4, Funny

      we can talk about it in complete detail when it makes sense, i don't need to smell your farts

      You might change your mind if you were working with me. My farts smell like roses.

      Theoretically pair programming is supposed to pair up programmers with other programmers, not with management.

      Hrmm. My farts smell like modular, well engineered roses?

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    13. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      I'm against pair programming with a guy, but I wouldn't mind pair programming with a reasonably attractive woman... Perhaps that's a way to more even the gender disparity?

    14. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      Rose's what?

    15. Re:Maybe this is a generational thing... by gstoddart · · Score: 1

      Your doing it wrong. Watch the video. Pair programming is not 69. Your head should be next to his head. Not near his ass (because then he will smell your farts too, and one of you would have his hands under the keyboard...).

      You seem to be laboring under the impression that teh Sphere of Stink of a fart is limited to mere inches.

      Trust me, if you're within a 12-15 foot radius of me, you're gonna get it. :-P

      --
      Lost at C:>. Found at C.
    16. Re:Maybe this is a generational thing... by jythie · · Score: 2

      I have gathered that today's culture is slowly trying to push out the personality types that were common 20 years ago. Programming used to be a highly stigmatized 'nerd' domain filled with introverts... today there is a lot more cash and social acceptance behind it, so the field is getting filled with people who are far more sociable and extroverted. It has also been pushing out women.. CS is one of the few STEM areas that has actually gotten worse when it comes to gender ratio over the last 30 years, with a decline of something like 30%. So yeah, significant cultural shift though the 90s and 00s.

    17. Re:Maybe this is a generational thing... by pixelpusher220 · · Score: 5, Insightful

      Or drive the few women in tech far far away....

      --
      People in cars cause accidents....accidents in cars cause people :-D
    18. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      Of course we didn't call it "pair programming" at the time. But I've done it at every opportunity since.

      If I recall correctly this method was called "Extreme programming" about 5 years ago. Do you remember what it was called back then?

    19. Re:Maybe this is a generational thing... by dingo_kinznerhook · · Score: 3, Funny

      we can talk about it in complete detail when it makes sense, i don't need to smell your farts

      You might change your mind if you were working with me. My farts smell like roses.

      Theoretically pair programming is supposed to pair up programmers with other programmers, not with management.

      Hrmm. My farts smell like modular, well engineered Rational roses?

      There, fixed that for you.

      --
      "God does not play Minecraft with the world." - Albert Einstein
    20. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      When I did my CS study, this was the standard programming method. We were always paired up. For good reasons. The ones who didn't want this could of course do the assignment separately then patch everything together, but they were never as effective as two people in tandem.

      Last month I sat down with an Apex programmer and we went through the code. I knew the ins and outs of the client requirements, did the architecture, and he did the implementation. He never had to go back to the client because I could answer every question he had, and catch most issues before they had to be referred back to the client. Also, when he was finishing up something I could get clarification on any other issue from the client.

      Not that pair programming works with everyone in every circumstance. However, the people that were against it where I worked, usually were against it for all the wrong reasons - and they didn't have a second of experience with it either.

    21. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      Is it ever ok to code ass to mouth?

    22. Re:Maybe this is a generational thing... by ArsenneLupin · · Score: 2
      Reminds me of a joke:

      A short time after his election to the highest office, F. Hollande (new French president) went visiting her Majesty the Queen of the British Empire

      Unconsciously he was rather afraid about this first opportunity for a monumental once-in-five-years gaffe.
      So, there he was sitting is the horse-drawn carriage of Her Majesty the Queen.

      Suddenly, one of the horses reminded the passengers of its presence more by their sense of smell than by their sense of hearing. It did this so well that their very breathing was impacted.

      The queen then said to mister Hollande: "You see, my dear, even the queen of England cannot control everything!"

      "I appreciate your honesty, Majesty, at first I assumed it was the horse."

    23. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      If you have a lot of young programmers, send them our way - we have to import them.

    24. Re:Maybe this is a generational thing... by ArsenneLupin · · Score: 1

      Is it ever ok to code ass to mouth?

      You might be interested in this movie, which illustrates the concept with more than 2 "programmers". Btw, in Unix parlance, this is known as a pipeline: the first command's output is the input for the second, and the second's output is the third's input...

    25. Re:Maybe this is a generational thing... by jellomizer · · Score: 1

      When they started to code depends a lot...
      Past-1985: (Computers were considered magical thinking machines) If you could make a computer work you were a God, if you are still working you have invited a good portion of our infrastructure. You were the Egg Heads who made the organization improve by a large percentage. Having those new kids who doesn't even know what a floppy disk is, seems insulting to you.

      1985-1995: (Computers were considered closer to a Bulldozer, big bulky does the job) Chances are you were Mr. Mainframe. When there was a problem people came to you, and you could fix it. More of a Nerd (in the negative context) you were locked away and you made your living trying to be as isolated from people as possible. Getting new people in you office/server room feels like an invasion.

      1995-2003: (The Crappy Desktop era) This was a tech boom. Covering Y2k fixes and Dot COM Business v. 2.0 They hired any poor slop with "Certification" however the ones that really knew what they were doing were Gold. They opened the door to the C Table and we were part of the higher up business decisions. Those of us who worked the trenches needed to rapidly patch and fix the crap decisions that were made. We see a lot of good reliable systems go away for newer shinier and more prone to problem systems. This group is starting to welcome new guys a little more. However a lot of them are real bitter because they were once strategic business makers and now they are just normal labor forces.

      2003-2012: (The Dark Age/Mobile Age) Most of the innovation has gone to mobile computing, the rest of the innovation has dried up. On the plus side this dark period of innovation allowed many of these crappy systems to get fixed and become more reliable (Windows Me vs Windows 7) (Mac OS vs OS X) We are seeing less new guys and we want to see them because we need more new thinking. So they are more welcoming working with someone else.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    26. Re:Maybe this is a generational thing... by iluvcapra · · Score: 1

      Pair programming claims master/apprentice inevitably leads to "watch the master" where the apprentice sits around and learns nothing.

      Sounds like the master in that case is just saying "move over kid, let me do it" all the time. Naturally software development is an attractive field for control freaks -- people who came to computers specifically because computers follow precise instructions, need to be taught nothing, and require no patience or emotional consideration. Many other crafts require intensive teamwork, an ability to judge people and products subjectively, and a LOT of patience.

      Traditionally, master-apprentice relationships also had very specific timelines and goals: work for me for five years, and the guild will certify you and then you can be a journeyman, with more pay and autonomy. That's not very amenable to the modern economy, where newbies are all perma-temps with no future in an organization, people on the line are terrified of training their cheaper, younger replacement, and rockstars are at liberty to jump ship (it's the only reliable way to get a raise!) and generally will care fuck-all about training and career development.

      Master-apprentice is a system based on a huge amount of institutional trust: Will I have a job tomorrow? Will I advance if I do well? Will it pay for me to keep doing this job? Is it worth it for me to get better at this job? It's fashionable in recent times to see all of these questions as strictly individual issues that no one but the employee has to think about, and people behave accordingly.

      --
      Don't blame me, I voted for Baltar.
    27. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      ? Maybe your problem is a misunderstanding of the word "agile"?

    28. Re:Maybe this is a generational thing... by tool462 · · Score: 4, Funny

      My farts implement an abstract flower class. You can use any number of decorator "Petal" classes to configure to taste. I work well with people who like roses, tulips, chrysanthemums and many more.

    29. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      Rotting roses, but roses nonetheless

    30. Re:Maybe this is a generational thing... by hobb0001 · · Score: 1

      I suppose you can't charge $xxx/hr as a consultant or book author merely by telling the boss to set up something like a medieval blacksmithing guild, gotta come up with some new twist on the old story.

      Actually, writing about such an approach would likely sell like hot-cakes. Repackaging an old idea in new marketing is an age-old formula that works surprisingly well. (See recent references to Caveman diet) Plus, the time is ripe for the next fad to replace pair-programming.

    31. Re:Maybe this is a generational thing... by Phasma+Felis · · Score: 1

      I suspect it's no more than the fact that humans get less interested in trying new approaches as we get older.

    32. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      There might not be much work done if you form a train. It might make for a long lunch break. Someone can explain what a shift-register is.

      http://www.urbandictionary.com/define.php?term=Train&defid=6216094

      Are you sure it is UNIX they want you to work with, and not Eunuchs?

      https://en.wikipedia.org/wiki/Eunuchs

    33. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      pairs shouldn't be that different in skill levels. My experience with pair programming is that it works very well when a task has to be done quickly and neither programmer is familiar enough with the problem to rip through it alone. Filling in knowledge gaps, discussing options, instant review of solutions can be very helpful between peers.

    34. Re:Maybe this is a generational thing... by slim · · Score: 2

      Pair programming is a subset of Extreme Programming.

      XP takes in Test-Driven development, Continuous Integration, Refactoring, and all sorts of other things.

      Most of what was called "Extreme Programming" is pretty mainstream now. Perhaps pair programming will be as mainstream as TDD and CI one of these days?

    35. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      Totally agree.
      Look at how when only rich people flew (big part because the flights were expensive, because companies were the ones paying, etc) that they catered to the customer.
      Or when only rich people drove, the roads that did exist were pretty much barren. Old pics of rt 1 in Philadelphia exist where theres hardly any cars utilizing the capacity - now today, it's packed with cars. Cars that have more people driving because women are working, or taking their kids to eat at Lebec Fin, because the trucking industry is killing trains etc.

      I dont want to sound like a whiney old geezer, but really, do programmers NEED a cs degree (the answer is no; a doctor needs a license to practice, you dont need a license to code). In time, MBA's will hire any coder, but for now, the industry standard is a degree, preferably in CS, and probably at some point interviewed by a senior programmer, who probably also has a degree in CS. Since this senior likely has a degree, they will keep this standard up. However, after a couple wannabe internet millionaires start hiring anything they can get for cheap, they may likey say who needs a CS degree and the cost associated, who needs to outsource and get the bad rap from it - we can downsource!

      "Downsource" copyright 2012 Anonymous Coward

    36. Re:Maybe this is a generational thing... by gbjbaanb · · Score: 1

      Dogbert says "lets me teach you how to do pair programming that will improve productivity by 150% over a single programmer".. followed by "let me teach you how to make each programmer working alone increase developer productivity by 133%".

      you can work out the maths to see what I actually did there, but it'll cost you $1000 per day for at least 3 months consultancy :)

    37. Re:Maybe this is a generational thing... by CodeHxr · · Score: 1

      This is very accurate in my experience. We try to keep our pairs Sr./Jr. for exactly this reason.

    38. Re:Maybe this is a generational thing... by jythie · · Score: 1

      I have very mixed feelings on the 'do programmers need a degree' thing. Setting aside the problem that a degree does not mean they actually learned anything..... I have known some fantastically bright programmers who were self taught and they can put out some fantastic finished products... but I keep finding them a headache to work with since they keep having to reinvent things that were solved decades ago (simple lack of knowledge) and often have trouble writing things in such a way that other programmers can work with it, leaving maintenance nightmares.

    39. Re:Maybe this is a generational thing... by Stele · · Score: 2

      I really enjoy being paired with girls. You're missing out.

    40. Re:Maybe this is a generational thing... by HornWumpus · · Score: 2

      Damn, those farts must stink!

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    41. Re:Maybe this is a generational thing... by mooingyak · · Score: 1

      My farts smell like roses.

      Rose's what?

      Like Rose's farts. Duh. You can't tell them apart.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    42. Re:Maybe this is a generational thing... by ebh · · Score: 1

      No, I understand Agile perfectly well, TYVM. But like all the Next Big Things we've seen over the decades, too many people think it's a one-size-fits-all panacea, and force it on all projects everywhere and forevermore, instead of smartly taking advantage of the parts of it that work for the actual task at hand.

      Like any methodology, imagine it being applied to the software running in your grandmother's heart monitor, or the flight software in your son's fighter jet, or any other application where if the software crashes, people you care about will die. No methodology popularized in the last 40 years can pass that test without some sort of modification and customization, including disregarding one or more of its basic principles.

      And regardless of the merits of the methodology itself, I still maintain that "scrum" is a stupid word choice. At least Kanban ("signboard") evokes an image of communication.

    43. Re:Maybe this is a generational thing... by AwesomeMcgee · · Score: 2

      He thinks agile means scrum... So many people never actually research the important parts of their industry enough to have any idea what they're talking about. It's like people get out of college and assume they now have all the knowledge they need and are permanently done looking for new information.

    44. Re:Maybe this is a generational thing... by ebh · · Score: 1

      No, I don't. Not getting religion on Agile, and not liking the word "scrum" are two different things. It's like whether you think structured programming is a good thing versus liking the Pascal programming language.

      You might want to stop assuming that everyone you disagree with is some naive kid right (or not yet) out of college. Some of us have seen these fads come and go time and again. Every one of them claims to be the new One True Way to make software suck less. Each contributes a bit, but not nearly as much as its true believers think.

    45. Re:Maybe this is a generational thing... by AwesomeMcgee · · Score: 1

      I'm no true believer, but the generation a developer comes from I've found to be a key indicator as to whether they quit learning after college or not. I was presuming you were of the older generation where this behavior was prevalent. The newer generation has to fight tooth and nail for our jobs as their world is different than the one you exited college to find, so we know full well we must continue learning and researching. Committing to this constant learning you would know Agile and Scrum are 2 separate things, though your comments made clear you think them to be the same. Keep calling everything a fad to avoid studying anything from the past 2 decades, it's ok, you can just claim age bias when no one hires you in the future.

    46. Re:Maybe this is a generational thing... by damien_kane · · Score: 1

      i don't need to smell your farts

      Your head should be next to his head. Not near his ass (because then he will smell your farts too, and one of you would have his hands under the keyboard...).

      What if he's got his head up his ass?
      Your head would then definitely be near-to his ass.

    47. Re:Maybe this is a generational thing... by ebh · · Score: 2

      I know Agile and Scrum are not the same things.

      And WTF makes you think we had the luxury of walking out of college thinking we had all the knowledge we'd ever need? Things changed as fast then as they do now. New technologies emerged just as often, and we had to keep up with them just like everyone has to today. You have to fight tooth and nail for your job? Oh, cry me a river. I was dodging downsizing and offshoring while you were still swimming around in your father's balls. You know how I did it? The same way you do, by keeping up with technology and being able to provide what my employers need.

      But there's more to it than chasing after this week's hot new acronym. At some point you won't be able to make it as a code monkey or even a designer. That's all going to be done by drones who work for fifty cents an hour an no bathroom breaks. If you want to stay technical throughout your career and not take the easy PHB route, you're going to have to pick something your employers will NEVER be able to live without, and be the best at it on the planet. Hint: That job title won't be "web designer" or "data modeler" or, God forbid, "Agilist".

      In my case, I design and build development labs, both hardware and software. I start with an empty room, and put together the infrastructure you use to do your job, whatever that is. I may not have to know every last detail of every new technology that comes out, but I have to be able to build you a lab that takes full advantage of whatever technology you say you need. And I have to keep that lab secure, and make sure nothing in it crashes. As long as there's software development, there's going to be a need for what I do.

      Can you say the same thing about what you're doing right now?

    48. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      Ask the folks over at Research In Motion Limited (RIM)

    49. Re:Maybe this is a generational thing... by Darinbob · · Score: 1

      Master/apprentice is also not "spend every working minute with your cubicle spouse" either. Pair programming means spending most of the day with the other person staring at the same screen. Master/apprentice usually has the apprentice spend time alone working on part of a project but with frequent feedback. Meantime when the master is helping the apprentice the master is not getting work done. Where it works as a team is when the apprentice can be left alone to do smaller/simpler parts of a project simultaneously with the master doing other parts (apprentice mixes pigments, master is sketching, etc).

      In the past I've had occasions to spend an hour talking with someone over a problem with no answer, and then after 5 minutes alone when I can look at code and browse w/o someone else I've got the answer. Problem is I've got most of my brain shut off when I'm talking with someone else, I can't just let thoughts go free range but instead have to stop and focus on only one thing at a time. Now there are times when this is nice, such as discussing what an API should be. But othertimes people just need to be free of distractions. Young or old.

    50. Re:Maybe this is a generational thing... by Darinbob · · Score: 1

      I've had headaches with electrical engineers and such at times as entry level programmer engineers because they lack some basic programming essentials While I dislike trade school mentalities sometimes you need to know some basics too. From the opposite side though sometimes you get people who know all the syntax and semantics but don't have a clue about basic algorithms or complexity.

      There's one important thing that programmers should know and that's abstraction. This is something very hard to learn on your own from a book, but it does get picked up more naturally when you have to take all those classes that students think are pointless and will never be used on the job. The problem with being self taught is that most people don't have the discipline to learn the boring stuff, the hard stuff, or stuff that they think is irrelevant. Wax on. Wax off. Wax on. Wax off.

    51. Re:Maybe this is a generational thing... by Darinbob · · Score: 1

      I just hold my farts in until the other person leaves. The longer they stay the more uncomfortable I become.

    52. Re:Maybe this is a generational thing... by Grishnakh · · Score: 1

      That's exactly what I'm thinking, especially with this new "brogrammer" crap that seems to have become the norm lately.

    53. Re:Maybe this is a generational thing... by damien_kane · · Score: 1

      (I also haven't gotten religion on Agile. Who's the genius that thought a word representing a bunch of sweaty grunting guys pushing against each other in the mud, expending tons of energy and going nowhere was supposed to make me think of increased nimbleness and productivity?)

      ? Maybe your problem is a misunderstanding of the word "agile"?

      No, I understand Agile perfectly well, TYVM.

      agile/ajl/
      Adjective:
      Able to move quickly and easily: "as agile as a monkey"; "an agile mind".
      Synonyms:
      nimble - quick - spry - brisk - nippy - alert - lissom

      Hardly "a word representing a bunch of sweaty grunting guys pushing against each other in the mud, expending tons of energy and going nowhere"

    54. Re:Maybe this is a generational thing... by Hognoxious · · Score: 1

      Well I'm about ten years older than I was when I first heard of pair programming.

      Shit, this is news?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    55. Re:Maybe this is a generational thing... by Grishnakh · · Score: 1

      This makes sense to me. The "brogrammers" we hear about now aren't poorly-socialized introverts, they're extroverts, with bad behavior, so women don't want to be around that, understandably. When it was dominated by nerdy introverts, (some) women were just fine with that, because even though the men were socially awkward, they weren't outright misogynistic, like the "brogrammers" are.

      I miss the 80s and 90s....

    56. Re:Maybe this is a generational thing... by ebh · · Score: 1

      No, that's "scrum".

      Agile != Scrum.

      But thanks for the condescension. It's what I live for.

    57. Re:Maybe this is a generational thing... by Have+Brain+Will+Rent · · Score: 2

      "I have gathered that today's culture is slowly trying to push out the personality types that were common 20 years ago."

      I didn't realize "competent" was a personality type but sure, makes sense.

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    58. Re:Maybe this is a generational thing... by fm6 · · Score: 1

      I first learned to program 40 years ago, and the lone-wolf mentality of programmers was obvious to me from day one. I think it mostly had to do with computers still being alien to most people, and organizations tolerating antisocial behavior in their programmers because there weren't that many to choose from.

      Nowadays almost everybody grows up with access to computers, often from before they've learned talk. (I'm damned jealous of that!) Now a computer is nothing special, and you probably learned to use it in a social setting, as opposed to hiding in your bedroom with a PC (which was the norm 20 years ago) or sneaking off to the computer center at 2 am so you could get fast turnaround on batch jobs (which is how I learned).

    59. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      You realise that this will happen in any profession?

    60. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      Research has shown that novice/novice pais are slightly more productive, but novice/expert pairs are less productive and expert/expert pairs are much less productive.

    61. Re:Maybe this is a generational thing... by coinreturn · · Score: 1

      My farts implement an abstract flower class. You can use any number of decorator "Petal" classes to configure to smell. I work well with people who like roses, tulips, chrysanthemums and many more.

      FTFY

    62. Re:Maybe this is a generational thing... by jythie · · Score: 1

      I am not sure they were less misogynistic, they could be really bad actually. However, they were quieter about it since they were more likely to keep to themselves.

    63. Re:Maybe this is a generational thing... by Anonymous Coward · · Score: 0

      It seems you do indeed live for condescension, since writing a post which very clearly implied you think "Agile" means "hairy sweaty people pushing each other around" is a great way to invite lots of it.

      (hint: your OP does not contain the word "scrum")

  3. A Deepness in the Sky by vylasaven · · Score: 1, Offtopic

    ...if anyone is a sf fan here, there's an effect called Focus. It's when a human being is infected with a mind virus that allows for blah blah blah. Anyway, the users inevitably retreat to jargon in pairs or groups because they are in the process of doing things which have never been done before, so they invent tons of new terms on the spot, and occasionally grunt, hoot, and fight each other. It requires handlers, often, to get any use out of the people. This reminded me of that.

    1. Re:A Deepness in the Sky by ArsenneLupin · · Score: 0

      But whatever you do, please use a condom! And don't groan too loudly if you "work" in an open office!

    2. Re:A Deepness in the Sky by Anonymous Coward · · Score: 0

      Don't flatter yourself. It wasn't that thoughtful.

  4. Facebook Mobile Apps by Kadagan+AU · · Score: 3, Insightful

    If the Facebook team is using pair programming for their mobile apps (on all platforms!), maybe they should try something more traditional because it's not working! They have so many bugs and glitches in the IOS, Android (tablet), and Blackberry apps that they definitely need to try a new approach! Maybe if they TESTED them before releasing, they'd have better results?

    --
    This space for rent, inquire within.
    1. Re:Facebook Mobile Apps by alphax45 · · Score: 2

      RIM makes the BlackBerry app; not Facebook. Same as Twitter. Might change with BB10 but right now Facebook and Twitter don't see value in making apps for Blackberry, so RIM does it themselves.

      --
      K Man
    2. Re:Facebook Mobile Apps by O('_')O_Bush · · Score: 1

      Their Graph API seems alright.

      --
      while(1) attack(People.Sandy);
    3. Re:Facebook Mobile Apps by travisco_nabisco · · Score: 1

      Maybe they should get Microsoft to write them the mobile Apps. I haven't had any major problems with the WP7 Facebook App.

    4. Re:Facebook Mobile Apps by fm6 · · Score: 1

      If Facebook apps are glitchy (I'm an old antisocial type who doesn't get the whole Facebook thing), then their programming methodology is kind of beside the point. The best programmers screw up. That's what QA is for. Assuming they have it. Is it passe these days?

  5. Pair or 1 + 0.3? by Anonymous Coward · · Score: 2, Informative

    All the time i did pair programming it was me doing all the work and the other guy just pointing silly stuff like "missing ;"

    1. Re:Pair or 1 + 0.3? by Anonymous Coward · · Score: 5, Funny

      PRO-TIP: the other guy was the compiler.

    2. Re:Pair or 1 + 0.3? by Anonymous Coward · · Score: 0

      All the time i did pair programming it was me doing all the work and the other guy just pointing silly stuff like "missing ;"

      You're supposed to switch off. One person watches while another types, but two hours later, they switch roles.

    3. Re:Pair or 1 + 0.3? by Anonymous Coward · · Score: 2, Funny

      Then the first guy is still the one programming, and the other guy is trying to type what the first tells him.

    4. Re:Pair or 1 + 0.3? by Hentes · · Score: 2

      Exactly, a good IDE can do the same job without annoying the hell out of the coder.

    5. Re:Pair or 1 + 0.3? by Anonymous Coward · · Score: 0

      I once spent several hours trying to figure out why I wasn't getting the correct output from a PHP script. Asked a coworker to take a look and he immediately pointed out the semicolon at the end of a while statement. Didn't cause any errors, just incorrect output.

    6. Re:Pair or 1 + 0.3? by NoNonAlphaCharsHere · · Score: 1

      I've never seen an IDE that didn't annoy the hell out of the coders.

    7. Re:Pair or 1 + 0.3? by Shagg · · Score: 2

      vi

      --
      Unix is user friendly, it's just selective about who its friends are.
    8. Re:Pair or 1 + 0.3? by gbjbaanb · · Score: 1

      funny, last time I did pair programming I looked up from the newspaper I was reading now and then to helpfully point out my colleague had missed a semicolon.

    9. Re:Pair or 1 + 0.3? by Anonymous Coward · · Score: 0

      that one doesn't come with it's own OS

    10. Re:Pair or 1 + 0.3? by Anonymous Coward · · Score: 0

      Not an IDE, so just a DE

  6. yeah, I don't think so by macbeth66 · · Score: 3, Funny

    I can't think of ANY one that I want to spend that much time around.

    My wife can't code, but I would not want to spend that much time with her either.

    Now, maybe my girlfriend. But I don't htink we would get much coding done. Besides, she can't code and I don't care.

    1. Re:yeah, I don't think so by slim · · Score: 1

      Well, that's fine and all; you're a Myers-Briggs type "I" for "introvert". But other people are type "E" for "Extrovert", and are at their best when collaborating face-to-face with someone else.

      Perhaps traditionally the "I"s were just absent from programming. But increasingly the profession is attracting people who thrive on teamwork, and *like* interacting with people.

      In any case, we're not talking about solid 12 hour hackathons as pairs. We're talking, say, 4 hours out of a day, with breaks. And ideally you'd be rotating pair partners regularly.

      I'd like to do a lot more pair programming. A big barrier for us is that our furniture isn't amenable to it. Dev shops that take pairing seriously set up pairing workstations specifically for the purpose.

    2. Re:yeah, I don't think so by dkleinsc · · Score: 1

      Well, that's fine and all; you're a Myers-Briggs type "I" for "introvert".

      He can't be *that* introverted, if he's having to decide between his wife and his girlfriend.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    3. Re:yeah, I don't think so by clintp · · Score: 2

      Perhaps traditionally the "I"s were just absent from programming.

      I can't cite anything (other than 30 years of programming) but I believe this to be wrong. My elders in this field were all introverts.

      In any case, we're not talking about solid 12 hour hackathons as pairs. We're talking, say, 4 hours out of a day, with breaks. And ideally you'd be rotating pair partners regularly.

      I'm an introvert. This isn't a disease, something to be cured, medicated, or dealt with. It's the way I am. Even for "4 hours out of a day, with breaks" this is bad. Rotating partners regularly makes this much, much worse.

      For us true introverts 4 hours with another person can be a taxing, grueling experience by itself no matter how pleasant a person he or she is. And you'd like us to think clearly and rationally while making us endure something that we're truly averse to? I wouldn't go as far as to say it creates a hostile work environment, but it's damned close.

      Recommended reading for extroverts that just Don't Get It, or introverts that are tired of taking this kind of shit quietly: Quiet: The Power of Introverts in a World That Can't Stop Talking by Susan Cain.

      --
      Get off my lawn.
    4. Re:yeah, I don't think so by Anonymous Coward · · Score: 0

      Well, that's fine and all; you're a Myers-Briggs type "I" for "introvert".

      He can't be *that* introverted, if he's having to decide between his wife and his girlfriend.

      Some of us introverts do quite well. We just don't talk about it with you, natch.

    5. Re:yeah, I don't think so by slim · · Score: 1

      That was a typo -- I meant "perhaps traditionally the "E"s were just absent from programming". For a long while computing attracted introverts because you can spend hours in the company of nothing but a keyboard.

      I don't think anybody says introversion is a disease. Neither is being an extrovert. Myers-Briggs is all about recognising these tendencies (they are not absolutes) and using that knowledge to get the best out of people.

      Not only do Es need to understand you -- you need to understand Es. It's a two way street. Give and take.

    6. Re:yeah, I don't think so by clintp · · Score: 1

      That was a typo -- I meant "perhaps traditionally the "E"s were just absent from programming"

      I thought that might have happened. Thanks for clearing it up. :)

      I don't think anybody says introversion is a disease. Neither is being an extrovert. Myers-Briggs is all about recognising these tendencies (they are not absolutes) and using that knowledge to get the best out of people.

      Not only do Es need to understand you -- you need to understand Es. It's a two way street. Give and take.

      I think that a lot of people treat introversion as a disease. It hides under labels like "socialization disorder" or "social anxiety disorders". Consider that being a perfectly normal introvert will get you several points towards an autism diagnosis.

      It's not quite a two way street. Extroverts have no problems standing up for themselves, declaring what they want, and explaining to management how the world should work: in an extroverted way, of course, with large meetings, pair programming, open cubicles, in-person code reviews, and traditional group training. Introverts will have to wait until after calming down after the meeting to consider the proposals, and write a considered memo stating that maybe these things really aren't for everyone.

      --
      Get off my lawn.
    7. Re:yeah, I don't think so by Grishnakh · · Score: 1

      CS/computers used to be a haven for introverts to use their talents and have a well-paying job where they didn't have to interact with others too much. Now that the extroverted "brogrammers" are taking over the field, I wonder where all the young introverts are going now?

  7. Two to rectango by Impy+the+Impiuos+Imp · · Score: 2

    >and are less likely to waste time surfing the Web

    You obviously haven't heard of the phenomenon of "pair surfing".

    --
    (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    1. Re:Two to rectango by Anonymous Coward · · Score: 0

      Or chit-chatting. What happens to people who are actually disciplined enough to work while at work?

    2. Re:Two to rectango by cellocgw · · Score: 1

      You obviously haven't heard of the phenomenon of "pair surfing".
      No, but I'm rather familiar with the term "pair production" (hint: quantum mechanics).

      --
      https://app.box.com/WitthoftResume Code: https://github.com/cellocgw
    3. Re:Two to rectango by Anonymous Coward · · Score: 0

      Yes, I have!

      When I am back in the old-age home, we sit down in pairs with one person driving the thing with buttons and a tail and the other person points where to move the cursor thingy on the screen and push the button.

  8. Math fail by wonkey_monkey · · Score: 1

    Two-by-two is four, duh.

    --
    systemd is Roko's Basilisk.
    1. Re:Math fail by Anonymous Coward · · Score: 0

      Well, if I divide two by two, I get one. :-)

  9. Kent Beck, Facebook programmer by Barandis · · Score: 5, Insightful

    I know it's just a summary and all, but it makes me feel vaguely sad that out of all of the things you can say about him, Kent Beck is tagged as a "Facebook programmer."

    1. Re:Kent Beck, Facebook programmer by Anonymous Coward · · Score: 0

      This is Jesus, Kent. Stop touching yourself.

    2. Re:Kent Beck, Facebook programmer by CodeHxr · · Score: 1

      +1 Pro-reference

  10. XP again by gl4ss · · Score: 2, Interesting

    so it's eXXXXXTreeme programming again?
    couldn't they at least fucking re-use the term.

    oh and it's not so bad for some small crunch period.. but for longer periods it really shits on my slashdot browsing habit.

    am I now officially old? since they tried selling us this XP shit back before I dropped out of uni.

    --
    world was created 5 seconds before this post as it is.
    1. Re:XP again by Bill_the_Engineer · · Score: 2

      Pair programming is a subset of extreme programming. Extreme programming deservedly fell out of favor at the end of the 1990's.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    2. Re:XP again by Anonymous Coward · · Score: 0

      Yeah, damn them for using the correct term rather than some dumb sounding XMTREMEMW!~!1!! buzzword.

      Idiot.

    3. Re:XP again by geekoid · · Score: 2

      And that's a shame, because it worked extremely well. I was on a team the produced a lot of code, and when delivered, there was 1(one) bug reported. 450,000 lines of code, one bug.

      It's down side is it take management buy in on the customer side.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    4. Re:XP again by squiggleslash · · Score: 1, Troll

      Reposted from years ago, my experience of Exxxxxxxxxxxxxxtreme programming!

      The team was divided into pairs. One programmer programmed. The other's job was to look for mistakes, and then yell at the first for making the error. If the error was severe enough, he would announce it on the loudspeaker. What constituted an error was never clearly defined. Sometimes it was a logic error, or a typo, but other times it was allowing code to be too flexible and too open for future expansion, even when that was the best way to write something anyway. I got in trouble for writing a FOR loop with a named constant as one of the limits. "Named constants", it was explained to me, "mean you're looking at solving tomorrow's problems, not today's. Your code just needs to work for today. If the program can only support 100 simultaneous connections, write 100, not MAX_CONNECTIONS"

      --
      You are not alone. This is not normal. None of this is normal.
    5. Re:XP again by gl4ss · · Score: 1

      Yeah, damn them for using the correct term rather than some dumb sounding XMTREMEMW!~!1!! buzzword.

      Idiot.

      the stupid term was used because it was an OLD fad even back then, you son-of-a-bitch anon dweeb.

      point being, it's not new, it's obvious for some problems - and another point being that fb's mobile clients in general aren't really anything to write home about considering the budget vs. results.

      --
      world was created 5 seconds before this post as it is.
    6. Re:XP again by Anonymous Coward · · Score: 0

      But it was YOUR job to contest your workplaces current standards as they suck.

    7. Re:XP again by Anonymous Coward · · Score: 0

      No one said it was new you son of a bitch non-anon dweeb.

    8. Re:XP again by Anonymous Coward · · Score: 0

      The age of Binars is upon us. Embrace!

    9. Re:XP again by Anonymous Coward · · Score: 0

      XP fails when the coding is outsourced, however. I recall an application project where development was outsourced to an India developer, and senior developers reviewing the code found global variables and object oriented structure to much of the code. They became concerned they might have to rewrite much of the code.

      Oh, and XP has a main flaw in that it tries so hard not to be the tried and true waterfall method, many want to move forward with new features even with bugs in the previous iteration.

    10. Re:XP again by Anonymous Coward · · Score: 0

      I meant non-object oriented.

    11. Re:XP again by slim · · Score: 1

      Oh, and XP has a main flaw in that it tries so hard not to be the tried and true waterfall method,

      Tried, yes. True? Not so much.

      Even the guy who coined the word "waterfall" for software development could tell it was a bad process.

    12. Re:XP again by Anonymous Coward · · Score: 0

      Sounds like your users probably never reported bugs, or you're lying.

  11. less pair-programming chain gangs by Anonymous Coward · · Score: 4, Insightful
    1. Re:less pair-programming chain gangs by CodeHxr · · Score: 1

      That made me laugh, so I bought one of their shirts. It wasn't optimized at all, though, so I can't wear it to work.

    2. Re:less pair-programming chain gangs by xski · · Score: 1
      I've just found a new link for my resume.

      Bless you, sir.

  12. It's also good... by Anonymous Coward · · Score: 0

    ...for upgrading holodecks and stealing starships.
    http://www.imdb.com/title/tt0708668/

  13. Explains a lot by Bill_the_Engineer · · Score: 1

    Can we attribute the less then stellar applications coming from these two firms to the pair programming paradigm?

    I'm sure there are better examples to use besides these two.

    --
    These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    1. Re:Explains a lot by thePowerOfGrayskull · · Score: 1

      There's a place for it, though I can't recommend it full-time.

      I've mostly found it useful when learning my way through new code bases - I could work under guidance of someone who already knows what he's doing. Similarly, when training someone with less experience, it's been very helpful to initially run things myself, then gradually hand over control over a paired tmux session. Even now I frequently let a coworker who has significantly less experience attach to my tmux session at any time, just to see what I'm doing and how I'm doing it.

      But as a full-time method of programming? Or even via physically sharing the same personal space? I would go insane.

      ('course what they did at my old employer was even worse. Any time they had a cube that was larger than 4 square feet, they would stuff a second programmer in it. Often these programmers weren't even working on the same projects. Current contacts tell me it's actually getting worse as they remove any sense of privacy by installing low-walled mini cubes across the entire work area. But I digress.)

    2. Re:Explains a lot by Bill_the_Engineer · · Score: 1

      I agree.

      Maybe the turnover rate is so high that they have to mitigate it with pair programming.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
  14. Halfway there! by zachie · · Score: 1

    Now we only need to convince more females to study comp sci.

    1. Re:Halfway there! by Anonymous Coward · · Score: 0

      Hear hear!

    2. Re:Halfway there! by HornWumpus · · Score: 1

      This will have the opposite affect. Or it would if it was more then just some PHB blowing hot air.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  15. do not want by YrWrstNtmr · · Score: 2

    If my boss sees this, and pairs me up with L.....before day one is out there will be two fewer programmers. One dead, and me in jail.

    1. Re:do not want by geekoid · · Score: 1

      Yes, it is no good because you are an anti social twit.
      Did you consider the at may be YOU are the problem?

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    2. Re:do not want by the+eric+conspiracy · · Score: 1

      He suffers from the social equivalent of the Dunningâ"Kruger effect.

    3. Re:do not want by YrWrstNtmr · · Score: 1

      You may think that. OTOH, you have not had to listen to his continual bitching at trivial problems all day long.
      Did you ever consider that sometimes, two people just do not get along?

  16. Fire by 2? by Anonymous Coward · · Score: 0

    So does that mean when you fire someone you will be firing two people?

  17. Back in the old days... by YodaSensei · · Score: 3, Informative

    We used to call that eXtreme Programming: that was the rage a while ago, then went out of fashion in favour of other agile development methods. But that happened a lifetime ago (the early 2000s :p ), and computer fashion have changed more times than I can really keep track.

    I guess that the people who were actually programming 10 years ago are now managers, gurus or architects and want to bring back their happy childhood memories (id est, programming with their buddy) back to reality, imposing it on the newer generations.

    1. Re:Back in the old days... by Surt · · Score: 1

      As is getting pointed out all over the place, XP is more than just PP.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    2. Re:Back in the old days... by Anonymous Coward · · Score: 0

      The early 2000s are the old days? We were programming in pairs during the late 1970s and early 1980s. It did not need a fancy name back then.

  18. Worth trying by Divide+By+Zero · · Score: 5, Interesting
    Everybody poo-poos it, I'm a better coder on my own, the other guy's wasting time, etc. But I tried it and I was never a better coder than when I was working in a pair. You'd get all the "missing semicolon" stuff that everybody talks about, which isn't exactly a waste, but you also have two brains deeply enmeshed in the code and data structures, so you can blend the best of two styles of programming. Sometimes I'd write a braindead construct and the other guy would simplify it, and sometimes he'd create this god-awful structure and I'd clean it up. But you can bounce ideas off another programmer without having to explain the function, show him the code, let him get his head wrapped around it, all that. It's not all grunting and pointing, sometimes it's, "Dude, use a switch/case" or "Just use the library function."

    It's not for everybody - nothing is - but it's definitely worth trying with an honest effort.

    --
    Dare to Hope. Prepare to be Disappointed.
    1. Re:Worth trying by Anonymous Coward · · Score: 0

      "Dude, use a switch/case" or "Just use the library function."

      If you're still making those decisions at coding time... you're doing it incorrectly.

    2. Re:Worth trying by Anonymous Coward · · Score: 0

      This is exactly how it's supposed to work. I guess the people poo-pooing it either had really horrible colleagues or may possibly be located in a culture/environment where you are not allowed to make a mistake, or asking a question is a sign of weakness. In those environments pair programming is doomed to fail because it will turn into a contest.

      I sometimes wonder whether management should bring in anthropologists before switching to pair programming or agile development methods. Some people and outfits just aren't suited for it.

    3. Re:Worth trying by Immerman · · Score: 1

      If you're *not* making some such decisions at coding time then you've been reduced to a sentient design-document compiler. Good luck keeping any decent, creative programmer in such a job.

      --
      --- Most topics have many sides worth arguing, allow me to take one opposite you.
    4. Re:Worth trying by thePowerOfGrayskull · · Score: 1

      "Dude, use a switch/case" or "Just use the library function."

      If you're still making those decisions at coding time... you're doing it incorrectly.

      If you're making all of those decisions at design time, you're a Java programmer.

    5. Re:Worth trying by Surt · · Score: 1

      If you can make those decisions at design time, it's time to write a code generator.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    6. Re:Worth trying by Divide+By+Zero · · Score: 1

      Your design documents specify which control structures you should use?? I want to come work with YOU. Additionally, I was in college when I was pair programming. Of COURSE I was doing it incorrectly.

      --
      Dare to Hope. Prepare to be Disappointed.
    7. Re:Worth trying by Anonymous Coward · · Score: 0

      Missing semicolns?

      Perhaps you should adopt an integrated development environment with error detection and auto completion.

  19. Maybe its an experience thing ... by perpenso · · Score: 4, Interesting

    But most of the elder wizards of the programming community (at least the ones I know) tend to shy away from the pair programming mentality. Younger folks (especially people in their 20s) don't seem to mind as much. I wonder if this has something to do with the nature of the people who went into programming 20 years ago (compared to today), or what...?

    Or it has something to do with experience. The elder programmers have seen many programming fads come and go, many claims for the "one true way" to greater efficiency and reducing bugs. Like most fad/pop things, pair programming probably worked in a specific environment, with specific people doing a specific type of task ... but is probably not a universal solution. It is merely hyped as such by the "training" industry, book sellers, etc.

    Elders may realize when working in pairs will help and when it will not. I've seen plenty of instances when elders call in a peer for an hour or two for a particular bit of code and then part when returning to the more mundane parts of the code. Or ask a peer to review a bit of code they just wrote.

    1. Re:Maybe its an experience thing ... by pclminion · · Score: 4, Interesting

      The elder programmers have seen many programming fads come and go, many claims for the "one true way" to greater efficiency and reducing bugs. Like most fad/pop things, pair programming probably worked in a specific environment, with specific people doing a specific type of task ... but is probably not a universal solution.

      I have to disagree. At its most basic, pair programming is simply having somebody directly help you to accomplish a task, and also, observe your actions as you make them. The concept of using a helper is not a fad, trend, or technique. A better term for it would be "no brainer." The reason it sometimes fails is because of the personalities involved, and it's the same reason certain people can't work together doing ANYTHING (for instance, repairing a car).

      It's true that programming often requirements moments or even extended periods of intense, solitary concentration. Your partner just has to know when to shut up. Even with compatible personalities it still takes practice.

      But really, it's just two humans working together on something, which is not a "fad."

    2. Re:Maybe its an experience thing ... by Anonymous Coward · · Score: 0

      This.
      We all do pair programming from time to time. We say to someone come over and help me with this and it's very productive. But as something to do all the time... well, no, it's a disasterous way to work that will guarentee burnout very quickly.

    3. Re:Maybe its an experience thing ... by Anonymous Coward · · Score: 1

      More precisely, it's two humans working together on the exact... same... thing. It doesn't take an MBA to know how inefficient that is. No amount of reduction in bugs could cover the cost in salary that takes (presuming there's an actual reduction). That's the cold, hard truth.

      Learning how to program means experimentation and failure. Pair programming perpetuates the insipid idea that it's possible to do something right the first time around. That's a vicious lie. Not even mathematicians get it right the first time around. No amount of investment in time or human capital will allow you to execute a solution to a problem correctly the first time, or even second time.

      I tell all the junior programmers to experiment with ideas and code. When you hit on a pattern that works several times in a row, then use it for real production code. But that idea is the antithesis of the purpose of pair programming.

      Google has the better idea with 20% time. And that's the difference between Facebook and Google---junior engineers chasing a mirage, versus veterans.

    4. Re:Maybe its an experience thing ... by pclminion · · Score: 1

      Pair programming perpetuates the insipid idea that it's possible to do something right the first time around.

      No, pair programming posits that it is possible to do something better the first time around.

      Even if one partner does absolutely nothing but LOOK at the code the other partner is writing, it is the equivalent of a code review by a peer. The effort is not wasted, unless you suck at doing it.

    5. Re:Maybe its an experience thing ... by perpenso · · Score: 1

      The concept of using a helper is not a fad, trend, or technique. A better term for it would be "no brainer."

      You misunderstand. The "elders" use helpers but they may only do so when it is actually productive to do so. We have two options. (1) Use experience and judgement to decide which tasks need more than one person. (2) Have an absolute rule where two people are assigned to all tasks. Case (2) sounds more like "no brain" rather than "no brainer".

      Secondly. From a code review point of view it may be best to have the coding and reviewing done independently. Even when there are only two people there is still an opportunity for group think.

    6. Re:Maybe its an experience thing ... by perpenso · · Score: 1

      Even if one partner does absolutely nothing but LOOK at the code the other partner is writing, it is the equivalent of a code review by a peer.

      It is not equivalent. Two people working together in real time are more subject to group think than when a second person does an independent review after the first person finishes coding. Plus as another poster points out, the code review is taking much more time than it would otherwise.

    7. Re:Maybe its an experience thing ... by Anonymous Coward · · Score: 0

      Totally agree. There is this lone ranger mentality that has become so ingrained in some that they can only see the downsides and can't work towards the benefits.

    8. Re:Maybe its an experience thing ... by Anonymous Coward · · Score: 0

      If it were just two people working on something together, there wouldn't be a slashdot article espousing the benefits of "pair programming."

      If it weren't a fad, it wouldn't have a fancy buzz-word-like name.

      Pair programming? Really?

      I agree with you, it's nothing new. They're selling it like it is, though. That's the fad. That's what we, the elders, have seen come and go.

  20. What has been seen cannot be unseen. by The+Altruist · · Score: 1

    Why, Internet? Why?

  21. Works in one out of three cases. by Anonymous Coward · · Score: 0

    Case 1) One programmer is better than the other. The better programmer does all of the work, regardless of who's typing. The better programmer feels frustrated and slowed down, and the worse programmer feels worthless. Eventually, the better programmer does all of the typing, and the other is simply acting as a very inefficient code review. It's much better to have senior programmers work separately and do code reviews.

    Case 2) Two junior/poor programmers. Neither of them is good enough to handle any really tricky stuff. This combo works okay for basic code, but still fails at difficult tasks. To get decent code, it still needs to be reviewed by a senior programmer.

    Case 3) Two mid-level programmers who are at roughly the same level. Pair programming works okay in this scenario, but no better than having the programmers work separately and do code reviews.

    1. Re:Works in one out of three cases. by HornWumpus · · Score: 1

      It works in case1. If the Jr programmer wasn't doing nothing he would be doing negative work. You break up the pair when he has learned enough to be productive on his own. If he never gets there you fire him.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  22. Re:Not pair programming... by pixelpusher220 · · Score: 1

    So with pair programming, does the timeout for posting here get shortened?

    --
    People in cars cause accidents....accidents in cars cause people :-D
  23. Great for weak programmers by EmperorOfCanada · · Score: 1

    I love the idea of less web surfing. I have observed that paired programming is great for weak programmers. The sort who can sort of program but aren't really that good. Two of them together usually add up to one good programmer. Two good programmers often add up to a great programmer, but the great programmers often move quickly enough that there is little or no benefit to their pairing. Just sit them really near each other.

    Basically it seems that paired programming eliminates weaknesses rather than emphasizing strengths. It would be interesting to sit the genius but gaff prone programmer with the squarely center of the box but obsessively bug free programmer. If they didn't kill each other the pair might be a powerhouse.

    In less managed offices often a what would be an otherwise very good programmer sucks because of surfing, phoning, texting, being late, leaving early, lack of focus, or yacking. Pairing them up would shame them out of many of these behaviors.

    A wonderful side benefit from paired programming is that the programmers quickly each learn tricks from the other. But this works best if the pairs are periodically rotated. Also pairs are less likely to get stuck and spin their wheels on any given problem. Depending on the complexity and R&D involved this can be a huge win. But if the programming is simple and somewhat rote then there is little benefit. Another rarely sung benefit is that those poor lost programmers are less able to hide the fact that they are, in fact, totally lost.

    I don't think that pair programming is a panacea but a solution to some problems. The key is to identify if you have these problems in your work environment.

    1. Re:Great for weak programmers by gstoddart · · Score: 1

      The sort who can sort of program but aren't really that good. Two of them together usually add up to one good programmer. Two good programmers often add up to a great programmer, but the great programmers often move quickly enough that there is little or no benefit to their pairing. Just sit them really near each other.

      You have to work at it (and that implies being willing to), and I would agree that for every single task it might be a bit much.

      But, many years ago I worked with a team of other coders, and we worked together for quite a few years. We developed our own style where mostly people were heads down, but if you ran into a problem or a question, you just called out the name of the guy next to you and then scrummed. We'd sometimes pair code for specific things, often discuss what we were doing, do frequent code reviews and walk-throughs, and go to a whiteboard at the drop of a hat. Overall it created a good balance between getting out the main body of it, and making sure we understood all of the fiddly bits.

      Fast forward, and I don't write code so much any more. But on a project I was working on last year (a giant software upgrade with loads of machines, components, databases) we really needed to be sure it was Done Right Every Time. So, we basically adapted pair programming, and set it up so we had a plan, a checklist, and two people. someone was always verifying what was being done, and prompting for the next things. Admittedly, this started with two people who had been doing this kind of stuff for years and worked well together, but we brought in and trained up some new resources using the same thing.

      As we went on and I explained to people why I insisted on doing it that way, we ramped up the team so we could have two 8 hour shifts (we only had a 3 day weekend to do the actual go-live). By the time we were ready to do the final upgrade of the production environment, we did it smoothly, and actually in about only 80% of the projected time. The PMs were really pleased, and management was ecstatic.

      You're absolutely correct that it won't fix every problem you have, and doesn't help in every situation ... but it's just another thing in the list of how you can go about getting things done right, accurately, and with some certainty that it's been given as much neurons as it could.

      It's never a bad thing to know your options. I've had positive results in both writing code and system deployments. But I've also seen it done horribly bad, which didn't really improve anything, and in some cases, seems to have made it worse.

      In my experience, coders who like to do clever tricky things don't do well in this situation. But, in my experience those guys can also be a liability in writing code as they just want to bode up something which isn't maintainable, which which they think is 'cool'.

      Me, I find there's an awful lot of situations in which a second set of eyes (and another whole brain) can really improve outcomes.

      --
      Lost at C:>. Found at C.
  24. "Facebook programmer" Kent Beck? by Anonymous Coward · · Score: 1

    Kent Beck is well-known as one of the creators of Extreme Programming and TDD. He's an old Smalltalk expert and a design pattern advocate. He helped popularize CRC cards. He's co-authored books with guys like Erich Gamma and Martin Fowler. I had breakfast with him once at a ski resort back when he worked for Object Technology Int'l. =)

    Compared to the notable things he's done in the past, working for Facebook is barely a footnote.

  25. We're taking pair programming to the next level by ddd0004 · · Score: 3, Funny

    We have one big cube with one computer and we put all of the programmers in there. We call it the stable and the programmers are now just referred to as the herd.

    1. Re:We're taking pair programming to the next level by Anonymous Coward · · Score: 2, Funny

      We have one big cube with one computer and we put all of the programmers in there. We call it the stable and the programmers are now just referred to as the herd.

      I guess that is about as close to stable Hurd will ever be.

  26. I will never understand pair programming by i_ate_god · · Score: 2

    Just be disciplined with design and code reviews and be done with it.

    This doesn't sound like a plan to improve performance, it sounds like a plan to cut costs on hardware, now you can have one computer for every two devs.

    --
    I'm god, but it's a bit of a drag really...
    1. Re:I will never understand pair programming by Anonymous Coward · · Score: 0

      Just be disciplined with design and code reviews and be done with it.

      This doesn't sound like a plan to improve performance, it sounds like a plan to cut costs on hardware, now you can have one computer for every two devs.

      The cost of my new laptop is equal to 1 workday of my time. It's not a serious argument, I hope. And design/code reviews don't solve the issue, pair programming is intended to prevent bugs or fix them right where they start, not fix them after a code review. It also helps both coders to focus on the task at hand, instead of drift off into la-la-land.

    2. Re:I will never understand pair programming by tgd · · Score: 1

      Just be disciplined with design and code reviews and be done with it.

      This doesn't sound like a plan to improve performance, it sounds like a plan to cut costs on hardware, now you can have one computer for every two devs.

      I think its a technique favored by "programmers" who are averse to the process involved in "engineering". From that standpoint, its probably good. If you're not going to define requirements, properly document and review what needs to be written, and have a process in place to validate quality (in which code reviews is just one part), then putting two engineers in front of the screen helps.

      I think its a false economy, though -- you're paying 2 salaries for some fraction of 2x the output of a single programmer, but are only solving two problems (distractions and productivity, and a drawn out code review). I think most teams would be far better off spending some of those dollars on the appropriate staff to manage the planning, and enforcing good engineering practices.

      I think the "web 2.0" crap ten years ago was really the start of "throw bodies at the problem, we can tweak, adjust or rewrite this later" mentality. Pair programming is, IMO, just a reaction to the inherant problems with that mentality among teams that consist entirely of people who aren't experienced in engineering process.

    3. Re:I will never understand pair programming by CoderFool · · Score: 1

      Let's see...save money by having one computer for every two devs. That saves a thousand or two dollars. about 2% of an average developers salary. and somehow the productivity of each developer goes up more than 2%, so it's win-win...

    4. Re:I will never understand pair programming by Anonymous Coward · · Score: 0

      LOL, the computer is the cheapest part of hiring a dev.

    5. Re:I will never understand pair programming by Anonymous Coward · · Score: 0

      I find it's not coders that hate "engineering" so much as it is the customers. Customers start out by asking for a VW Bug, then add change requests until it becomes a moon base, then once you're about 3/4 of the way done the budget is cut and they decide to go to market with an above ground pool. All of the "engineering" in real engineering work occurs before the first shovel hits the ground. No traditional engineering discipline could provide the flexibility of scope and other changes that come with programming.

    6. Re:I will never understand pair programming by swb · · Score: 1

      This was my thought -- a chance to cut hardware costs and office space costs (since two can now share everything, cube, PC, phone, and maybe the chair next).

      But it also occurred to me that it has a subtle, Stalinesque aspect to it since it creates a situation where you have both an opportunity for collective discipline as well as a natural system for reporting on each other, which seems ideal when pairing ladder-climbing Junior developers with Senior developers.

      It seems like the utility would be best served for part-time engagement (ie, half time or something) or on a specific project basis. However you did it, finding the correct pairs sounds like a daunting prospect since working closely with someone is a dodgy business.

    7. Re:I will never understand pair programming by HornWumpus · · Score: 1

      Customers/managers you describe are like old dogs that have never been housebroken. They are best avoided. If you can't avoid them hit them with a rolled up newspaper every time they try to move the spec.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    8. Re:I will never understand pair programming by Surt · · Score: 1

      Code reviews are out of context. By the time you execute one, the cost to make a change is potentially very high, and will incur resistance (/the temptation not to fix something because of the high cost of doing so). Pair programming catches those same issues at the time they are created, and offers the opportunity to fix said problems at a much lower cost. Code reviews also deal with a potentially unmanageably large batch of code. The reviewer can get tired, lose focus, etc, particularly since he's not invested in the development of the code.

      Bottom line, there are all kinds of human factors going on there that 'be disciplined' can only fight to a minimal extent.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    9. Re:I will never understand pair programming by Anonymous Coward · · Score: 0

      Not in India.

    10. Re:I will never understand pair programming by Anonymous Coward · · Score: 0

      how do you fix bad management with a programming technique?/

  27. Works until the MBA types wake up by Anonymous Coward · · Score: 0

    Works until the MBA types wake up ... they then ask why are we paying 2 programmers to do a single programmer's job. Let's save money by firing half of them.

  28. Next level by Anonymous Coward · · Score: 1

    Forget spooning, time to take it to the next level: daisy chains.

  29. What's the big deal over pair? by Hellmark · · Score: 1

    Classes started yesterday, and I'm in my senior year at uni, and one of my classes has now been restructured to teach better about pair programming. I really don't understand what the big deal is. If I am programming in a pair, I want both people to have keyboards, and throwing code at the project at the same time.

  30. Re:Sorry, but you walked right into it by ArsenneLupin · · Score: 0

    Suck it and taste...

  31. I hate pair programming by Anonymous Coward · · Score: 0

    The other d00d always smokes all my weed and is never holding any of his own.

  32. Yep by Quiet_Desperation · · Score: 5, Funny

    I think we can all see where this is going.

    Programmer centipede.

    You know I'm right.

    1. Re:Yep by Sponge+Bath · · Score: 1

      Instead of the evil doctor, it will be a manager hovering over the programmer centipede screaming "Feed her! Feeeeed her!". Garbage in, garbage out I guess.

    2. Re:Yep by Quiet_Desperation · · Score: 1

      4 out of 5 mods disagree with you, anonymous entity, or just got the reference. :-P

    3. Re:Yep by Surt · · Score: 1

      Go google human centipede. I assume you just didn't get the reference.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    4. Re:Yep by Anonymous Coward · · Score: 0

      That's what you get for not reading the iTunes EULA.

  33. The New "Pair Programming" by Anonymous Coward · · Score: 1

    One programmer for doing the work, one lawyer to write the patents.

  34. Ok in small doses by composer777 · · Score: 4, Insightful

    I've had experience with pair programming. In my mind here are the pro's:
    1. It keeps you engaged and prevents your mind from wandering.
    2. It is a great way to teach junior level programmers, many of whom suffer from a lack of training and are thrown to the wolves in the beginning of their careers. I would have LOVED pair programming (in small doses) when I was starting out. It's a great way to learn things about a complex system that are not obvious.
    3. Different people tend to approach problems differently, and this difference in perspective can make it easier to catch bugs that are not obvious to a single programmer.

    The Cons:
    1. When abused, it can reduce productivity by distracting coders and not allowing them the space they need to think.
    2. It can create a hostile environment where the employee feels that they have no privacy, room to think, and where they are constantly being watched. This is part of why I think management loves it so much, they are outsourcing micro-management to their underlings.
    3. It can reduce motivation of individual developers since the buck no longer stops with them, but instead is the group's (or pair's) responsibility. While diffusing some responsibility across the team is not a horrible idea, people tend not to be as motivated. I observed motivation take a big nose dive when the shop moved to XP, since people were no longer as accountable for finishing anything, they just had to come up with a BS explanation for what they did the past day during the scrum, and really, it's a lot easier to BS one day at a time than it is to explain just what the hell you've been doing the past two months.
    4. Many poorly designed XP programming environments are inherently disrespectful, and are merely an attempt to turn a programming shop into a factory floor with no privacy. As a skilled programmer, I won't go along with this, and I actually refused to move into this kind of space at my last job, and instead left, along with the majority of seasoned developers.

    Overall, I can get some of the benefits of pair programming by walking down the hall, grabbing another team member and saying, "Hey, could you take a look at this?", when I'm having trouble finding a bug. It shouldn't require them to sit there all day.

    1. Re:Ok in small doses by durdur · · Score: 1

      A lot of workplaces already have the downsides you are mentioning (a cube forest basically is a "factory floor with no privacy"), and pair programming just makes them worse.

    2. Re:Ok in small doses by chrismcb · · Score: 1

      I've had experience with pair programming. In my mind here are the pro's: 1. It keeps you engaged and prevents your mind from wandering.

      So what is better, two people doing the work of one person, engaged 100% of the time. Or one person doing the work of one person, engaged 75% of the time?

  35. and the DotMil Slashdotters all go by RobertLTux · · Score: 1

    HERE WE GO AGAIN here we go again ...

    anything that is supposed to be The One True Way rapidly finds out how wide the "edge cases" are.

    In pair programming this is found in trying to put Orange/Green Irish programmers in a "pair" (or Jew/Muslim) and also is BAD for programmers that are best setup in a "den" and then have Food/Drink shoved into a slot in the door.

    --
    Any person using FTFY or editing my postings agrees to a US$50.00 charge
    1. Re:and the DotMil Slashdotters all go by slim · · Score: 1

      BAD for programmers that are best setup in a "den" and then have Food/Drink shoved into a slot in the door.

      These tend to be a millstone anyway. Sure, they barely need any oversight, and they deliver code that works, on time. But then it needs some maintenance, and you find it's a monolithic uncommented pile of spaghetti that only he understands.

  36. Methodology Talent/Skill/Experience. by Shoten · · Score: 5, Insightful

    Let's face it...this is yet another iteration of the dance we've seen before. Extreme Programming, Agile Programming, and so on. Companies keep hoping that there's a methodology that can be applied to the process of coding and development that will homogenize their workforce, allowing them to look at coders more like cookie-cutter individuals. There are multiple drivers behind this: the difficulty of assessing a programmer's talent during the recruiting process, the desire to use cheaper resources, especially in outsourced business models, and the challenges that result from coders who turn out not to be a good fit with their role. But at the end of the day, coding is a creative process, and creativity fares poorly under standardized, one-size-fits-all models.

    --

    For your security, this post has been encrypted with ROT-13, twice.
  37. Kent Beck, eh? by themightythor · · Score: 2

    'The communication becomes so deep that you don't even use words anymore,' says Facebook programmer , cosignatory to the Agile Manifesto, and inventor of Extreme Programming Kent Beck.

    Fixed that for you

  38. 1999 by nitehawk214 · · Score: 4, Insightful

    1999 called, they want their useless waste of resources techniques back. Nice try Kent trying to jam Extreme Programming on us again.

    --
    I'm a good cook. I'm a fantastic eater. - Steven Brust
  39. Yeah by Dunbal · · Score: 1

    Facebook is known for its flawless code.

    --
    Seven puppies were harmed during the making of this post.
  40. Not for me... by MadCat · · Score: 1

    Pair programming to me is just a bunch of snake oil. I've tried it a few times, once voluntarily and the rest of the time under pressure. Why it doesn't work for me is probably a highly subjective thing, but here goes...

    1) Switching "driver's seat" requires that you keep getting back into that state of mind that gets things done; highly inefficient and annoying.

    2) If you're paired with an inexperienced developer, you spend most of the time hand-holding; correcting a missing ; is one thing, having to explain why doing things in a certain manner is a bad idea(tm) can take up more time than you would've spent just doing things on your own

    3) Like many programmers, I dislike having someone look over my shoulder.

    Personally, I'm perfectly happy if a spec comes in, code is written, and it's peer-reviewed after the fact. If you have a problem, bounce it around with some co-workers, maybe do some sample code as an impromptu pair, and then each goes back to their own thing. That, to me, is much more efficient.

    Then again I'm an old fogey, and eXtreme Programming, Agile, and this pair programming hooha is just a way for a lot of people to make obscene amounts of money giving talks about it. I've not seen a single "agile" project go out the door the way it should have and I've never seen pair programming be more efficient than the "old ways".

    YMMV.

    --
    There is no sig...
    1. Re:Not for me... by Surt · · Score: 1

      #2 is considered one of the main benefits of pair programming. You're making the other coder better, and the value of having two good programmers on staff in the long run is much more valuable than the delta in productivity due to pairing.

      We make enterprise software for fortune 500 insurance companies using agile and pair programming, and we've delivered new versions year after year for a decade now.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    2. Re:Not for me... by Anonymous Coward · · Score: 0

      I've not seen a single project go out the door the way it should have.

      FTFY.

    3. Re:Not for me... by MadCat · · Score: 1

      The problem is that management often insists on a certain pairing that doesn't work. In my case, pairing me with someone fresh out of college would result in a serious amount of tension, because I have to spend too much time explaining things that, realistically, aren't very difficult to grasp.

      Put me with someone who's been around the block for a year or two, and it works out because they often have an understanding of the *why* - and it makes it easier to pass along knowledge.

      Personally, I will stand with my position that pair programming is to be avoided at all cost. It might work for some people and projects, but doesn't work for everything.

      This is a subject similar to open plan offices; everyone has an opinion, and realistically nobody will ever agree on what's better - so let's just agree to disagree and call it a day :D

      --
      There is no sig...
    4. Re:Not for me... by Surt · · Score: 1

      I'd definitely agree it's not for everyone or every team, or every project. It's really a technique that should be used only where a low bug rate / high quality is near the top of the list of requirements. If you aren't getting the long-term maintenance cost reduction, there's no point in paying the upfront price.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  41. Ugh by Anonymous Coward · · Score: 0

    Paired programming is for idiots that can't write good software themselves.

  42. It helps you think aloud by Sangbin · · Score: 1

    I like to write code that's easily understood. When I work in a pair, I'm forced to explain what I'm about to write, thus the code that's actually written is already verified to be understood more easily.

  43. imbalance not necessarily needed by Anonymous Coward · · Score: 0

    it may not be fully correct to characterize pair programming as a "master/apprentice" relationship only, or more generally, imply that some sort of imbalance needs to exist (old/young, smart/dumb, experienced/unexperienced) within the relationship in order for it to work.

    for example, in university i pair programmed with my buddy on lots of projects. he was better than me at math, and i was much better at the coding. so working this way we were able to finish our tasks with success and ease because we were acutely aware of each others strengths and weaknesses; how to maximize the good and minimize the bad. we were smart enough to realize this.

    a pairing only works if the strengths and weaknesses of the people can reinforce eachother. getting two people together with the same skillset will invariably lead to conflict.

  44. Another 'One True Way' fad by darpo · · Score: 1

    The best organizations use a blend of methods; they don't fall into the trap of forcing everyone to work the exact same way at all times.

  45. pair or team programming must be applied sparingly by CoderFool · · Score: 1

    I have done pair programming and team programming, and in almost every case, half the pair or half the team was not fully productive. IMHO the only time the team or the pair is useful is for design, debug, or code review.

  46. Re:Methodology Talent/Skill/Experience. by Shagg · · Score: 2

    But at the end of the day, coding is a creative process, and creativity fares poorly under standardized, one-size-fits-all models.

    What some want is for it to be more like "paint by numbers". Sometimes it's OK, but as you say, most of the time it's a poor fit.

    --
    Unix is user friendly, it's just selective about who its friends are.
  47. apprenticeships are also needed with less school t by Anonymous Coward · · Score: 0

    apprenticeships are also needed with less school time and more real work time.

    I say a 1-2 year mixed apprenticeship + tech school will work good and give people real skills.

  48. Thank you for advising me about the next fad by Zontar_Thing_From_Ve · · Score: 1

    I'm an IT support guy and not a programmer, so it's interesting for me to read this as I'm sure this will become the next "magic bullet" that gets proposed as the "solution to all of our problems" after Agile and hybrid-Agile begins to lose steam. What amazes me is that every few years some new programming methodology gets proposed and it goes something like this...

    Outside Observer: But 5 years ago you guys told us that ______________ was the answer to all of our programming needs. And before that it was ____________. And before that it was ____________. Each time your swore that this new methodology would solve all of our problems and each time it was eventually rejected in favor of yet another new approach. So why should I expect this to be any different?
    True Believer: Because this time we finally have the right idea!
    OO: But that's exactly what you said the last time.
    TB: (cough! cough!) Sorry I can't stay and talk more about this. Have an important meeting to go to....

  49. I got a pair! by Anonymous Coward · · Score: 1

    Hey I like pair programming.

    I have a pair.

    Oh..... that's NOT what it means?

    Humor, or feeble attempts aside, I had to do this pair programming.... Once. Had to sit and watch an arrogant FIDIOT cram too much OO up his own hind while flailing with the lack of specificity doing JSF to exact formatted specs. What a waste of my time. The mini-project was canceled when a few of us went to the "boss" and told them the pipe-dream of doing 1.5 years of development into a 6 week JSF re-do effort was going to be a miserable failure... Seeing several of us... the boss got a (rare) clue and canceled the exercise in stupidity.

  50. static analysis tools by Anonymous Coward · · Score: 0

    I prefer using compiler, static analysis tools (we use Coverity for C/C++, but there are many others http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis ), and peer reviews instead of pair programming to find defects earlier.

    Back-seat programming seems less efficient for both time and money. The static analysis tools have come a long way and are very good at finding defects programmers miss.

  51. What really should be paired by jimbbb · · Score: 1

    What they really need to do is pair the managers! I've watched management foolishness drive companies out of business.

    1. Re:What really should be paired by Surt · · Score: 1

      People do this. Most management decisions at my company are made with at least two, if not more, managers involved.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  52. The thing that always bothered me by npsimons · · Score: 1

    about pair programming was how it was described that "one would be thinking while the other one typed". Huh?! Shouldn't both programmers be thinking? Maybe their editor wasn't designed very well and the one typing had to concentrate on typing too much. Probably wouldn't happen with a better editor

    1. Re:The thing that always bothered me by JDG1980 · · Score: 1

      Having one programmer think while the other types seems like a very inefficient use of resources. You're basically paying a programmer to act as a data-entry clerk. In that case, wouldn't it make more sense to pair a programmer with a secretary?

    2. Re:The thing that always bothered me by Anonymous Coward · · Score: 0

      Probably wouldn't happen with a better editor

      I think you meant to link to ed when you mentioned a better editor.

  53. I have tried this technique by Anonymous Coward · · Score: 0

    Working on school related project, I have often done this technique. Sometimes as a productivity tool, but most often as a teaching tool. It is also very good for tutoring.

    If you want to use it as a productivity tool, you must have a partner that is on your level of understanding. This is fairly hard to find at an academic institution, and probably harder in a work environment.

  54. Re:Methodology Talent/Skill/Experience. by Anonymous Coward · · Score: 0

    I couldn't agree more!

    I cannot picture myself working on a pair like this. The only way I can see this working is if one developer is writting the unit test code while the other is writting the actual code and both are referring the same set of specs. Oh snap!! Wait ...this is Agile so no SPECS!!!!!!! :D

  55. Facebook Programmer? by Bob9113 · · Score: 2

    Facebook programmer Kent Beck.

    That seems a little like saying, "Google employee Vint Cerf."

    And, as an aside: Damn, Kent. Facebook? I thought you were cool.

  56. Programmer-on-programmer spooning by GameboyRMH · · Score: 1

    It's finally happened, the software industry is resorting to prison love.

    --
    "When information is power, privacy is freedom" - Jah-Wren Ryel
  57. Re:Not pair programming... by Spy+Handler · · Score: 4, Funny

    the driver writes code while the other, the observer (or navigator[1]), reviews each line of code as it is typed in.

    Driver sounds cool, that's what fighter pilots call themselves too. But observer sounds lame... we should call it wingman. Then we have the driver who writes codes, and the wingman who watches for errors. Plus we get to say cool stuff like,

    "You can be my wingman any time!"

  58. Playing in co-op mode by Tony+Isaac · · Score: 1

    Have you ever played a video game in co-op mode? There are a few games where this makes sense: one person steers while the other shoots, or whatever. But most of the time (for me anyway), this is min-numbingly boring. Give me one-on-one competition any time. My kids, on the other hand, love co-op mode! But if we're competing, they aren't much better as a pair, than I am operating everything by myself.

    Maybe it is generational. But I'll wager I can keep up with a programming pair any day. But that's an unfair comparison. Really, you're paying two people to work as a pair. So the comparison should be two people like me, up against a pair programmer team. Now we single-threaded programmers are going to run circles around your pairs!

  59. Re:Not pair programming... by UnderCoverPenguin · · Score: 1

    I would think there would be fewer and shorter time outs. But. my impression is that most of the benefit comes the code being inspected as it's being typed, so there are fewer typos to bog down the compiling process.

    But this is speculation on my part. Where I work, it is hard to program in pairs. Since we are developping software for controling machines, our cubes are crowded with equirpment. We each have an in-circuit debugger (controlled by a PC application), 3 test boxes (one for operator controls and indicators/displays, another for sensors (both real and simulated) and the third for actuators (both real and simulated)), power supply, oscilloscope and 4 monitors (2 1920x1080 and 2 1400x800) (to display the debug application, communication simulator, logic analyzer. code editor and various documents).

    (Years ago, I used to use the Codewright IDE. It had a feature where 2 people could "link" their Codewright sessions and be able to collaboratively edit the same file, each one seeing what the other was typing in real time. I don't know of another code editor with this feature (except maybe Google Documents, which is not appropriate for our needs.).)

    --
    Don't try to out wierd me, three-eyes. I get stranger things than you, free with my breakfast cereal. --Zaphod Beeblebr
  60. Another gimmick by gymell · · Score: 2

    I see paired programming as just another gimmick to get around the fact that there is no substitute for having experienced programmers and effective code reviews. As a consultant, I've worked on many agile projects, including some involving strict XP paired programming, and didn't see any better quality with that than with anything else. It's all about who you have working on the project, having decent management and a true agile philosophy ... not "agile theater."

  61. And around we go again.... by Anonymous Coward · · Score: 0

    I have been experiencing this more & more recently: that recognition that everything comes back around and many people think it is "new." Was it 1999? Was it 1996? Maybe it appeared before that even but I well recall having some higher ups evangelizing about this at one company I was with and then hearing new IT grads waxing poetically about it during interviews in the late 90's. There is nothing new in this, what would be new is if people stick with it long term. I prefer working alone then taking some time to talk with friends who have similar experience to mine, around 20 years, as well as a few more recent entries to the field. We tend to be pragmatists: whatever gets the individual's work done at a quality commensurate with the stage of development is good practice.

  62. Military systems often work that way. by Animats · · Score: 1

    Modern systems don't handle multiple users working on the same thing very well. One of the big differences between most computing and military command and control systems is that screens aren't considered private to users. In most military command centers, staff can look at what other staff are doing. This started with the 1960s space program, where all the consoles were really TV screens, and all the screen data went out over an in-house cable TV network as video channels. Any console could look at any channel, and observers in other rooms could look at channels. SAC and NORAD were set up that way, with the same Philco consoles. That continues today. NORAD HQ today looks like a rather bland room with people at computers, but there's a big video switch so anybody can look at any display, and any display can be put on the big screens in front.

    This leads to a style of work where one person is controlling a screen, and others are watching what they're doing. Someone will call out to the room that something important is happening on screen N, and other people will punch up that screen, watch, and take actions or give orders. This is rare in the civilian world, but common in the military one.

    A few people with backgrounds in DoD programs work that way. Two well known programmers, Bob Boyer and J. Strother Moore, did this thirty years ago. They had a setup where they both worked at home, with a leased voice line and headsets between them. They were both looking at the same screen, remoted from a time sharing system.

  63. Try 5x the time... by SuperKendall · · Score: 1

    Seems like for work that you just need to knock out, you might be even better off offshoring

    Offshoring involves a horrible amount of overhead - first a very huge startup cost of figuring out how to work with the remote company, have them give you code, give them access to other services they need to hit, and so on.

    Then you have to also spend time describing what you need done, in very minute detail (detail the experienced coder can provide as a project gets going).

    Lastly of course there are delays when bugs are found.

    The experienced coder can easily "knock out" something simple in 5x less the time, probably also with a great deal less cost even if their salary is high.

    Offshoring is only POSSIBLY worth it for very large projects you expect to die in a decade.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Try 5x the time... by Gr8Apes · · Score: 1

      I have yet to see a single offshore project "succeed". By succeed, I mean produce what was requested, anywhere near the time requested, within an order of magnitude of the initial cost estimate. This isn't a 1 or 2 story anecdotal type thing either, but across 50+ projects, 20 companies, and a set of colleagues across several industries.

      What was the one thing all these offshore projects had in common? The desire to reduce cost because they perceived that their coders were replaceable objects randomly interchangeable with other burger turners, um, coders, as presented by the offshoring companies, completely neglecting several key factors: company knowledge, specialized talents, access to business owners and vice versa, cultural and communications gaps, and last, but not least, the utter dishonesty inherent in many offshore companies that exercise bait and switch tactics with personnel, no matter what you have in your contract.

      This doesn't mean all outsourcing efforts fail. But if you outsource, it shouldn't be a core competency or business process, and if it is, it should be a relatively short term enhancement effort with intense participation and continuous turnover to internal resources. e.g., if you need 15 people to complete the project in 4 months, but only have 5, then complementing your staff with 10 outsourced people might be a good thing, provided internal people drive the project. Note also that this is "outsource", not necessarily "offshore", there's a difference, and it's huge.

      --
      The cesspool just got a check and balance.
  64. Re:Not pair programming... by Lennie · · Score: 1

    "I don't know of another code editor with this feature."

    Cloud 9 IDE, a webbased IDE, does:
    https://c9.io/site/features/

    It's also an open source project:

    https://github.com/ajaxorg/cloud9/

    There are other I believe.

    --
    New things are always on the horizon
  65. Re:Methodology Talent/Skill/Experience. by slim · · Score: 1

    The only way I can see this working is if one developer is writting the unit test code while the other is writting the actual code and both are referring the same set of specs. Oh snap!! Wait ...this is Agile so no SPECS!!!!!!! :D

    That's the only way I can see it *not* working.

    And of course there are specs. The unit tests are the specs!

  66. Teaming trumps the lone wolf by bobs666 · · Score: 1

    I just left my 30 year tour programing in US Army Labs. What a bunch of power greedy losers.

    Management has to value the cross training that only working in a team can provide. What if your wolf leaves that what do you have nothing. If you had a programing pair, as least the one left behind would know what was going on. If there was no other value, you have to consider having a back up essential. Its like having no back up of your files.

  67. Overhead not worth the savings by SuperKendall · · Score: 1

    Even if one partner does absolutely nothing but LOOK at the code the other partner is writing, it is the equivalent of a code review by a peer. The effort is not wasted, unless you suck at doing it.

    The problem is that it's a code review that takes as long to do as it takes to produce the code.

    Code reviews are useful because you spend an hour or two looking at something that someone has spent a week or two crafting. That is where the value comes from. When you only have the output of one pair of hands, but two minds on a problem - sure you are going to catch some minor glitches but nothing that would not have been fixed in less time than was spent by having two programmers working a problem.

    Think of it as a "local maximum". You get improved quality of code for a section of something, but the overall body of code is not really that much better and in the meantime you are spending 2x the money (because coders do cost money) on the same problem.

    Now if all you have is time and no money, then pair programming might be a great thing. On a personal project for something you own, it might be a great idea. But for IT work the overhead is just too great to do it all time...

    One thing I do like is limited pair programming for maintenance, where you work on an issue to solve together. Then the local quality is much more desirable since you don't want to break anything, and two minds are usually quicker to figure out why a problem exists in the system - especially if both of you know different parts. In that case pair programming is excellent, that is the case where I think companies should stick to using it.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Overhead not worth the savings by slim · · Score: 1

      Is just your common sense, or do you have any research to cite?

      There's actually been a lot of actual scholarly research into pairing; enough for a meta-analysis. http://dl.acm.org/citation.cfm?id=1309094 -- it's not even that new.

      The meta-analysis finds that pairing results in much higher quality, slightly shorter timeframes, and a slight increase in overall effort.

      What it doesn't take into account is the effect of that higher quality on future maintenance costs. So it's likely that slight increase in effort results in large savings of effort during the later lifecycle of the software.

    2. Re:Overhead not worth the savings by SuperKendall · · Score: 1

      Is just your common sense, or do you have any research to cite?

      Just experience working as a developer and architect for around two decades.

      I know real world experience is so worthless compared with a study though, right?

      The meta-analysis finds that pairing results in much higher quality, slightly shorter timeframes, and a slight increase in overall effort.

      Mine found over several trials that none of those things were true.

      I'm sure that it CAN work, for some people in some conditions. Indeed as stated, I think for maintenance work is probably does work out to be better.

      But to make a blanket statement that it is categorically better flies in the face of many real-wrold attempts I have seen, all of the attempts using paired programming for building new systems have not been more efficient.

      As many others have stated, there are lost of different approaches to working in software, all of which are perfect some of the time, and none of which are perfect (or even useful) all of the time. But companies insist on doing one thing so they end up screwed one way or another.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    3. Re:Overhead not worth the savings by Anonymous Coward · · Score: 0

      That's not the whole story. Other research (google it, I'm lazy) shows only benefits for novice-novice pairs, for novice-expert and especially expert-expert pairs it is a drag on productivity. Further, code reviews with 2-3 reviewers have all the quality benefits with none of the productivity losses.

  68. hilarious! by AdamWill · · Score: 1

    "Such reverent tones prompted Atlassian to poke a little fun at the practice with Spooning, an instructional video in which a burly engineer sits on a colleague's lap, wraps his arms around his partner's waist and types along with him hand over hand"

    Thus combining male chauvinism (all programmers are guys, right?) with the common misconception that the concept of two guys doing something sexual together is so unlikely as to be innately hilarious.

    Two dumbass prejudices the industry would be better off without, nicely combined for your convenience. Great job, sport.

    1. Re:hilarious! by Anonymous Coward · · Score: 0

      Shut up, homo.

  69. not true by luis_a_espinal · · Score: 2

    Yeah, if you want the seasoned vet to commit seppuku...

    Nonsense. One of the tasks implicit for any seasoned vet (especially one that is vested as a senior or principal) is to guide juniors or new members of the team up to speed. Obviously, you don't want your vets to be paired with juniors all the time, as this is not economical (and at some point the junior needs to hit the ground running by himself/herself).

    However, in any company (and for any job for that matter) it is a person's task to help others come up to speed if that person has the necessary know-how. It might not be the case for those who just want to fold jeans at the gap, but it is certainly true above a certain professional/salary level.

  70. Is that good? by Anonymous Coward · · Score: 0

    I must have missed the point where anything Facebook has done was lauded as being technically impressive.

  71. Re:Not pair programming... by Anonymous Coward · · Score: 0

    sounds pretty gay man

  72. Well, if Facebook uses it... by Anonymous Coward · · Score: 0

    (1) ... I'm not going to use it

    and

    (2) ... I'm not going to work for Facebook

    Did Gnome 3 also use pair programming?

  73. Please! by StillNeedMoreCoffee · · Score: 1

    I get enough of that at home, I don't need it at work.

  74. Re:Not pair programming... by slim · · Score: 1

    (Years ago, I used to use the Codewright IDE. It had a feature where 2 people could "link" their Codewright sessions and be able to collaboratively edit the same file, each one seeing what the other was typing in real time. I don't know of another code editor with this feature (except maybe Google Documents, which is not appropriate for our needs.).)

    http://xpairtise.sourceforge.net/ - Eclipse plugin with the scent of abandonware.

  75. Depends on who you pair with by microbee · · Score: 1

    I'd like a young pretty chick, please. I can do all the coding and she can just make me comfortable while I am doing it.

  76. What about pair programming with two computers? by Anonymous Coward · · Score: 0

    I don't have much experience on pair programming, but enough to know some pros and cons of it. What mostly bothers me in it is that there's only one computer, so the 1st guy is typing and mousing while the 2nd one has no tools to do anything by himself. Hence, he needs to tell/ask/point/whatever every time. It feels stupid to spend time on talking on missing semicolons, or interrupting the other by pointing and grunting when you could fix the error the moment you spot them, *if you too had some tools*.

    They are also both watching the same screen, probably too close in a bad sitting position. So the first thing I'd change is to have two screens, both viewing the same image (clone mode) so that they can sit properly and see well and don't need to breath the same air. Next step would be to add another keyboard and mouse, so that instead of telling the other guy that he missed something there and there, one could simply go and fix it. This would of course require better tools, so that two guys can simultaneously edit the same document and see what the other guy is doing continuously (two different color cursors and mouse pointers?) For example, if you write something and the other guy goes fixing it, some diff view or different color should reveal it immediately. If you don't understand why he changed it, only then you'll ask. Also, when appropriate, both could work on a different part of the file.

    Has anyone tried anything like this before? Are there any proper tools for it?

  77. It's called Quality Control by rahvin112 · · Score: 1

    In my field of Engineering we call this quality control. Two sets of eyes must look at every design before it's released for construction because when you are building stuff out of concrete and steel a mistake is a BIG deal that can put engineering firms out of business.

    That software engineering is just starting to realize that everyone (no matter how good they are) makes mistakes and everyone should be reviewed just indicates that it's finally maturing into a real profession where errors mean something more than it does currently (just short of nothing).

    1. Re:It's called Quality Control by Hognoxious · · Score: 1

      In my field of Engineering we call this quality control. Two sets of eyes must look at every design before it's released for construction because when you are building stuff out of concrete and steel a mistake is a BIG deal that can put engineering firms out of business.

      In your field of engineering does the QA guy hover around behind the draughtsman, distracting & irritating the shit out of him, while he's trying to do the drawings?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    2. Re:It's called Quality Control by rahvin112 · · Score: 1

      QC and QA are different things. Quality control involves detailed review of designs by an equally qualified engineer. In practice this means two peers from the design team swaps designs and go over everything. Typically this is done with a detailed QC process involving highlighters, red, green and blue pencils for (in order) marking correct, incorrect, agreement and notes. The checkprints become the final record of the QC and document the design and process for the records that could be used in court if there is an error that get through.

      The QA reviewer goes through the QC and ensures that it was done. It's a quick process after the work is complete and prepared to be released to ensure that the QC process was followed. This is about a 10 minute process at the end of the cycle to ensure the process was followed but does not review content or check for plan errors.

      Everyone single person no matter how smart makes mistakes. Two equally skilled people (the QC reviewer can be more highly skilled) must review every item for correctness including not just details but base concept. Software engineering has always done QC from the backside where testers review final product instead of reviewing the code directly. IMO that makes software engineering an immature form of engineering. Coders need to be held responsible for the mistakes they make (like all the other engineering fields) so they put in place the processes that reduce and eliminate errors, those processes cost money and require more time but without them you get the stupid major errors that almost every piece of software has.

      I have no idea what a draughtsman is, unless it's some fucked up British word for drafter (who could be either male or female). In my branch of engineering the drafters are pretty much gone. The plan preparation can be pretty much done entirely by the engineers while doing the design and checking (much of the drafting is automated by the software anyway). Where as in my fathers days there were 20 drafters per engineer the ratio has almost reversed and there is about 1 drafter for every 20 engineers.

  78. Re:Not pair programming... by Anonymous Coward · · Score: 0

    the driver writes code while the other, the observer (or navigator[1]), reviews each line of code as it is typed in.

    Driver sounds cool, that's what fighter pilots call themselves too. But observer sounds lame... we should call it wingman. Then we have the driver who writes codes, and the wingman who watches for errors. Plus we get to say cool stuff like,

    "You can be my wingman any time!"

    "Bullshit, you can be mine"

  79. Re:Sorry, but you walked right into it by Anonymous Coward · · Score: 0

    And she said it's difficult to suck when she can barely even see it

  80. I Thought This Was Stupid At First by Anonymous Coward · · Score: 0

    When I heard my company was going "pair programming", I was about as excited as I'd be if mandatory drug testing for programmers was being implemented. I decided I was going to quit. Then I saw who I'd been paired up with. Holy moly! Can't code worth a damn, but the massages and sponge baths are awesome. I used to code 5-6 hours a day, but now I'm at the office pretty much around the clock. I get extra rewards for meeting the sales department's deadlines, and I can't even remember the last time I was able to finish a rant about how stupid one of their ... I can't even finish this post, she's whispering at me to get back to work now. Later dudes.

  81. did that my first month in work by someones · · Score: 1

    i (man) was paired up with a girl. She was fine as a human, but getting work done was kinda pain in the ass.
    I could not scroll anywhere and did not understand anything about the codebase and annoyed the hell outta her permanently asking (trivial, but not obviously trivial) questions.

    Later when i got my laptop, it was heaven: i was alone, could scroll and look up stuff and together we were much more productive.
    And i even had IRC for private + work chat.

  82. Big Advocate for Pairing by conark · · Score: 1

    I find pairing up to be incredibly efficient. You are more focused, have a pair of eyes looking over an issue together, have more opportunities for learning, knowledge sharing and (something underrated) make mutual decisions on the why's of certain coding methods. This is kinda like having a code review before bad code is written. Or at least if bad code is written, it's not a single person's responsibility (in theory :p) At my current office, I do a lot of pairing sessions. Not necessarily out of habit but whenever we're attempting to solve an issue. I feel that part of the problem when working in team situations is dealing with the decisions people make in coding or attempting to understanding why someone does something a certain way. Even if you have coding standards, structuring code and defining algorithms to handle a solution differ tremendously between people. Adding that second pair of eyes at least help lessen the human failure problems.

  83. Worksharing by Anonymous Coward · · Score: 0

    Autodesk calls it Worksharing and we've been doing it in Revit for ten years.

  84. Two by two hands of blue? by Anonymous Coward · · Score: 0

    paired coders can be dangereous :-)

  85. Re:Methodology Talent/Skill/Experience. by Lendrick · · Score: 1

    If you treat your programmers like cookie cutter programmers, the ones who are better than that will go out and find better jobs, and you'll end up with cookie cutter programmers. It's like measuring productivity in terms of lines of code written. You may end up with working software, but you'll end up paying through the nose for a team of 10 crappy programmers to do something in six months that a single good programmer could have accomplished in one.

  86. Ahem!! by Big+Hairy+Ian · · Score: 1
    > and are less likely to surf the net

    Funny we are both reading this at the moment :)

    --

    Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

  87. Hands on team leader by Anonymous Coward · · Score: 0

    Well I believe a team leader, who has better idea of end product, can walkover 3-4 developers sit with for a while, go through design, implementation and discuss and resolve the issues with developer can give better results than single developer and utilize resources better than pairing.

    - Anonymous COWARD :)
    (whats there in the name !!!)

  88. Kill the condecending by Anonymous Coward · · Score: 0

    Software engineering is a real profession. But your comparing chess to starcraft.. During the course of an engineering project you don't deal with fundamental changes, you build a bridge, and the river is still there, the roads that it connects to are still important roads, you still have access to the type of steel that you decided to build the bridge with. Not to mention that they might decide that the bridge should be on another continent Then when these changes happen, it's your fault, and you need to fix it.
    While I've seen plenty of bad software build by amateurs, I still curse engineers every time a gun jams.