Slashdot Mirror


Code Reviews vs. Pair Programming (mavenhive.in)

An anonymous reader writes: I've spent nine years working in teams which religiously follow pair programming. I'm used to working that way and appreciate the benefits it brings. We didn't have the luxury of pair programming all the time in my last project. This required us to do code reviews to ensure the quality of the code we delivered. This post is an attempt to consolidate the upsides and downsides of doing code reviews instead of pair programming in my three months of experience.

186 comments

  1. Nine years of pair programming? by 110010001000 · · Score: 4, Insightful

    You have gone through nine years of pair programming and haven't shot yourself? The idea of pair programming itself is insane. I didn't know anyone actually did it.

    1. Re:Nine years of pair programming? by Anonymous Coward · · Score: 5, Interesting

      (Going anonymous)

      You are likely running this through a cultural filter.

      The Indian teams that I have worked with are a lot more about huddling around a computer working things out, than the typical US approach of developer with headphones collaborating a couple of times a day. Different cultures do things differently.

      Looking at *real* salary information between two geos (Bangalore and Silicon Valley) comes out roughly as follows.

            Architect level 2:1.
            Junior level 5:1

      You can have pair programming for junior staff and still have a very strong cost advantage in India. That cost advantage plus a cultural tendency would make pair programming fairly easy to apply.

      Not making any comment about the quality of code or quality of engineers on either side of the pacific...

    2. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      I think a better question would have been "... and haven't shot anyone?"

    3. Re:Nine years of pair programming? by 110010001000 · · Score: 2

      I think you are right after reading the article it seems like it is a typical outsourced development environment (which sounds hellish). Carry on!

    4. Re:Nine years of pair programming? by Anonymous Coward · · Score: 1

      Pair programming can be great, if it's a hobby project and you work with a friend.

    5. Re:Nine years of pair programming? by Anonymous Coward · · Score: 1

      I really like pair programming on difficult problems, otherwise it is faster to just code separate and then test/review later.

    6. Re:Nine years of pair programming? by gstoddart · · Score: 4, Insightful

      Nine freakin' years, the mind boggles.

      On occasion I've sat with someone as we've worked through a complex thing and a second set of eyes was useful, and it wasn't terrible. I've definitely done code reviews, and it can contribute to better code.

      But 9 years doing pair programming? Good lord, my first though is "you're doing it wrong".

      If I wanted to spend 9 damned years helping a junior anybody build their confidence and skillset in anything ... I'd have gone into teaching.

      This just seems like you get half productivity all of the time, instead of two people pushing out code on different things, and then reviewing/debugging it later.

      Do we ever see "pair accounting" or "pair plumbing"? To do this all the time seems wasteful, and ridiculous. Nine years of it seems like madness.

      --
      Lost at C:>. Found at C.
    7. Re:Nine years of pair programming? by plopez · · Score: 1

      Does having 5 people huddled around a computer increase productivity or increase slippage?

      --
      putting the 'B' in LGBTQ+
    8. Re:Nine years of pair programming? by 110010001000 · · Score: 4, Funny

      It definitely saves on heating costs if they all share a blanket.

    9. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      Nine freakin' years, the mind boggles.

      On occasion I've sat with someone as we've worked through a complex thing and a second set of eyes was useful, and it wasn't terrible. I've definitely done code reviews, and it can contribute to better code.

      But 9 years doing pair programming? Good lord, my first though is "you're doing it wrong".

      If I wanted to spend 9 damned years helping a junior anybody build their confidence and skillset in anything ... I'd have gone into teaching.

      This just seems like you get half productivity all of the time, instead of two people pushing out code on different things, and then reviewing/debugging it later.

      Do we ever see "pair accounting" or "pair plumbing"? To do this all the time seems wasteful, and ridiculous. Nine years of it seems like madness.

      It's likely that the nine years were spread across multiple projects.

    10. Re:Nine years of pair programming? by alvinrod · · Score: 4, Interesting

      Even the early academic studies (PDF warning) of the effectiveness of pair programming found that you didn't quite get as much out of a pair team as two individuals working independently. However the code quality is generally a lot better in terms of correctness or readability.

      If you have a few individuals who are new to an organization or becoming acclimated to a new project they've not worked on previously, pairing can make some sense. On the other hand if you've got a rock-star developer that's head-and-shoulders above the rest, it's probably not worthwhile to pair them with another person.

    11. Re:Nine years of pair programming? by Anonymous Coward · · Score: 1

      It is hellish. People burn out and leave eventually. Last time I did this, my pairing partner would see all my weaknesses and report it to the supervisor. If you ever interview in a paired programming/extreme programming shop, run for the exits. You will be treated like replaceable shop equipment, tool/die etc..

    12. Re:Nine years of pair programming? by Anonymous Coward · · Score: 1

      It increases the chances of liability and reduces code maintainability. Seeing as how what they are doing is searching the internet for code that does something similar to what they want and often just using the module that they found online - regardless of the license and without understanding what the code does. I've caught them doing this more than once when reviewing code when it had trouble. I would check it and see some module with a completely different style and a bunch of functions that don't really appear to belong, then search the internet for that module and find that they just copied it, don't know how it works, but it does some small thing that they needed. Yay huddles!

    13. Re:Nine years of pair programming? by UnknownSoldier · · Score: 3, Insightful

      1. Find a better teammate then. Tossing the baby out with the bathwater just because it didn't work for you is irrational.

      2. When both of you are "in mental sync" it works great ! When not, it is a waste of time, for both of you. :-/

      3. Did you forget Brook's Law? There is no silver bullet Why? Because it depends on _context_.

    14. Re:Nine years of pair programming? by mtippett · · Score: 1

      How do you measure productivity?

      Delivered code per engineer, or delivered code per dollar (rouble, rupee, etc). Depends on your measure. As AC says above, the costs for junior engineers are disproportionally lower.

    15. Re:Nine years of pair programming? by cob666 · · Score: 2

      I was a long term contractor at a rather large international company that recently outsourced all their IT, which included application development, to an India based company.

      I've had to deal with the client and the new support company several times over the last year and I agree that the mindset is completely different. They tend to work in teams of 2 or 3 with only one person doing any actual work at any given time. I'd love to say that the this results in either increased productivity or a better code base but I haven't seen any examples of that.

      --
      Do what thou wilt shall be the whole of the Law - Aleister Crowley
    16. Re:Nine years of pair programming? by fahrbot-bot · · Score: 2

      Does having 5 people huddled around a computer increase productivity or increase slippage?

      I think you misunderstand the meaning of the word "pair". Unless you're thinking two pairs and a hot-spare.

      --
      It must have been something you assimilated. . . .
    17. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      Depends on your measure.

      And Never, Ever, EVER measure code quality.

      You'll never get your quarterly management bonus if you demand quality.

    18. Re:Nine years of pair programming? by JohnStock · · Score: 1

      I quite agree. I've seen places try this as a VERY short experiment 15 years ago. No software shop actually uses it.

    19. Re:Nine years of pair programming? by Hognoxious · · Score: 1

      Retarded Array of Indiotic Doersoftheneedful.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    20. Re:Nine years of pair programming? by Locke2005 · · Score: 1

      I use lubricant to increase slippage myself, but you do whatever works for you...

      --
      I've abandoned my search for truth; now I'm just looking for some useful delusions.
    21. Re:Nine years of pair programming? by eulernet · · Score: 4, Interesting

      This is nothing new.

      The effort of every individual in a group of people has been measured by Ringelmann in 1914, for army's purposes.
      Here is the original article: http://gallica.bnf.fr/ark:/121...

      And the results are (number of people => measured effort)
      1 => 100%
      2 => 93%
      3 => 85%
      4 => 77%
      5 => 70%
      6 => 63%
      7 => 56%
      8 => 49%

      This is called "Ringelmann effect" or more recently "social loafing".
      As you can see, 8 people produce the same amount of effort than 4 individuals.

    22. Re:Nine years of pair programming? by avandesande · · Score: 2

      Actually I have learned quite a bit about efficiently running IDEs, debuggers and troubleshooting techniques from pair programming. Coding, not so much- I can pick that up just looking at someone else's code.

      --
      love is just extroverted narcissism
    23. Re:Nine years of pair programming? by luis_a_espinal · · Score: 1

      Actually I have learned quite a bit about efficiently running IDEs, debuggers and troubleshooting techniques from pair programming.

      The amount of time devoted to efficiently learn *those things* should be very minimal compared to the total activity time.

      Coding, not so much- I can pick that up just looking at someone else's code.

      Or by doing, or reading, or applying general principles. Coding is such a basal thing. A good student right out of school should already know how to code well. What we get with work experience is the knowledge needed to work in projects, in organizations, in seeing troubleshooting patterns, in foreseeing issues, etc.

    24. Re:Nine years of pair programming? by JoeMerchant · · Score: 1

      In University in the 1980s, we called them "lab partners" - back then, a decent PC cost 2 month's gross salary of a starting BS degreed engineer, so there weren't that many machines to go around. It can work, it can work well, and it can go poorly - all depends on whether or not you've got a good working relationship with your "lab partner."

      At University, it was a challenge to hang on to good lab partners with the courses shuffling two or three times a year - in a professional situation, if management and workers can be honest with each other about when its working and when its not, I could see pair programming working long-term. However, if you've got denial of reality going on, and dysfunctional pairs saying that everything is great just to avoid confronting the real problems, then, yeah, pair programming can be a disaster.

      I've never had a big enough pool of programmers to make a real attempt at pair work - I tried it once in a shop with 4 programmers, it didn't work there long term, but we were very productive as pairs about 20% of the time (2 hour stints, 3 days a week).

    25. Re:Nine years of pair programming? by JoeMerchant · · Score: 3, Insightful

      If you've got a "RockStar" - odds are that noone else can follow his work, so there's benefit in pairing there to get extended life and maintainability out of his productivity, enabling others to better maintain his(/her) code and freeing up your superstar to continue breaking new ground instead of getting bogged down in maintenance of the old stuff.

      If your "RockStar" does produce code that is readable and maintainable by mere mortals, then you definitely want to pair them up with the plebes so they learn how to do that, because most programmers can't.

      If spending 4 to 8 hours a week "paired up" with colleagues is too much for your precious flower to handle, watch out for exploding egos and horrible personality clashes.

    26. Re:Nine years of pair programming? by avandesande · · Score: 1

      Never had formal pair programming- just anecdotes on when it was productive to bother another programmer and visit their cube.

      --
      love is just extroverted narcissism
    27. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      Pair programming is only useful for incompetent engineers.
      Judging by the level of most Indians I see at work, they could do with it.

    28. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      Sadly I've seen paired programming becoming more common in recent years. I really think that pro-pair programming fan boys like the work model because they can point fingers at their pairing partner when things go wrong and deflect responsibility for poor code choices and bugs.

      They claim efficiency due to not needing things like code reviews, but in reality now you have two authors (whose opinion on the code is severely biased in a review process since they wrote it, but likely don't understand the other code it interfaces with nor the external systems that may be dependent on that code) and fewer external eyes on the paired code to assess its impact or unseen problems that a fagan style process would catch.

      When you couple paired programming with an open office to "encourage" collaboration, its an absolute nightmare work environment for a decent coder or engineer. The amount of talk and chatter it creates in an office is absurd. Headphones only go so far to block out the distractions and productivity for everyone in range typically suffers.

      The only place I really see paired programming as a positive is for short term training of someone because they lack any documentation or run books or are too cheap to hire someone with the experience and skills they needed.

    29. Re:Nine years of pair programming? by JoeMerchant · · Score: 1

      Does having 5 people huddled around a computer increase productivity or increase slippage?

      I think you misunderstand the meaning of the word "pair". Unless you're thinking two pairs and a hot-spare.

      Depends on the problem set - back in 8 bit days (when I was about 13) my school entered a "programming competition" where the code for competition had to be typed by hand into a single machine (per team). You could have other computers for parallel development, but the competing code was restricted to the single keyboard and screen interface. Teams were limited to 5 programmers each.

      About half the teams "huddled around a single screen" and the other half (including us ;( ) split up onto 5 machines and then fed the product to the competition machine when it was ready. Long story short: the huddle teams kicked ass in that scenario, I think there were 10 teams competing for something like 4 hours, the top 3 were huddles, and the lowest huddle team placed 7th, I think we placed 8th.

      Most professional programming I have done resembles the parallel development scenario, not the huddles - though huddles are "broken out" for special problem solving. Being in a huddle all day long would be completely exhausting (most pair programming literature acknowledges this readily), but for short bursts it can be very productive.

    30. Re:Nine years of pair programming? by JoeMerchant · · Score: 1

      Pair plumbing is actually quite common - though one half of the team (generally the "master plumber") is mostly engaged in sales and customer interfacing, while the junior is the one pulling toilets and sweating joints.

    31. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      Pair programming is a moment by moment choice. Sometimes it's good, sometimes it's bad. It is highly context specific and can vary from moment to moment. Most of the time it's useless or even bad. 80% of programming is thinking. It's hard to think together when trying to make a mental model. Starting a new project, I may spend 2-3 days not writing any code or talking to anyone. Just thinking. I don't see how that can be "pair programmed".

    32. Re:Nine years of pair programming? by gweihir · · Score: 1

      Well, given that morons amplify each other, I expect that the business model here is really not dependent on code-quality. Hence I expect the OP can just continue as they did so far. Defense contracts?

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    33. Re:Nine years of pair programming? by kennycoder · · Score: 1

      Imho both things are positive. I'm working for on of the biggest startup generators in the EU and currently as a team lead for something similar to amazon marketplace. Our project employs about 70 developers spread around 8 sub-teams. Each team practices both pair programming from time to time, like couple of hours a week per dev and we also do code reviews per feature for each other, randomly, across all sub-teams. This ensures both knowledge spreading and better code quality. I can't imagine anyone doing it all the time but I don't see this subject as one VS another.. I'd rather have both moderately. For us it works very well.

      --
      Fucking a fat girl is like riding a scooter... it's fun 'til someone sees you.
    34. Re:Nine years of pair programming? by gweihir · · Score: 1

      From experience, I would say it ensures no good solution gets a chance.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    35. Re:Nine years of pair programming? by Entrope · · Score: 1

      Functionality delivered per engineer is a reasonable, although obviously incomplete, measure for managers to appraise individual engineers or teams.

      Functionality delivered per dollar is a useful measure for customers to appraise projects, where a "customer" might be another business unit or an executive who authorizes funding for an internal project just as easily as a traditional (external) customer.

      Both measures can, and often should, be used -- but obviously by different audiences, and for the different purposes that are pertinent to each audience.

    36. Re:Nine years of pair programming? by ILongForDarkness · · Score: 3, Interesting

      You're maybe a better coder than I or people I've worked with. I find the majority of my time isn't spent "writing" it is spent finding the stupid little errors like a != that should be an == or forgetting to do a null check etc. I type about 60wpm but commit maybe 100 loc of production ready code a day. The bottleneck isn't writing. It isn't thinking either: my list of "good ideas" and simple should do refactors grows faster than I can do them. I'm limited by my ability to find and debug stupid mistakes in code, whether mine or falsely blamed on me by CI.

      Pair programming could help with that I think (haven't done it for more than an hour at a time so don't feel confident stating an opinion one way or another0 because my tendencies towards stupid mistakes might not be the same as my pair. A quick: wait that is dumb every 10 min could save me hours of debugging. My guess though is that you should change pairs frequently so you don't start falling into the same mistakes as your partner or end up with 2 people that are the only guys that can review each others work because they are the only ones that have worked on X for a year.

    37. Re: Nine years of pair programming? by Anonymous Coward · · Score: 0

      Judging by the level of coding I've seen out of most Indians, they could stand to use team programming, though I doubt it would help.

    38. Re:Nine years of pair programming? by complete+loony · · Score: 1

      Code review before the "RockStar" can merge his code in, should give the same result. Your new feature is not done until someone else can use it & maintain it. Otherwise the business is screwed if you get hit by a bus.

      Starting a policy of reviewing all code may seem like a waste of time. But as a team works together more, code reviews should get faster.

      To cover some of TFA's "Downsides";

      Working on stories which have dependencies is hard

      Yes. If you find you need to reuse some common code between two feature branches, first refactor & rebase that code into a separate feature branch. If possible, merge that code to master first. Then you can both merge it cleanly. A branch is not a "feature" or a "use case", it's a patch series that you can merge without breaking production. You don't have to wait until a whole "story" (or whatever you call it) is complete.

      Reviewing big changes is hard

      Try to split big changes into a series of smaller commits before pushing for review. Again, this may involve rebasing & reworking patches that you have already written. Don't get too attached to the commit's you have already created. I don't want to review all of your experiments while you were working out what not to do.

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
    39. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      Have you heard of Jeff Dean and Sanjay Ghemaway? These are the two guys who came up with MapReduce, protocol buffers, tcmalloc, bigtable, spanner, and google brain, and that's only published stuff. Their importance to google is so high that a "senior google fellow" level was added specifically so that they could be promoted to it and earn their rightful place above all other engineers in the company. Even outside of google, I doubt there are more than a handful of people alive who have done more to advance software engineering worldwide.

      Within the company, Jeff and Sanjay are famous for two things: doing amazing work and pair programming with each other. It just depends on the task. If you are doing rote work that hardly even needs a careful review, then pair programming is of course a waste of time. If you are doing something where you are willing to put in a little more time for a better product, having two equal skilled people working together is better than having them work separately.

    40. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      Exactly! You will never have any two programmers of equal capability...never. There will always be one that is more qualified and better and his/her job than the other. You will never be able to properly evaluate them. One will always be pulling the other down while one will always be lifting the other up. Let's ignore the fact that not everyone gets along with each other.

    41. Re:Nine years of pair programming? by plover · · Score: 1

      You're maybe a better coder than I or people I've worked with. I find the majority of my time isn't spent "writing" it is spent finding the stupid little errors like a != that should be an == or forgetting to do a null check etc.

      You'd probably benefit from a good static code analyzer. While they can't catch errors in logic where your code doesn't meet your requirements, even the simple ones can catch a lot of dumb things like skipped null checks, boundary violations, pointer violations, memory leaks, etc. The better tools are very sophisticated and can do deep examinations, and will track your code quality over time. They are also available as IDE plugins, you can run them on a build server, or both. They can save you hours of time checking for those stupid little errors.

      --
      John
    42. Re:Nine years of pair programming? by Anonymous Coward · · Score: 1

      Do we ever see "pair accounting" or "pair plumbing"?

      In accounting it's called auditing and often mandated by law.

      In plumbing it's called apprenticing and a tradition of other arts or crafts up to the professional level. Even a professional carpenter would be expected to work together on a team of other carpenters and supervisors.

      It is Programming that is unusual. Bulk coding of ideas into software covers everything from blue collar typists getting the spec done to the ivory towered principal investigator and research assistants embodying some arcane concept. It is a fundamentally new job. But the path dependance is still strong: it comes from a part of the Western culture which was pro-individualist and anti-union. The association with mathematics, another field know by its solo savants, also downplays the importance of teams.

      There is no surprise that the prototypical programmer is a solo slave tied to a desk and a chair in some megacorp office or some lone wolf staring bleary eyed into glowing text hours into the night. But working in groups is the norm for any human project beyond the highly skilled or the very limited scope. Just examine the size of video game developer teams. Even an independent game like DwarfFortress has two brothers working closely together.

    43. Re:Nine years of pair programming? by Kellamity · · Score: 1

      Our 'Rockstar' left, and I'm still trying to reverse engineer some of his methods almost year later, to uncover their magic. Lesson learned.

    44. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      But if he can just get more hits on his blog, he can make enough money to quit pair programming forever!

    45. Re:Nine years of pair programming? by Big+Hairy+Ian · · Score: 1

      FFS just include the various coding standards in your "Definition of Done" and provide white boxing tools for verification. To police it grab some sample checkins and run the whitebox tool against them. Kick arse if any fail. Why waste time Pair Programming unless you're mentoring someone and reviews generally turn into a pissing contest about shit that's just not important.

      --

      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.

    46. Re:Nine years of pair programming? by JoeMerchant · · Score: 1

      A lot of this is potato / potato (spoken in different accents). I will often say "programming is not a performance art form" - meaning: get the hell out of my office and I'll have it for you much sooner, and better, than if you stay. I also say this to other programmers as they try to do something in-front of me and I don't have the time and/or patience to "sync up" with their thought process. I will say, there is no way in hell that I, or anyone I know, could show up to the office every morning by 9am, work in a paired team, one "driving" the keyboard and mouse, both looking at the same screen for 3 hours, take lunch, then do it for another 4 hours in the afternoon with a 15 minute break in the middle - 3 days of that and I'll be looking for another placement.

      On the other hand, if you and a partner have sufficient time to tackle a problem together, sitting down together for 1-3 hour stints, 2-3 times a week, can be extremely productive. The first part of the pair time can be spent catching up on progress that was made separately, like a review, but different in that the shared information is work in progress, rather than product to be inspected. Solutions generated should meet both partners' "minimum standards" for readability, maintainability, and other technical merit, and code review becomes a formality of documentation, instead of a pro-forma meeting where the reviewers often tune out, nod and sign. If the 2 programmers instead spend their "pair time" on independent projects and then turn around and do a good quality formal review (including revisions for value-add improvements) of each-other's work at the end, I'd say productivity is about the same.

    47. Re:Nine years of pair programming? by Cederic · · Score: 1

      Yeah, I read all these comments belittling pair programming and claiming to be good enough not to need it. It's a magnificent confirmation that someone isn't as good as they think.

      I've known too many top-end software engineers that don't even think or talk about pair programming, they just do it as a natural thing.

      Collaboration between two skilled individuals can lead to tremendous outcomes. Too few people understand this :(

    48. Re:Nine years of pair programming? by Cederic · · Score: 1

      I really think that pro-pair programming fan boys like the work model because they can point fingers at their pairing partner when things go wrong and deflect responsibility for poor code choices and bugs.

      Sadly I think that's more of a comment on your own attitude.

      A good pair programming experience means there _are_ no poor code choices. There may be choices that turn out to be incorrect but they're made for rational sensible good reasons and can be acknowledged, accepted and treated as such.

      Focus on resolving them, not assigning blame. Fix bugs, and learn how to avoid creating the sames ones in future. Take some personal fucking accountability whether you're in a pair or not, and treat your partners with integrity.

      Is this so hard?

    49. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      Pair programming was the result of the idea of doing Code reviews to the maximum extreme. Next, they will say we should do Pair Programming to the extreme and have everyone looking at the same projector screen. Making things extreme sells books but does not make a good general rule.

    50. Re:Nine years of pair programming? by Grishnakh · · Score: 1

      Yep, this is frequently why I've found it useful to do "pair working" when a problem comes up sometimes: two people can learn from each other in tackling the problem, brainstorming ideas to root-cause it, etc. But it has to be something that's limited, not something you do for 8 hours every day. And it isn't very useful for banging out code; for that I need solitude. So as an occasional practice when a difficult problem comes up, working in pairs I think definitely has value, but not as a regular way of working.

    51. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      i dont see any value in off-shoring and pair programming...

      if you have 5 noobs all programming together no amount of N+1 is going to make that code acceptable.

    52. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      This can't possibly apply to pair programming - as there is only one keyboard.

      With mechanical projects, and with projects where two people can actually be physically contributing (except for speaking and telling the other person they're doing stuff wrong) this may be true - however I don't believe this effect can possibly be true in the case of programming.

    53. Re:Nine years of pair programming? by Anonymous Coward · · Score: 0

      Indian programmers don't want to take responsibility for anything that's why they like to work in a group. No one needs to be accountable when shit code is produced.

    54. Re:Nine years of pair programming? by plopez · · Score: 1

      I was responding to a post made by another person who refernced group programming. So no I did not misunderstand, I knew exactly what as going on.

      --
      putting the 'B' in LGBTQ+
  2. Clever PHBs... by __aaclcg7560 · · Score: 2

    Is that the new name for doubling up in the cubes to squeeze the most performance by square feet?

    1. Re:Clever PHBs... by CrashNBrn · · Score: 1

      Yeah but there is a definite downside - half the time your partner will be coding...

    2. Re:Clever PHBs... by __aaclcg7560 · · Score: 1

      That's better than snoring....

    3. Re:Clever PHBs... by TemporalBeing · · Score: 1

      Yeah but there is a definite downside - half the time your partner will be coding...

      If you read TFA, pair programming typically got skewed so one person was using the computer, typically them ore senior. So...not really half and not sure which person, but one of you will be sitting around while the other does the work.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    4. Re:Clever PHBs... by Cederic · · Score: 1

      "sitting around"? You mean, thinking about the problem being solved, the ways to solve it, the design of the system, the ways to test the code, the edge cases, the potential issues, the possible code approaches and also keeping an eye on the code being written to prevent bugs, bad implementation, laziness or poor practice?

      Yeah, sitting around.

    5. Re:Clever PHBs... by TemporalBeing · · Score: 1

      "sitting around"? You mean, thinking about the problem being solved, the ways to solve it, the design of the system, the ways to test the code, the edge cases, the potential issues, the possible code approaches and also keeping an eye on the code being written to prevent bugs, bad implementation, laziness or poor practice?

      Yeah, sitting around.

      I was just quoting TFA. According to TFA, pair programming should allow both people to use the computer, etc; however, what typically ended up was that only one person would use the computer - the more experienced dominating the system usage, and the other would sit there. Yes they may be contributing in discussion, but they won't be gaining the experience necessary to advance.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  3. There is a third option by Anonymous Coward · · Score: 3, Insightful

    ...and it is rather simple.

    Design > Discuss > Refine > Implement > Run code analysis

    This can be done in any workflow and in pairs. You don't gobble up the time of two team members but you still get to discuss the most important part of the implementation. You can even do a light-weight review afterwards with a check list of practices to focus on.

    1. Re:There is a third option by mtippett · · Score: 2

      +1

      A common issue with code reviews is that the engineer making the change presents the completed implementation and the design *at the same time*. The collaboration early on to ensure a good design or theory of operation really helps cut down on the pain of code reviews.

    2. Re:There is a third option by CodeArtisan · · Score: 1

      +1

      A common issue with code reviews is that the engineer making the change presents the completed implementation and the design *at the same time*. The collaboration early on to ensure a good design or theory of operation really helps cut down on the pain of code reviews.

      Then that's not a code review. Anywhere I worked as a developer, we had separate design reviews that took place prior to the code being written.

    3. Re:There is a third option by david_thornley · · Score: 1

      You may be able to use the same tool for code and design reviews. We do. I like to have other people comment on my proposed design changes on a large project.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  4. Watching someone code drives me insane by sanosuke001 · · Score: 5, Interesting

    Watching someone else code is the most maddening thing. They always seem to take the long way of doing something; use the mouse and doing eight clicks where a keyboard shortcut would do, etc. I do my best to not watch people code when I'm trying to help them. I would have killed someone years ago if I did that full time.

    --
    -SaNo
    1. Re:Watching someone code drives me insane by gstoddart · · Score: 3, Interesting

      There's no way in hell I could function in that close proximity to ANYBODY for 9 years. Not even my wife, and I kinda mostly like her.

      I don't wish to spend my day with someone right up along side me.

      My experience with it is 1-2 hours is the absolute upper bound, and then it's going to turn into two kids in the back seat of a car on a long ride.

      What idiot thinks doing this all day every day would increase productivity?? That isn't a team mate, it's a fucking cell mate.

      --
      Lost at C:>. Found at C.
    2. Re:Watching someone code drives me insane by Kjella · · Score: 2

      Watching someone else code is the most maddening thing. They always seem to take the long way of doing something; use the mouse and doing eight clicks where a keyboard shortcut would do, etc. I do my best to not watch people code when I'm trying to help them. I would have killed someone years ago if I did that full time.

      Same here, it's one thing to discuss structure, interfaces and workflow but pair programming is two people painting a house with one brush. Even a training session with me typically starts with show and tell then handing off simple assignments to work on your own pace. You have the documentation, compiler, you can run it on some test data and I'm often going to outline a solution in the beginning. Even if we're two experienced developers working on it I'd rather play tag team or good developer/bad developer trying to improve or make the code break.

      Personally I find my mental span - that is to say, roughly how much of the solution I can have planned out in my head at once is much bigger if I don't have to chit-chat and explain every little thing. And very often that's how the solutions really come together and work, instead of having bits and pieces that looked okay on their own but just mismatch when put together. Because very often that leads to kludges, that lead to messes, that lead to "there be dragons", that lead to dirty fixes, that turns into an unmaintainable mess. Without falling into the architectual perfection trap, it's amazing how some good design choices keeps the system consistent and much easier to understand.

      --
      Live today, because you never know what tomorrow brings
    3. Re:Watching someone code drives me insane by angel'o'sphere · · Score: 1

      Most projects the last year, where I was involved in coding and not architect, scrum master or dev ops, we did in pair programming. Not 100% of the time, but certainly around 75%
      I doubt there was any way to be faster in those projects. The productivity boost of 'good pairings' os far beyond factor two. If you split the pair, both do individually less than 50% of the work they would do together.

      No idea where this pair programming hate comes from yelled out by people who clearly never ever really tried it.

      Just like the Aikido haters on youtube ;)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Watching someone code drives me insane by phantomfive · · Score: 1

      There's no way in hell I could function in that close proximity to ANYBODY for 9 years.

      Somehow, based on your post history, I believe that lol

      --
      "First they came for the slanderers and i said nothing."
    5. Re:Watching someone code drives me insane by Anonymous Coward · · Score: 0

      So why don't you offer some tips (if you can do it in a non-patronising way)

      "That's interesting - I usually just press Ctrl-Meta-Butterfly to do that"
      "Oh cool, I didn't know that shortcut - thanks!"

      Everyone's a winner then.

    6. Re:Watching someone code drives me insane by JoeMerchant · · Score: 1

      So, I'd say, if you're "coding" a full 8 hours a day, you're probably doing it wrong.

      Some time needs to be devoted to defining the problem (this usually involves talking to people), some time needs to be devoted to research, review of existing code, tools selection, etc.

      Some time needs to be devoted to keeping in sync with other aspects of the project, whether it's other software modules, hardware, whatever.

      Heads down coding, 40 hours per week, will probably result in 20 hours of wasted effort due to insufficient communication with "the customers."

    7. Re:Watching someone code drives me insane by jareth-0205 · · Score: 1

      >

      No idea where this pair programming hate comes from yelled out by people who clearly never ever really tried it.

      Easy, if you're not the sort of person that easily spends extended time with other people then it's going to be something close to hell. Introverted people have to put effort into social interactions, and so will never ever want to spend 8 hours a day interacting with someone else, even someone they really like.

      You don't actually need to try it to know that, it's down to how people are wired interpersonally. I can understand how it might work for some but I'm sure as anything it won't work for me as a default working condition.

    8. Re:Watching someone code drives me insane by Anonymous Coward · · Score: 0

      But one day, you may be the only maintainer that is able to implement some feature or fix some bug that requires specialists with higher domain knowledge of the process but little ability to make the code changes to the product without also having to setup a build, and identify with all your favorite dependancies, styles and everything you enjoy in developing. Because we dont have a budget to pay your time to learn the process and we dont have the budget to spend on the specialist long enough for him to do your job in our workflow....

       

    9. Re:Watching someone code drives me insane by Xest · · Score: 1

      I'd say if you're doing architectural stuff every day that you're doing it wrong. There's no way you should be pratting around with tools selection on a daily basis, and even your customers are unlikely to need to be pestered daily.

      I suspect the problem is you've assumed everyone is working on the type of project you are, you're probably doing some customer facing UI type application like a web page. Not everyone is, some people work on libraries, others on compilers, others on large back end systems. These sorts of projects can very well allow a developer to just concentrate on coding them after the initial architectural description has been devised and a plan made for implementation.

    10. Re:Watching someone code drives me insane by gstoddart · · Score: 1

      LOL .. and I have never claimed otherwise.

      --
      Lost at C:>. Found at C.
    11. Re:Watching someone code drives me insane by JoeMerchant · · Score: 1

      You might be amazed how much "code" that is not web-pages still interfaces with people. If libraries and compilers aren't used by at least 100x as many programmers as the ones required to write and maintain them, I'd call "you're doing it wrong" on the libraries and compilers. I'll grant that "large back end systems" require a lot of effort, and maintenance, but in this case your "customers" are the programmers that interface to the system - and, in a way, the specifications of those interfaces.

      If a coding problem is clearly defined, unchanging, in other words: academic, then there is not as much need to revisit architecture and specifications. But, if that's the case - the problem can be solved, code can be complete, and hopefully there are other problems waiting to be addressed.

    12. Re:Watching someone code drives me insane by david_thornley · · Score: 1

      I can work with other people 8+ hours a day, but not indefinitely. Give me a temporary need that was legitimately not planned for, and I'm fine with doing things differently for a while. Keep me in close, continuous, extended, and long-lasting interaction with other people, and I'm going to have to decide between quitting, killing myself, or killing other people first just because. (There's another option, I guess, which is going into deep clinical depression. I'm not taking that one.)

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    13. Re:Watching someone code drives me insane by angel'o'sphere · · Score: 1

      No one says that pair programming means sitting with the same person for 8h a day at the same PC.
      If one is so introverted that he can not at all work in a team with someone else, he is most certainly is not the 'rock star programmer' as most posters here on /. imply they are.
      Hint: a rock star plays, sings, in a band. He is nothing without the band. Same for programmers.
      If one is so introverted that he can not stand pair programming for 2 hours, he would not stand to be in a software team at all.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    14. Re:Watching someone code drives me insane by Xest · · Score: 1

      "You might be amazed how much "code" that is not web-pages still interfaces with people."

      I don't need to be amazed, because I'm an architect and have worked on many such projects, but the people they're interfacing with are technically competent enough to know what they need - there's no real formula to always get a front end system right first time, but there are plenty of well defined ways of doing back end systems right first time.

      "If libraries and compilers aren't used by at least 100x as many programmers as the ones required to write and maintain them, I'd call "you're doing it wrong" on the libraries and compilers."

      The people writing them are themselves end users though, so (if they're half way competent) they don't need an outside subject matter expert because they are one - at least they should be if they're writing the library and compiler in the first place. Besides, many people don't even use compilers directly now, they use them indirectly through an IDE, and it's really the IDE that matters. The idea of a compiler as just being this individual thing that is only used in one way seems naive, compilers are used in a variety of circumstances even beyond this where users don't even realise compilation is occurring. Case in point we're building right now a system for defining workflows in a visual manner that generates code and compiles it to bytecode so that it performs incredibly fast when executed - the only other people even knowing anything about that compiler will be those of us working on it.

      "I'll grant that "large back end systems" require a lot of effort, and maintenance, but in this case your "customers" are the programmers that interface to the system - and, in a way, the specifications of those interfaces."

      But this doesn't require daily interaction, it's the sort of thing that can be typically well defined up front in a waterfall style way. It's not like a user focused application where you need regular iterative cycles with user feedback to refine it. I've trained people in Agile methods (scrum specifically) so it's not like I'm some old school guy who can't move on, but I do realise that there are vast differences between different projects and some techniques work better than others depending on those circumstances.

      "If a coding problem is clearly defined, unchanging, in other words: academic"

      This is nonsense and I'd frankly question your experience if you think only academic problems fulfil this criteria. When we build systems for major financial institutions it's typical for them to have these systems in place for 10, 20, even 30 years. They don't need anything other than an agreed interface to access the system from the outset and from there on out we simply build it. Some projects simply necessitate (especially given the sums of money involved) that we put in the effort to get it right, and get it stable from the outset. If we built these systems in an Agile manner we'd simply lose all respect and they'd have no confidence, when they're talking about something with a long life time they don't want it to look like we're winging it and figuring it out as we go. We do however sometimes offer additional services, including building user focused front ends that interface with these systems, and in those cases we do use Agile methods, we do constantly get feedback and so on and so forth, these systems aren't going to stay static like the back end for an extended period, they'll either change, or just be outright replaced on a much shorter cycle because front end technology tends to change much more frequently than back end.

      There's a time and place for each and every tool, but you're sounding an awful lot like one of those guys who believes you can and should throw agile at absolutely everything. It's not a silver bullet, in fact, there is no silver bullet. Don't criticise people because you assume they're working on the same sorts of project as you and doing it wrong, there's every chance they're doing it exactly right and that it's merely your assumptions that are wrong.

    15. Re:Watching someone code drives me insane by JoeMerchant · · Score: 1

      You're right, most methodologies do have their place, and there are some programmers who can be productive "coding" 40 hours a week; especially when "coding" includes significant breaks from direct work on the software and doing other things, like posting to /.

      Circling back to the article topic, I think this is what a lot of people hate about pair programming - they do a lot of "stuff" during work that they don't want anyone to know about, they think their management is clueless and that they "get away" with being "off task" because they work alone in a cube with their back to the wall. When they pair up, that is taken from them, especially if they do work under clueless management that thinks that optimal productivity comes from being "on task" 8am to 5pm every day.

    16. Re:Watching someone code drives me insane by Xest · · Score: 1

      Yep, don't get me wrong I'm not suggesting that devs can code 40 hours a week solidly, I think they'll always need some kind of break and I agree that this sort of environment can deprive them of that.

      Ideally devs would just work 30 - 35 hour weeks so that when they do work they're working with fresh minds to write better software in probably less overall time, but unfortunately we're still completely stuck under this archaic Victorian work ethic where too many people view a good worker as one that puts in the hours still, rather than one that churns out the goods to the best quality in the least time.

    17. Re:Watching someone code drives me insane by JoeMerchant · · Score: 1

      Have some hope - I've been encountering more and more people in management who actually "get it" that telling somebody in a creative position to keep their nose to the grindstone longer isn't helping anyone.

      15 or so years ago, I had to stand up for an EE under my charge when my management went off on him for "just sitting around reading magazines" the last 30-40 minutes of the day. Those magazines were trade journals, and in that day and time that was how you stayed current with available technology and designed the best solutions for your problems, where today you might browse the internet. Of course, my management was the traditionalist Rush Limbaugh consuming idiot type who was mostly concerned about covering his own ass for not being able to find investors or move product - since the engineers had already delivered on their promises but he had yet to deliver on any of his...

  5. Ensure quality? by fahrbot-bot · · Score: 1, Troll

    This required us to do code reviews to ensure the quality of the code we delivered.

    Ensure quality - that's adorable.

    --
    It must have been something you assimilated. . . .
    1. Re:Ensure quality? by Darinbob · · Score: 1

      I am highly annoyed with code reviews, because people really aren't doing them. I find all sorts of bugs that should be caught by any cursory code review but they sneak past. I think most people just say "yup, looks ok, does the job, pass" without spending any meaningful time scrutinizing the code. Then I end up seeing the code and feel like an ass if I ask people to change it after it's already been done. Especiallly with things that work, aren't bugs, but just violate a lot of other common sense things (wasteful of memory on a small system, using the polar opposite of the group's coding standards, etc).

    2. Re:Ensure quality? by fahrbot-bot · · Score: 1

      I have found code reviews to be more about conformity and coding to the lowest common denominator than code "quality" (whatever that actually means). When there's complex and/or sophisticated code involved, even with in-line commentary, unless the reviewers are near, at or (preferably) above the skill/experience level of the coder, the exercise turns into either (a) a coding lesson or (b) directives to dumb it down -- and this doesn't usually help if you're the most experienced one. I don't mind the mentor in these cases, but more often than not, the others don't really care and have other things to do...

      I imagine that the above is a result of the process being implemented "wrong", but I've worked several places where it's like that.

      P.S. Whoever modded my initial post as "troll" obviously doesn't understand the truth buried within my snarky statement: Code reviews don't ensure quality.

      --
      It must have been something you assimilated. . . .
    3. Re:Ensure quality? by Anonymous Coward · · Score: 0

      I have found code reviews to be more about conformity and coding to the lowest common denominator than code "quality" (whatever that actually means). When there's complex and/or sophisticated code involved, even with in-line commentary, unless the reviewers are near, at or (preferably) above the skill/experience level of the coder, the exercise turns into either (a) a coding lesson or (b) directives to dumb it down -- and this doesn't usually help if you're the most experienced one. I don't mind the mentor in these cases, but more often than not, the others don't really care and have other things to do...

      I imagine that the above is a result of the process being implemented "wrong", but I've worked several places where it's like that.

      P.S. Whoever modded my initial post as "troll" obviously doesn't understand the truth buried within my snarky statement: Code reviews don't ensure quality.

      Do you know what was emphasised the most during my education relating to programming? Readability which leads to maintainability. In 5-10 years down the line when your current programming language of choice is now a relic like FORTRAN and the likes today, complex and/or sophisticated code is going to make maintenance a nightmare. Your code should be as simple as possible while maintaining the desired performance. Overly complex or "sophisticated" code can introduce hard to find bugs and can make debugging a nightmare.

    4. Re:Ensure quality? by just+another+AC · · Score: 1

      coding to the lowest common denominator than code "quality" (whatever that actually means). When there's complex and/or sophisticated code involved, even with in-line commentary, unless the reviewers are near, at or (preferably) above the skill/experience level of the coder...

      Reminded of the various quotes along the lines of: "I write a long letter because I don't have time to write a short letter"
      "Anyone can write complex code, it takes a good coder to write simple code to complex problems"

      Your job is to do what your company employed you to do. So your attitude could be correct, depending on your job.
      Are you paid to develop code that will never be maintained? (eg R&D where you work only on prototypes?)
      Or does your company pay you to develop code that can be maintained and improved for the entirety of the product life cycle?

      If you are in the latter category and can't clearly explain your code to your co-workers, then you are not doing your job because your code is not maintainable in your absence. It needs to be understandable by at least the "next most experienced" person under you.

      A good in line comment gives enough information for the more inexperienced programmers to join the dots (eg names of algorithms they can google to learn the approach, links to examples of the same approach, etc). You don't need to teach them, but you need to leave enough clues so people know what you are doing and can teach themselves if they don't.

  6. Code Review Pair Programming by i_ate_god · · Score: 4, Interesting

    A proper peer review process is far superior. Review your plan with your teammates. If you're working with components that others work on, make sure they are part of the plan review. Once all questions are answered, put your headphones on and go forth and code. Rely on unit tests to catch the obvious problems, rely on integration tests to catch less than obvious problems, rely on QA to catch what your integration tests miss. Use linting, static code analysis, and other tools like Sonarqube to identify potential problems within your code that may not manifest themselves under day to day usage. Voila...

    Is it perfect? Of course not. Will your software be 100% bug free? Of course not. It also doesn't solve problems related to lack of intelligence or experience amongst your teammates, and it doesn't solve problems related to lack of foresight from management who impose impossible deadlines or who close deals with customers that include features which don't exist. But the team will still be more productive than if they had to share computers and work in pairs. Programmers need focus and pair programming will ruin any focus you could have.

    --
    I'm god, but it's a bit of a drag really...
  7. Re:I code best while getting a BJ. by Anonymous Coward · · Score: 0

    I don't know if I could handle that. Does the dude's beard scratch your balls?

  8. "Pair Programming" by Anonymous Coward · · Score: 0

    *What a nightmare.*

    I'm glad I don't work in your hipster Gulag. The idea that someone is going to be sitting next to me, breathing through their mouth while watching every correction and backspace I make is positively frightening.

    You want to review my code when I check it in, I have no problem with that, but stay the fuck out of my personal space.

    1. Re:"Pair Programming" by Locke2005 · · Score: 1

      Unless she's blonde and large breasted, in which case... yeah, productivity suffers either way.

      --
      I've abandoned my search for truth; now I'm just looking for some useful delusions.
    2. Re:"Pair Programming" by david_thornley · · Score: 1

      Actually, I can work together pretty effectively with my wife.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  9. Nine years? Where? by xxxJonBoyxxx · · Score: 1

    >> I've spent nine years working in teams which religiously follow pair programming

    I've been in software development for 18 years and pair programming has always sounded like a myth to me - I've never actually met anyone doing it for anything other than learning a new technology.

    >> required us to do code reviews to ensure the quality of the code we delivered

    Hell, at half the places I've worked code reviews were considered an unnecessary luxury. These days I'm just happy to hold the line at TDD - the tests pass in a reasonable amount of time, everything gets checked in and you move on to the next item on the list.

  10. Re:Nine years? Where? by 110010001000 · · Score: 1

    Short answer: India. Longer answer: Bangalore, India.

  11. Code Reviews vs. Pair Programming by Anonymous Coward · · Score: 0

    FIGHT!

  12. XOR? by jimbo · · Score: 1

    Any designs and code developed in my projects is going to get peer reviewed, whether pair programmed or not.

  13. Re:Code Review Pair Programming by Anonymous Coward · · Score: 0

    > A proper peer review process is far superior.

    No, a review process is useless. Proof: stagefright, where security holes and multiple (4 I think) incorrect attempts to fix them went through the code review process.
    You need actual code reviews for it to work, not just the process where someone has a 20 minute sleep while having the review page open and then presses "approved". The latter is what actually happens in most companies.
    How do you spot companies where code review doesn't work?
    In my experience, just ask if they have commit emails with actual diffs of the changes. Because that is the only high-throughput way to get a basic level of code-review (by itself it is not a very reliable method though). If they only use tools they most like will end up with the code reviews not actually being done (beyond clicking the button or whatever is needed to make the tool happy) whenever the pressure to release/fix/whatever gets too high.

  14. Peer review is best by Anonymous Coward · · Score: 0

    A regular peer review process or design, implementation, unit test, and results is what you want. The less ambiguous the standard you inspect to, the better. You should inspect to the standard C++ (or whatever language you use) best practice literature. Meyers, Sutter,...

    There might be a place for pair programming for onboarding new/young people who don't know anything.

  15. Count me out by Hognoxious · · Score: 0

    Sounds as bad as pair sex.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:Count me out by mwvdlee · · Score: 3, Funny

      You prefer peer review or test-driven?

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    2. Re:Count me out by angel'o'sphere · · Score: 1

      Peer review is a must regardless if you develop test driven or not.
      How do you make sure a test tests what it is supposed to test without a review?

      I can certainly crank out 100 tests per hour that all are green and test nothing of any meaning.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    3. Re:Count me out by Hognoxious · · Score: 2

      If you haven't been to the range for a day or two than yellowish is OK.

      You should see a doctor.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    4. Re:Count me out by mwvdlee · · Score: 2

      I guess if you crank out a 100 per hour, all green is somewhat to be expected.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    5. Re:Count me out by david_thornley · · Score: 1

      I always felt that writing my own unit tests was cheating. I'm happier when they're written by somebody else who thinks they understand what we're doing.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  16. Collaboration by milgner · · Score: 3, Informative

    This happens in pair programming when the entire team is sitting in one place and conversations can be overheard

    I wouldn't know a better way to destroy productivity than having people pair programming in a public space. How is anyone supposed to concentrate on their work or their coding partner while listening to the conversations of everyone else in the room at the same time?

    1. Re:Collaboration by Anonymous Coward · · Score: 0

      I suspect that work environment would work very well for the extreme extroverted programmer, though not for a more introverted programmer.

    2. Re:Collaboration by Anonymous Coward · · Score: 0

      Simple, don't listen to the conversations of everyone else in the room. It's called "focus" and is a skill many people seem to have forgotten.

    3. Re:Collaboration by Anonymous Coward · · Score: 0

      When I worked at a major game company that shall remain nameless, I was in a room with about 60 people and their dogs. One day the CEO breezed through with a group talking about "energy flow", and a couple weeks later they added another 30 people to the space... despite having acres of empty space in their gigantic, ridiculous building.

      Apparently energy = noise. It was fucking awful in there, even with headphones. The sad thing was looking around and seeing everybody with headphones on, trying to drown out the "energy" so they could think. The code showed it. That room full of mostly brilliant people were churning out absolute shit code. I left 2 weeks later.

      Almost all meaningful interactions were done over IM. The energy thing may be great for artists or QA, but it absolutely destroys engineering.

  17. Not big on pair programming but by Copid · · Score: 2

    ...pair debugging can be great. Two people looking at the same code and same test output at the same time can go back and forth designing tests and interpreting results really effectively, especially if the bug is at the intersection of two modules that you're reach responsible for. Of course, you don't spend all day every day debugging or something has gone very wrong wrong.

    --
    An interesting anagram of "BANACH TARSKI" is "BANACH TARSKI BANACH TARSKI"
  18. Re:Code Review Pair Programming by Anonymous Coward · · Score: 0

    Agree. We use both. Pair programming + 2 code reviews. Pairs test and review each others code. Then there is a final review. Works, but still have bugs.

  19. Pair programming is like tandem bicycling by Tony+Isaac · · Score: 4, Insightful

    There might be times when it's nice to have the second person helping pedal up a long hill. But you're certainly not going to double your speed or your stamina with two people on one bicycle.

    Pair programming is like that. There are specific situations where it's useful, especially when you're dealing with a tricky algorithm or intricate business requirements. But much of the time, the second person is just dead weight.

    1. Re:Pair programming is like tandem bicycling by Anonymous Coward · · Score: 0

      Your tandem riding experience does not match mine. An extra person helps everywhere _but_ going up hill. To get a tandem up a climb works well with an extreme level of team coordination. I've been with racers and dancers, and the bike goes up much faster with dancers because of the dancer's skill in tuning into another.

    2. Re:Pair programming is like tandem bicycling by angel'o'sphere · · Score: 1

      What is right for mechanical work is not right for mental work.

      Pairing mental workers usually increases their performance by factors of three to five and often more.

      The key term is: synergy!

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    3. Re:Pair programming is like tandem bicycling by Anonymous Coward · · Score: 0

      Training newbie developers and encouraging better coding techniques are pretty much the only time we do pair programming.

    4. Re:Pair programming is like tandem bicycling by Hognoxious · · Score: 1

      Pairing mental workers usually increases their performance by factors of three to five and often more.

      We should try quadding[1] them then. Will that make their productivity go up by six to ten, or by nine to twenty-five, or some other number?

      Feel free to pull a figure out of your arse. You should be able to remember where it is.

      [1] it is now.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    5. Re:Pair programming is like tandem bicycling by gweihir · · Score: 1

      Only if their productivity and result quality is exceptionally bad in the first place. In that case, it is still bad when increased 3-5 times and basically the only thing you can do with the results is throw them away. It is the cheapest option.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    6. Re:Pair programming is like tandem bicycling by angel'o'sphere · · Score: 1

      On what basis do you judge that?
      I guess you have only a gut feeling, and that is wrong, or at least contradicting my real life experience.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:Pair programming is like tandem bicycling by angel'o'sphere · · Score: 1

      I think after three or four it usually flatlines.

      Better make two or more teams if you need it.

      No need to be sarcastic, btw. Just ask some of your friends who make music or other art about that matter.

      You do have friends? Or? My apologizes ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    8. Re:Pair programming is like tandem bicycling by gweihir · · Score: 1

      Sorry, but the only response that deserves is that I think you have no clue either. And I do that with about as much basis as you have for your statement, namely none. "Real life experience" only has worth if you have a clue and most people are exceptionally good at kidding themselves, in particular where their own limitations are concerned.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    9. Re:Pair programming is like tandem bicycling by angel'o'sphere · · Score: 1

      Dude,

      Pair programming was invented and made popular by people who basically only worked in rock star environments, where every programmer is a pretty skilled one.

      And, sorry: that are the environments I work in.

      If you can not pair with one and have not a more than factor 2 speed up then a few things come to mind:
      a) none of the pair is a superior programmer, but likely far below average
      b) one or both are sociopaths
      c) one or both of them can not communicate clearly
      d) and c) implies they have a mind that is not able to grasp the topics they are "programming about" and hence can not word it, like "I consider to use pattern X here"
      e) you are shy to show your code
      f) you are shy to show how badly you handle the IDE
      g) you are shy to sow what you have to look up on stackoverflow or google for

      Basically, if you are not able to pair with another "good programmer" and are not able to produce more solutions (not lines of code), less bugs more docu etc., than you and he could alone, then: you are likely moved into a less exciting team or fired.

      Your attitude and the point why I say it so is: your attitude reflects your lack of knowledge, wisdom and insight, your attitude makes you basically un hire able if I was to run the interview.

      e), f), g) are points where your pair could help you. Then there are all the cases where you two look at the spec and you think "it goes this way" and he thinks "it goes that way". Happened never to you? Sorry, happens all the time. I really don't want to know how many bugs you produce per year which needs fixing, or even get shipped and need fixing later. Most of that could be avoided by pair programming.

      However, you are a knight in shiny armor who never produces or ships a bug ... I know, I know, everyone claims so. The bugs are always someone elses fault.

      Ah, worst of your argument: ditching someone else's RL experience :D That really makes no sense at all. All books you read about programming are based on RL experience of said authors. Erm, you once or twice have read a programming book?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  20. People work differently by Anonymous Coward · · Score: 1

    First of all, there is no "best" practice on this. For some people, pair programming is a horrible experience, but for others it is a great one.

    Second, not all code reviews are the same. Code reviews the go line by line are not productive - it is too close up a view. What is better is a design level discussion, where the programmer makes arguments for the things that matter about the feature, e.g., an argument that the feature extensible, or testable, or reliable, or secure, or maintainable, or whatever - that gives people a tangible set of criteria to discuss the design; and by "design" I don't mean some big up front architecture - I mean the actual as-built design, which the programmer should be able to explain and wither draw a diagram for or write pseudocode for - or else he/she is just a hack.

  21. Maybe it's the name that's throwing people? by Anonymous Coward · · Score: 0

    On one team, we did pair programming, but we didn't call it that. Instead we called it "real time code review." Turns out if you review while the code's being written it takes a LOT less time and gets the benefits of thorough reviews too.

    1. Re:Maybe it's the name that's throwing people? by Locke2005 · · Score: 1

      Peer review of code is worthwhile. Watching someone else type is kind of a waste of my time.

      --
      I've abandoned my search for truth; now I'm just looking for some useful delusions.
    2. Re:Maybe it's the name that's throwing people? by Cederic · · Score: 1

      Watching someone else type is kind of a waste of my time.

      Sure, but what's that got to do with pair programming?

  22. religiously? by umghhh · · Score: 1

    Fuck if that makes sense. I do not see why I should follow anything religiously. Religion maybe, but even here you should use brain not to get abused by the truths dispensers trying to rob you or put their dick where it does not belong (and I say it not as a faith hater, neither I am religion hater). You use what suits you best and what you can use in a team. Pairs are good for some combinations of people, tasks and organisations. Sometimes other ways are better. A review of a document may or not be done (on top or not) - whatever is suitable. That religious following is what burnt scrum for me. This and abuse by managers that thought of it as a best method of getting rid of responsibility while getting bonus for removing project and system management. I think that is the same as what communists did - forced everybody to do the same and in the same way. It has to fail. Then as long as company achieves profits and can pay my salary I do not give a flying fuck - they tell me to do my job in the toilet then nobody will be able to use it - perfect, why should I care.
    After all these years in software development and around, the only tool that I see as vital is rhetoric skill, used to tell managers what I think without abusing them verbally and in a way they can understand. They pays handsomely to use and is immense fun to watch them realize how big a cluster fuck they managed to cause. As with everything else (including pair programming and code review) use with care.

  23. I do pair programming all the time by davidwr · · Score: 1

    A pair of eyes, a pair of hands, a pair of monitors, a pair of ....

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  24. Re:Code Review Pair Programming by i_ate_god · · Score: 1

    > No, a review process is useless.

    then

    > You need actual code reviews for it to work,

    I'm not sure what you're getting at.

    The last two jobs I've done had a review process where all commits to the RCS resulted in a notification sent to the entire team, and was expected to be reviewed by two or more people.

    One nice thing about this approach as well, better architecture. Not because of someone's review, but because the review process works far better when commits are small. Keeping commits small helped to improve modularity of our code, since 98% of the time we expect each commit to result in software that can be built (we did everything in our powers to avoid committing changes that would break a build).

    --
    I'm god, but it's a bit of a drag really...
  25. He seems to consider agile as normal too by Anonymous Coward · · Score: 0

    Major Stockholm Syndrome case here...

    1. Re:He seems to consider agile as normal too by gweihir · · Score: 1

      Indeed. And no understanding what a good result actually looks like.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  26. Team Reviews are far superior by Ckwop · · Score: 4, Interesting

    In our organisation, we have teams of six people that work together on their sprint. QA staff are included in this team.

    On major features, the team code reviews the feature together in a special session. Roles are assigned. The author is present, a reader (who is not the author) reads the code. There is an arbitrator who decides whether a raised issue gets fixed. This arbitrator role is rotated through the team on an inspection by inspection basis. Finally, there is a time keeper role who moves the conversation to a decision if one topic is debated for more than three minutes.

    This process typically finds a humongous number of issues. It takes us about 4 hours of applied effort to discover a bug in pure functional testing. This process discovers bugs at a rate of 1.25 bugs per man hour of applied effort. So if you have five people in a room for one hour, you have applied 5 man hours. You'd expect to find 6-7 bugs. If you include all the stylistic coding standards bugs, this is typically 10-15 bugs per hour.

    So while on the surface it looks expensive to have all those people in a room talking. The net result is that it tends to accelerate delivery because so many issues are removed from the software. Better still, the review occurs before functional testing begins. This means the QA staff on the team can direct their testing at the areas highlighted by the inspection process. This further improves quality

    It's true that about 50% of the ossies are stylistic issues. But usually we get 1 or 2 bugs per session that present a serious malfunction in the program. The rest could be problems under some circumstances or minor faults.

    Team reviews are vastly, vastly superior to pair-programming. There really is no contest.

    1. Re:Team Reviews are far superior by 110010001000 · · Score: 2

      You sound like a bean counter, and your organisation sounds like it is hell to work in. 1.25 bugs per man hour? Christ.

    2. Re:Team Reviews are far superior by Ckwop · · Score: 3, Interesting

      You sound like a bean counter, and your organisation sounds like it is hell to work in. 1.25 bugs per man hour? Christ.

      Well I'm the head of development at our place so I inhabit both worlds. Businesses like to measure return on investment. By being able to speak that language, I can generally frame activities developers naturally want to do in those terms. This leads to developers getting more of what they want.

      You know what developers really, really, really hate? Having to work with technical debt and having no process to remove that technical debt because the program is now "working".

      The best way around technical debt is not to put it in to the program in the first place. This process does a sterling job at that. So our developers are generally a pretty happy bunch.

    3. Re:Team Reviews are far superior by 110010001000 · · Score: 0

      Please mention the place so I never get into a mile of it. How would of Linus have created Linux without people like you? Didn't he understand the technical debt he was creating? He could have been finding bugs at a rate of 1.25 per applied man hour instead of actually creating something useful! Silly man. You process guys are useless.

    4. Re:Team Reviews are far superior by Ckwop · · Score: 1

      Please mention the place so I never get into a mile of it. How would of Linus have created Linux without people like you? Didn't he understand the technical debt he was creating? He could have been finding bugs at a rate of 1.25 per applied man hour instead of actually creating something useful! Silly man. You process guys are useless.

      I find this example really odd because Linux is built around a process of a huge amount of code review. They do it differently because they're a distributed team but they absolutely have a rigorous code review process.

    5. Re:Team Reviews are far superior by 110010001000 · · Score: 0

      I'll bet you do find it odd. Do you think Linus tracks metrics like "bugs found per applied man hour"? Does he do "sprints"? Is he "Agile"? No, he writes codes and reviews code submitted to him. In the beginning he did it all himself (I know! Shocking!). You are everything that is wrong with software development today. Don't forget to send in your TPS report before you clock out.

    6. Re:Team Reviews are far superior by Anonymous Coward · · Score: 0

      No offense meant, honestly, but your place sounds miserable to work at. It's not the process, but the ridiculous level of formalization and standardization. With just how you speak of it, it sounds soul crushing. The arbitrator, the time keeper? I mean, we have these roles, but they're not officially assigned. Usually it's more people start arguing and somebody says "how about we take it offline and keep moving?" We don't need an official role. As for who's going to take notes, that's usually settled through a quick round of moose. And any place that has enough issues with "coding standards" is usually dysfunctional at a very basic level. Unless it's seriously bad, like a 200 character line or variables name 'a' and 'b', if people are getting bent out of shape about style, I can almost guarantee these are people I don't want to work with.

    7. Re:Team Reviews are far superior by Ckwop · · Score: 2

      No offense meant, honestly, but your place sounds miserable to work at. It's not the process, but the ridiculous level of formalization and standardization.

      Code inspections work best when they're formal with clearly defined roles and clear reporting steps. There have been large scale studies done that confirm this. The research fed in to the development of the Cleanroom methodology pioneered at IBM.

      The less formal the structure, the less well it works.

      One of my big bugbears with software development as a craft is our failure to really learn from experience. There were lots of studies done on the craft from decades ago that cleanly establish these basic principals. We choose to ignore them because developers feel they know better than published research.

      The truth is that people suck at writing software. Even the very best developers in an organisation are not as a good a team of lower quality people that inspects their own output. Teams > individuals.

      Honestly, it isn't as corporate as it first appears. Once the roles are defined, the work turns to inspecting the source. It takes a few seconds to cover off that part of the meeting and from there the real work begins.

      There are other benefits

      One is that everyone has read everybody's source. There's none of this "Only Bill knows that piece of code." The whole team knows the code very thoroughly.

      Another is that relatively junior people end producing code just as solid as person with 25 years experience. They end up learning a lot on the way. Do not estimate the tremendous power of that.

      My teams enjoy the process and they certainly enjoy not getting as many bugs coming back to bite them in the future when the feature is out in production. Once they're done, they tend to be done and are free to move on to the next feature.

      The benefits of having a cleaner code base, fewer issues and more accurate delivery times has a huge affect on morale.

    8. Re:Team Reviews are far superior by byteherder · · Score: 1

      Finding 1.25 bugs per man hour is impressive. If we did that, we could ship a bug-free application every week (just kidding), the code fixes usually take longer the 1.25 hours. But seriously, we have find around 30-40 bugs per release so if we could spend 24-32 man hours to find all the bugs, I would be thrilled.

      Now if Microsoft would lock all their developers in a room for a year, we could get a stable release of Windows.

    9. Re:Team Reviews are far superior by Anonymous Coward · · Score: 0

      When I look at the list of 100 bugs found by a single tester in my team, who is not busy having review meetings and counting metrics, in a week, I laugh at these numbers. Sometimes I think a lot of software processes are held up as improving quality not because they actually work, but because the reduced productivity makes the quality metrics look better.

    10. Re:Team Reviews are far superior by Ckwop · · Score: 1

      When I look at the list of 100 bugs found by a single tester in my team, who is not busy having review meetings and counting metrics, in a week, I laugh at these numbers.

      If your tester is finding 100 bugs a week, you're doing it wrong. Your underlying quality is much too low. It's much more expensive to find a bug by functional testing than by code inspection. This is because all those bugs need to be fixed and retested. This usually requires a rebuild and other ancillary tasks that drive up cost.

      Worse, it's usually a geometric progression with this kind of pattern in that for every hour spent bug fixing, there's a ratio of new bugs introduced that have to be removed by the process. This process repeats until the defect count is acceptable. Even with a relatively low co-efficient of bug introduction, the geometric series usually adds 20-30% additional cost to the development.

      Sometimes I think a lot of software processes are held up as improving quality not because they actually work, but because the reduced productivity makes the quality metrics look better..

      This comes back to my earlier point on people ignoring published research because they feel they know better. Do you know there's actually properly controlled scientific trials that actually establish the truth of what I'm saying? Why is your thought superior to this research? Why is this research defective?

    11. Re:Team Reviews are far superior by Anonymous Coward · · Score: 0
    12. Re:Team Reviews are far superior by phantomfive · · Score: 1

      That's really great, how did you find out about this stuff?

      --
      "First they came for the slanderers and i said nothing."
  27. Re:Code Review Pair Programming by 110010001000 · · Score: 1

    "and was expected to be reviewed by two or more people" That is the crux there: it was expected to be reviewed. But was it reviewed? Who knows?

  28. Software development has become idiotic... by javabandit · · Score: 4, Insightful

    ... I swear. Lean, SCRUM, XP, Agile, Waterfall, Kanban, Scrumban, TDD, BDD, Pair Programming, Code Review, User Stories... etc... etc... etc.

    How about just be a responsible craftsman, understand the customer's requirements and needs, and implement your solution responsibly and with integrity? Whatever that means. If you need to pull someone in, then do it. If you don't, then don't. Christ, how complicated is this? It's one thing to be a junior developer and having to learn things. Fine. But an experienced software developer should not require constant canoodling to get their job done responsibly, with integrity, and with good quality. Is it really that hard?

    I'm from a pretty old-school programming upbringing -- back when you were a "Programmer" or "Analyst" or "Programmer/Analyst". I'll tell you in those days... if a programmer demanded this kind of ridiculous hand-holding, canoodling, and process-implementation to get their job done... they would be fired. Plain and simple. This industry has become awash with process and tool zealots... while knowing the customer's needs be damned.

    1. Re:Software development has become idiotic... by 110010001000 · · Score: 1

      What a shocking concept! You mean actually, you know, write code? What is your bug finding rate per applied man hour? What? You don't know?

    2. Re:Software development has become idiotic... by Locke2005 · · Score: 1

      Refactoring is something experienced programmers just naturally do, when they are given a chance. And actually having developers talk to each other occasionally is actually a good idea. Peer review is a pain but does improve software quality. User stories... only useful for writing software tests. The concept of writing the tests first is actually a good idea; too bad I've never seen it done. Most of the eXtreme Programming stuff does strike me as a bullshit waste of time, but Pair Programming is the thing I absolutely, positively refuse to do. I can type a lot faster without someone looking over my shoulder.

      --
      I've abandoned my search for truth; now I'm just looking for some useful delusions.
    3. Re:Software development has become idiotic... by angel'o'sphere · · Score: 1

      I don't get why you are riding on 'bugs found per man hour' since ten posts when the parent only wanted to make an example about 'when grouping up experts into one room for one task' has synergetic effects and the speed increae they solve the problems is higher than linear.
      No one in the industry us measuring 'bugs found per man hour'. If we measure then we measure 'bugs introduced per man hour'. And probably we have to overlapping graphs of bugs discovered per sprint and bugs solved per sprint. And obviously: currently total open bugs.

      If that was not clear for you: you should witch business. All your posts regarding 'bugs found per man hour' are completely useless trash.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Software development has become idiotic... by Yunzil · · Score: 1

      Look man, we can't do anything unless there's a trendy buzzword name for it.

    5. Re:Software development has become idiotic... by Anonymous Coward · · Score: 0

      32 quafoms per diddlefark.

    6. Re:Software development has become idiotic... by Greyfox · · Score: 0

      Ah but what you're missing is that they don't hire experienced developers. Those are expensive. You're not going to find a crusty old guy who takes pride in his work and who can crap out an assembly language interrupt handler in his sleep on those teams. They're hiring guys who are willing to take a third of what that old guy makes fresh out of college and throwing them out like a used Kleenex just as they start to build up some domain knowledge in the industry. And the managers in those teams are no better -- quite willing to allow their teams to keep getting distracted by the shiny framework of the day (What is it currently? NoSql? Elastic Search?) and never actually coding a useful feature. The only way to get anything out of a team like that is to lock them all in the same room where they have no choice but to look like they're actually working. And since the manager's so bad at requirements gathering, you may as well lock the customer in the same room so he can tell you what he wants while you're writing it.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    7. Re:Software development has become idiotic... by gweihir · · Score: 1

      Naaa, craftsmanship and actual competence is something the MBA bean-counter morons cannot understand (as it involves the real world) and hence it is dead.

      When I look what the younger generation is learning today, I expect that I will have a job writing actual good code far over my retirement-age, because most of them sure as hell cannot do it.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    8. Re:Software development has become idiotic... by Kwyj1b0 · · Score: 1

      If that was not clear for you: you should witch business.

      I placed a curse on my employer. I think it worked because they lost a lot of money and fired my entire group.

    9. Re:Software development has become idiotic... by Anonymous Coward · · Score: 0

      How about just be a responsible craftsman, understand the customer's requirements and needs, and implement your solution responsibly and with integrity?

      Because then the PHB managers wouldn't be able to put a bunch of new bullet point goals in their annual review lists.

    10. Re:Software development has become idiotic... by Anonymous Coward · · Score: 0

      This industry has become awash with process and tool zealots... while knowing the customer's needs be damned.

      Which shows how hilariously ignorant you are of agile, as these are the problems it aims to avoid.

    11. Re:Software development has become idiotic... by Anonymous Coward · · Score: 1

      Okay. I'll bite.

      How can you make sure that you actually are a responsible craftsman? As much as I dislike fads and methodology-du-jour, these methods are all meant to be solutions (Some better than others) to specific problems. What solutions can you offer to actually get the job of making good software done?

      I assume you don't write a new language and IDE for each project. You stick with what you know and what works. These methodologies try to do the same but on a more organizational level : give you a standard interface to different domains (QA, debugging, design, resource management) in the project.

      But I do agree on the point that a good developer should take the responsibility to make good solutions and that methodologies should not be used to circumvent that responsibility. Just like most developers I know tend to tweak their own IDE and tooling, I expect developers to test, tweak and update their own methodologies.

  29. Re:Code Review Pair Programming by i_ate_god · · Score: 1

    well, at Job 1 it was hit or miss, but at Job 2 we have a formal code review tool: https://www.reviewboard.org/

    So yes, you do know who reviewed what, and whether or not they give their seal of approval.

    now I'll admit that someone can just mark a review as fine without having read it, but as I said, nothing is perfect. Our process could certainly be improved more if we used a Github-style way of managing code (pull requests and all that) but since we use SVN and do all our work on the master branch it won't happen. I've fought for it but was the counter argument was that the team is not large enough to justify that kind of workflow. *shrug*

    --
    I'm god, but it's a bit of a drag really...
  30. Re:Code Review Pair Programming by mwvdlee · · Score: 1

    It's pretty easy to require formal sign-offs by reviewers.
    In fact, that is how it's done in most mature IT organizations.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  31. Re:Code Review Pair Programming by 110010001000 · · Score: 1

    Yeah, I use reviewboard as well. I like it, and I hate reviews, but it works.

  32. Re:Code Review Pair Programming by 110010001000 · · Score: 1

    I think the OP point was even with signoffs it doesn't mean any review was actually done.

  33. Re:Code Review Pair Programming by mwvdlee · · Score: 1

    Maybe not, but the reviewers' ass is on the line for bugs found that his review should have caught.
    Skim over reviews too many times and it's bye bye.
    Doing a bad job should have consequences.
    Though I admit that might not work in smaller organisations.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  34. Pair programming is stupid by Locke2005 · · Score: 1

    Unless you're training a junior programmer, pair programming is stupid. Having two competent programmers work together is wasting valuable time. Peer review is a necessity, but it can be pretty informal, shoving several people in a room together to go over code line by line is probably a waste of time to. Better to sent out emails with a list of files saying "Review these files and fill in a spreadsheet with your feedback", then have a meeting to discuss which feedback to ignore. Unfortunately, projects always start out with the intention to do reviews, but then reviews are the first thing to be abandoned when the schedule gets tight. Does pair programming prevent that?

    --
    I've abandoned my search for truth; now I'm just looking for some useful delusions.
  35. Re:Code Review Pair Programming by 110010001000 · · Score: 1

    In my organization you get one chance. If you miss a bug that should have been caught, you get fed into the shredder immediately. It keeps us on our tows. I mean TOES..aargghh

  36. Technical debt by Locke2005 · · Score: 2

    Case in point: I'm maintaining HP printer firmware. Do you have any idea how resistant they are to fixing bad design decisions made long ago by people that no longer work here? The code is the result of decades of band-aid fixes... and it shows.

    --
    I've abandoned my search for truth; now I'm just looking for some useful delusions.
  37. Re:Code Review Pair Programming by Anonymous Coward · · Score: 0

    Your plan, while certainly useful, does nothing to build good coding practices or encourage actually writing good code. It's not a code review or peer programming, it's the basics of working in a real team on a software project.

  38. It depends on gender by Anonymous Coward · · Score: 0

    For women : pair programming.
    For men : code reviews.

  39. Pair sysadminning by Lorens · · Score: 1

    Pair sysadminning is something I have actually done, and that has its uses. The guy who knows most has the keyboard, and the other guy has one finger tracing the manual's instructions, as well as a notebook where he writes down what happens and why, especially including things that won't be in the terminal session script like "I'll correct that later" or "This value should work, let's check".

    But nowadays with Infrastructure as Code and Network as Code and what have you, you check your sysadminning code into git and you do reviews on it!

  40. Is this done in the first world? by Anonymous Coward · · Score: 0

    Is this done in the first world (US, Canada, Europe) or only in Asia or the third world? I can understand willing to fork out the extra bucks to have two people do the job if you are getting them at a cut rate. But, it you are paying first world rates, who is going to pay double to get the output of a single developer?

  41. We are engineers, not monks! by luis_a_espinal · · Score: 1

    I've spent nine years working in teams which religiously follow pair programming.

    That is one clusterfuck of a professional experience. To me this tells me a lot of work in those years constituted code monkeying.

    For starters, we are engineers. We are supposed to use general principles to solve real world non-trivial problems. This implies a need for adapting processes to issues at hand. Professional discretion is required when performing activities. Following something religiously gives me the notion of people going through the emotions by orders given from above. Good way for herding cats (or to control damage done by a workforce of mediocre skills.)

    Now, seriously - who does just coding? As we mature in this industry, our roles takes us progressively away from the keyboard. We have to go meetings, we have to review requirements, we have to bug triage, we have to review documentation, we have to review test cases, we have to lend a hand to product support, we have to get engaged in deployment, we have to be engaged in planning, etc, etc.

    Some times, all of that. Most of the time, some of that. And most of the activities mentioned above require participation with different teams. Participation in those activities gradually increase with time as we evolve in the profession.

    So, how the hell can someone claim to have been doing 9 years of pair programming? What the hell happened to all the other activities *other than programming* that are required for developing non-trivial software?

    9 years of pair programming = wasted opportunity in professional development.

    1. Re:We are engineers, not monks! by Anonymous Coward · · Score: 0

      Going through the emotions? What do the programmers' feelings have to do with anything?

  42. Degrees Matter by Anonymous Coward · · Score: 0

    Wow, just wow. Half the posts are "I don't like this thing so it must suck". I'm glad I got a degree in Software Engineering where we actually studied these things. Go out and read the research papers on all this stuff. Everything thing has it's pros and cons and are extremely beneficially in some situations while completely hindering in others. Self-taught programmers don't bother to learn these things and CS degrees don't teach it.

    It doesn't matter what you like, it matters how well it'll work in your current situation and there are specific pros and cons you can look to instead of guessing.

  43. In context by Anonymous Coward · · Score: 0

    Pair programming of new features = FAIL.
    Pair programming with the guy who wrote the original code, when you find a bug: EPIC WIN.

  44. Context Context Context by gfdgfdwrg · · Score: 3, Interesting

    Pair programming when creating new features: FAIL. Pair programming with the guy who wrote the original code when you find bugs: EPIC WIN

  45. Re:Nine years of pair programming? - JOKE! by Anonymous Coward · · Score: 0

    Typical Indian coding! Hell I've interviewed folks in India over the phone for my company and they have people in the background COACHING them on the answers! I do code reviews for work contract works from India have done - a lot of it looks like they squirted it out their arse! I'm not impressed! This article is a PURE JOKE! They "pair program" because one by themselves couldn't code a simple application if they tried. I've seen it in action! We have three conference rooms full of them - you will see 3-4 of them crowded around one laptop jabbering away pointing at the screen and arguing. And they still push broken code to production. That is why we now have FULL code reviews of EVERYTHING they do. Can't tell you how much $$$ it's cost the company.......

  46. Reviews always required by Baki · · Score: 2

    Even if you would think pair programming makes sense (I don't, but it might be cultural as some have claimed), they cannot replace code reviews.

    Both "pair programmers" are following the same thought process and may fall in the same trap.

    A fresh look, by someone who wasn't involved in coding is always required.

  47. Re:Nine years? Where? by gweihir · · Score: 1

    As no good coders work there (they have all gone to greener pastures), maybe you can bring code quality there up from "complete and utter crap" to "complete crap". Not sure this is worthwhile doing though. (Yes, I have reviewed code produced there. Several times. The sheer level of non-understanding you can find in there is staggering.)

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  48. They both suck by iamacat · · Score: 1

    Pair programming requires one to continuously socialize with someone nonstop for entire working day, something that most people, let alone most software engineers, can not do while maintaining concentration, creativity or sanity.

    Code reviews encourage filibusters when someone keeps adding to the comment thread just because they personally want something done differently and others find it rude to approve the change and curtail discussion.

    What works well is running lint and writing good tests. Then if someone is motivated enough to address their grievances with your code, they can clean it up on their own time.

  49. Vs? by samantha · · Score: 1

    Why vs? Neither of them is worth crap for actually improving code. Room and incentives to refactor and simplify plus unit tests (of functionality and not deeply dependent on exact implementation) does a lot more good.

  50. Get a projector by Kwyj1b0 · · Score: 1

    The only way I could get pair programming to work was to get in a room with a projector, and give the one developer the control of the keyboard. The other developer gives instructions and directs the flow (while also writing things out on the whiteboard to teach the other). If some changes/fixes take a lot of time, this lets the both developers work on their own laptops.

    This worked irrespective of whether the junior/senior dev was projecting. It is more hands on for the driver, while giving more flexibility to the partner to do their thing. Traditionally the junior dev controls the keyboard, while the senior dev is like a mentor - they don't take the wheel from junior, but they don't need to be wasting time while code edits are happening.

  51. Re:I code best while getting a BJ. by _merlin · · Score: 1

    It's s reference to the movie Swordfish.

  52. Have you tried it? by I_have_a_life · · Score: 1

    It's disheartening to see people with entrenched positions lash out the minute something new threatens their illusory bubble of safety. The reactions are visceral yet I wonder how many have actually tried pair programming?

    It's really this simple: if you think peer review has value then pair programming is simply just-in-time peer review. Furthermore, by virtue of the fact that it is just-in-time, it has one big advantage over traditional code review: the reviewer is immediately invested in the process. In other words, they can't relegate their code review to the background.

    Here's how it works: two people sit at a pairing station which has a monitor, keyboard, and mouse for each developer connected to the same workstation. The programmers take turns "at the wheel". The programmer that is not "driving" is reading the other programmers code, catching typos before they turn into hours of debugging, acting as a sounding board for design decisions, providing a second opinion or consensus when making tough decisions. Pairs rotate at intervals.

    Yes, your team will write less code overall, but 1) the quality and the maintainability of the code improves significantly 2) the confidence in the code increases 3) the team benefits from shared knowledge.

    Pair programming is not about how you feel it's about better teamwork. Yeah, a senior developer will feel that pairing with a junior developer slows them down, but those justifications are selfish. If I see a programmer making a mistake or tediously performing the same repetitive task shouldn't I teach them a better way?

    Leave your ego at the door and accept that 1) you don't know everything; therefore, you will learn new things working with others 2) sharing your knowledge takes time but is a force multiplier 3) sometimes trying something different can have a positive effect 4) working in a closet with your headphones blasting "Dual Core" without team interaction may be heaven for you but its likely detrimental to others.

    Grow up people.

  53. Team dynamics by damaki · · Score: 1

    It mostly depends on your team.
    Pair-programming is hard, code reviews are pretty easy. Pair-programming increases team cohesion, but it to be properly done or it becomes than useless.
    There is the driver, who writes the code and the observer who review and thinks more about the general design. There should be a frequent alternance, unless there is a vast experience gap between the two people, then the less experimented drives more (to avoid the keyboard domination antipattern).
    Pair-programming should only happen on 60% to 75% of the day, because it really washes you out.
    It works best with small teams (4 to 6 people)
    Pair programming may not work with your team, but when it does, it brings a great team cohesion and a great code quality and better design. And as one who practiced it for 5 years (but not these days, in another team), it was great!

    --
    Stupidity is the root of all evil.
  54. Pair programming is highly productive... by Rich.Miller.6 · · Score: 1

    I've personally written half a million lines of high quality code. Not to create code, nor to reinvent wheels; rather, I regard each line of code as something I have spent to get a job done, and which adds to debugging and long-term maintenance loads. And I've supported/debugged/maintained a lot more software. Much of this was done working with a few other hot programmers. We used a mix of pair programming and code reviews, and you'd have had to pry these tools from our cold, dead fingers before we would have stopped using them. Why? We were deeply and personally committed to being as productive as possible, and getting more than one set of eyes on the code sped us up.

    We thought about it like this: the stuff you understand how to do is fast and easy, and takes just a few percent of your time at the computer. It's the other things, the ones you have to think about, that slow you down. Empirically, the chances are strong that your partner will see a way how to get past something that stumps you. and vice versa; the likelihood of you both being stuck on the same problem is small. So pair programming resulted in much greater productivity than the same programmers working apart could achieve. The same benefits accrued to the overall design of the software, not just its implementation: we produced not just a lot more, but a lot better code.

    Your mileage may vary - but having seen pair programming and code reviews work over and over, it's hard to give much credit to people who haven't tried these techniques talk about how they can't work.