Live data from Hacker News

On Pair Programming

martinfowler.com

41–50 of 121 posts

Re: On Pair Programming

#41

I read through this quickly, but I couldn't find any mention of pair programming not being suitable for sensitive and introverted people - especially those that suffer from anxiety and other mental illnesses that can be made worse by the stress of pair programming. Whilst the article mentions that it "can be hard and stressful" there is still the assumption that most people are more or less the same in terms of menta…

It's not even an issue of "mental resilience". Pair programming, like any other close human interaction, is strongly weighted toward the most aggressive or insensitive (or autistic) personality.

And in the tech world, it's very easy to encounter people more weighted toward the autistic end of the spectrum. Pair one of those with one of the HSP people, and you have a really shitty combination. The HSP will expend most of their energy appeasing and compensating for the needs of the autist. The autist will feel frustrated, and the HSP will feel fully exhuasted.

Re: On Pair Programming

#42

As a "senior" the thing I find about pair programming is that it forces code review - it's waaay too easy to blip over code in a review. It really is higher quality code review but boy it smashes productivity with a frying pan and keeps hitting it. Pair programming - bad for startups that want to hammer out quick code, bad for enterprises that want to hit deadlines on stretched resources. It's a tough one to argue fo…

I’ve done ping pong / tennis programming before and it was honestly one of the most enjoyable experiences at that particular job. It helped that I was a junior developer pairing with one of the most senior developers at the company, who also happened to be very enthusiastic about what we were working on.

Re: On Pair Programming

#43

As a "senior" the thing I find about pair programming is that it forces code review - it's waaay too easy to blip over code in a review. It really is higher quality code review but boy it smashes productivity with a frying pan and keeps hitting it. Pair programming - bad for startups that want to hammer out quick code, bad for enterprises that want to hit deadlines on stretched resources. It's a tough one to argue fo…

I used pair programming at a startup with a heavy junior engineering team. I loved it cause I could pair with any one of them and that “mentoring session” would be retaught without me having to do it. Our junior engineers progressed really fast in a short amount of time and I didn’t lose my mind having to reteach the same lessons over and over.

Re: On Pair Programming

#44
post #30

I would take less money to get to work like this. The isolation is what I find hardest about being a developer. I work far better in a team with people relying on me. Direct interaction like that makes the days so much more enjoyable. I really hope to one day find an employer willing to adopt this practice. If anyone is hiring I'll apply.

You don’t need an employer to by into pairing. Get them to buy into managing work at the team level instead of the individual level. Then you can safely pair with your team mates.

Re: On Pair Programming

#45
post #32

I read through this quickly, but I couldn't find any mention of pair programming not being suitable for sensitive and introverted people - especially those that suffer from anxiety and other mental illnesses that can be made worse by the stress of pair programming. Whilst the article mentions that it "can be hard and stressful" there is still the assumption that most people are more or less the same in terms of menta…

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 thing. The social dynamics here are tricky. I'm a pretty severe introvert, and am quickly exhausted by what I experience as socially intense situations. I've been paired with exuberant, highly extraverted people, and the results were, frankly, disastrous. 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. And yet I'd still come out of it feeling so worn out that I'd be off my game for days. I guess you could say that that was negligent on my part, but, truth be told, once the cortisol levels in your bloodstream get high enough, you're just not thinking clearly anymore. And, in any case, it would be much easier for me to wait and put a more thoughtfully composed, "Hey, I just noticed..." comment in the async code review than it would to try and clearly verbally explain what I saw to someone who dislikes pauses in a conversation so much that they literally would not allow me 15 seconds to compose my thoughts.

So, don't call it discriminatory, but, still, it can easily end up making people upset and escalating intra-team tensions in return for not much. There's a term of art in some sects of Buddhism that I like to describe these sorts of well-intentioned but poorly executed plans: "Unskillful." Indiscriminately following a prefabricated, one-size-fits-all script often ends up being unskillful.

