Live data from Hacker News

On Pair Programming

martinfowler.com

51–60 of 121 posts

Re: On Pair Programming

#51
Pair programming is fantastic.

There is no better way to educate a newer team member to code standards and procedures as well as business domain. It also helps to reign in over-engineering and bad approaches. For more senior developers, it can expose them to newer approaches and technologies that they might not be aware of.

I had a great experience pairing on a complex feature request (convert desktop version of an app to a mobile version) that was planned for 3 months. We finished it in a month with full test coverage and every little change to PM, PO, and UX designer could throw at us. Because we both had knowledge of the systems, we could later work independently on simpler tasks and regroup later to combine our efforts.

Re: On Pair Programming

#52
I wrote this after almost exclusively pairing for 3 years: https://www.mattgreer.org/articles/pair-programming-is-not-a...

In general I think this article is pretty good. It seems to bias towards "pair programming is better" where as I biased towards "pair programming can be really bad". In the end, it's a tool like anything else. Sometimes pairing is the perfect way to tackle something, and other times it's the last thing you should be doing.

Re: On Pair Programming

#53
post #47

Anyone know of a good, open source, cross-platform video conferencing application?

Not exactly what you asked for, but I have had success with pair programming using VS Code Live Share[1] and Mumble for VoIP[2]. I don't think video is particularly important when you're both seeing the same screen and able to talk about it. [1] https://docs.microsoft.com/en-us/visualstudio/liveshare/use/... [2] https://www.mumble.info

I've been trying this recently, but find it hard to debug issues because I can't see the output of the program being run or use a debugger on it. We got to the point of sending Dropbox links to screenshots of chrome with the devtools console open, which seems absurd. Maybe chrome remote debugging could help?

Maybe I'm just not good at writing code correctly the first time, but when I program I usually fix at least one error per compile/run. So I have trouble pair programming when eg the other person likes to write larger chunks of code before running/testing.

Re: On Pair Programming

#54
post #32

Earlier quoted context omitted.

For such a person, short periods of pair programming might be sustainable, but beyond that you'd expect two reactions: either the become combative as they reach the end of their rope, or they shut down, at which point they are just the chauffeur and the other party is calling all the shots. One of those is immediately and obviously detrimental to teamwork, the other is just as bad because it's insidious. Neither is i…

I sometimes lean toward calling it discriminatory, but generally don't - not because I think it isn't, but because I think that doing so weakens any legitimate criticism of the practice by coming across as hyperbolic. My take: I like it as a training or mentoring activity. I like it as a voluntary activity for slowing down and being careful on trickier bits of code. But I don't like it nearly so much as a mandatory t…

> Within no time at all, I would be deliberately letting obvious bugs sail past just to avoid having to have interactions that I was finding to be increasingly mentally and emotionally taxing.

This is 100% my experience. I don't do pair programming in any formal capacity, but do occasionally sit nearby while others write code.

I despise telling people they're screwing up at the rate they're screwing up in real time, especially when I'm more senior and they're just not noticing things that I see immediately.

Compounding this, I'm not great at quickly expressing myself verbally, and so it's not always clear what I'm pointing out. Even when I'm perfectly clear there's an element of a flustered typist trying to correct on the fly.

Combine this with introversion and mild social anxiety, and I'd say if my workplace instituted mandatory pairing I'd be looking for a new job the day they announced it.

Re: On Pair Programming

#55
post #5

If forced to choose between pair programming and not programming at all, I think I would choose the latter.

I was forced into it for a few months when it was hot and Agile was still XP (Extreeeeeeme Programming). I found it agonizing. I was unable to do anything deeper than code the simplest functions. Everything I "accomplished" felt shallow and I could not come up with something better until I was unpaired. Sure, I could bash out comments and boilerplate and dumb little helper functions, but the part of my brain that seems to spit out the mysterious solutions that are the point of the whole exercise was dead silent.

Re: On Pair Programming

#56
I been working full time now about 15 years and I think Martin Fowler's blog and especially articles like this do more harm than good.

Typically I find Pair Programming pretty pointless for most tasks. Where it works is when one developer knows the code base and another knows about the new piece they are trying to implement e.g. something external they are interfacing with.

Much like other subjects on Martin Fowlers blog, it will get picked up by some which will religiously adhere to it and not consider where it will be best suited.

Re: On Pair Programming

#57
the thought of pair programming nearly gives me an anxiety attack. the second it’s mentioned in the interview process, it’s an automatic no from me. what other industry or domain does this? none that i know of.

first of all, working in pairs creates a problem when there’s disagreement. you need a group of three to five to find agreement in those cases. working in pairs also requires a very tight alignment of style in programming, thinking, speed, brainstorming, etc. it simply does not allow for moments of thoughtful rumination or experimentation. it’s just like having pairs in school. it never works unless the two people are copies of each other or both people have spent time doing and thinking about the task themselves independently beforehand.

i think working in pairs or small groups for design, review (or a post-review discussion), and especially debugging works quite well. it also works well when there’s a new person being ramped up or someone in the pair who is particularly knowledgeable about a portion of the interfacing code or sticky points. but two people sitting at a computer implementing? that only works for a very, very short amount of time, if at all.

i refuse to work for any place that forces this upon workers. it creates just another selection bias in interviews. engineers already look for people just like them, and this just adds to that bias.

and the articles for the benefits does nothing to say what pair programming does to actually enable the benefits listed. all of the benefits can be accomplished by shared design plus individual design, shared review, shared debugging, and individual implementation.

Re: On Pair Programming

#58

Earlier quoted context omitted.

Why?

Not OP, but for me, it's like having someone stand over my head with a pot, banging it with a spoon incessantly. It utterly destroys my ability to concentrate. Had a chance to closely observe a session once. Looked through the code later--total garbage. Apparently it works for some, but you couldn't pay me to do it. (Also, seems unfair to programmers that can't hear well or need other accommodations.)

it can surely be, but do you happen to have times where you sluggish and facing a problem you're very far from knowing how to solve ? in which case it helps making progress. I'm mostly speculating based on my small experience

Re: On Pair Programming

#59
At my first job I mandatorily pair programmed with someone every day for months and we had very different personalities. Neither he nor I wanted to and the result was we wore on each other, decorum broke down and the code itself was weaker because we would take turns ignoring the situation to get what few moments of peace we could in the day. We both left that company around our 1-year mark even though otherwise it wasn't bad got out at 5pm every day, catered lunch sometimes etc. I understand it is useful in certain situations but that largely turned me off from it as a concept and I still doubt the benefits when used "properly".

Pair programming is a very intense experience and had it stopped a few weeks in that situation then maybe my thoughts on it would be different.

Re: On Pair Programming

#60
post #5

If forced to choose between pair programming and not programming at all, I think I would choose the latter.

I was forced into it for a few months when it was hot and Agile was still XP (Extreeeeeeme Programming). I found it agonizing. I was unable to do anything deeper than code the simplest functions. Everything I "accomplished" felt shallow and I could not come up with something better until I was unpaired. Sure, I could bash out comments and boilerplate and dumb little helper functions, but the part of my brain that see…

Pairing destroys deep focus. It's an impediment for hardcore coders. Maybe it appeals to extroverts with short attention spans who prefer to socialize rather than do their jobs.
Post reply on HN