I think maybe it's a bit like test coverage. More code coverage is good, but, at the same time, I typically see the lowest quality test suites in codebases where it's been set up as an explicit performance metric and measured by some tool. Similarly, when doing Scrum-type-workflows, I find velocity to be a useful concept up until the exact moment when some manager finds out about it and asks for it to be included in a report, at which point it immediately becomes the most harmful thing ever.

That said, and for the sake of contradicting myself repeatedly, it sure is useful sometimes, and I'd hate to work at a place that isn't supportive of developers and teams who want to do it.

Re: On Pair Programming

#46

So while pair programming what happens with the never ending string of distracting Slack messages and diversions? It just seems completely impractical for the environments I’ve had experienced.

Having another person around helps me stay on task. I have to put off engaging with those distractions until a scheduled break. For that reason alone, pair programming can be more productive.

Re: On Pair Programming

#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

Re: On Pair Programming

#48
I have never once been able to look at this and think it was a good idea outside of specific training sessions with specific coworkers for specific purposes.

I think programmers should be considered professionals who can do their own work quite well on their own, and held to that standard.

Re: On Pair Programming

#49
post #28

Earlier quoted context omitted.

Two people somewhat less experienced. I don't believe that was the issue.

Out of curiosity do you think they benefited from the experience?

Hard to say. The code that was produced was worse than useless, IMO. I think they were programmers that had both peaked (and stopped learning) when they were young. I'd guess they're in management now.

Re: On Pair Programming

#50

As a "senior" the thing I find about pair programming is that it forces code review - it's waaay too easy to blip over code in a review. It really is higher quality code review but boy it smashes productivity with a frying pan and keeps hitting it. Pair programming - bad for startups that want to hammer out quick code, bad for enterprises that want to hit deadlines on stretched resources. It's a tough one to argue fo…

It's good for transferring code ownership and development culture to a new maintainer, though.

Writing very clear code is not just a skill but an investment in resources. There are diminishing returns (a couple of my employers have had a much lower pain-point than I do), and making it fairly clear followed by explaining the rest is usually more effective. Admitting a fault expresses empathy, and honesty, and sometimes inspires the other person to get invested by proposing a solution, and who wants code owners that aren't invested in the code? Besides, zero gotchas is perfection, and we all know what perfect is the enemy of.

In scaling up a team, the alternative to getting new people to high competence on existing systems is to let them become highly competent on new systems. Over time though the old people only know the old stuff and the new people the new stuff, and eventually nobody knows what's going on. People only figure this out after the old people have already left. Old problems that haven't been fixed don't get talked about every day so it may be six weeks or a couple months before you figure out John was the only one who knew some bit of information and he's happy at his new job, and Sheila, the only other person who knew, has been gone for 8 months. And the person who wrote the thing just showed up on LinkedIn for getting a promotion at wherever they've been for 2 years. I wonder if they'd forward my resume to HR?

I want the new guy to eventually be able to do everything I can do so that I don't feel guilty about wandering off to do something else, internally or externally. These people can also take over answering for old arguments that I'm tired of having. Being able to tag out on that sort of stuff does wonders for my sanity.

I can certainly do all of this without pairing, but a lot of the time it's much faster and more illuminating for both of us. Especially when I can see how they stumble. Out of the mouths of babes, as it were. Maybe my assumptions were wrong. Maybe there's a simpler way to do this, or at least a more consistent one.

Does that mean that I've occasionally been the Jim in "Why the hell did they lay Jim off?? We needed him." conversation? Yes, yes I have. But I can tell you, being laid off feels a lot better than going down with the ship. Survivor guilt, being the last employee who still knows how to do onerous tasks, wondering who'll be next, constant existential crises feeling like it's on you to save the ship... It's all awful, and much, much later you start to recognize the scar tissue. Lay me off with a nice severance while there's still some money and a sense of guilt left, please and thank you. If you don't see my value it's because you're too busy looking in the rear-view mirror rather than what to do next anyway.

Post reply on HN