Live data from Hacker News

The mortifying ordeal of pairing all day

simplermachines.com

191–200 of 308 posts

Re: The mortifying ordeal of pairing all day

#191

Earlier quoted context omitted.

Shallow and too late criticism sounds like a problem with how the reviews are handled. At my previous job reviews were required before you were allowed to check in, meaning if it wasn't good enough you had to rework it. This meant junior engineers were quickly brought up to speed with code convention and best practices. If you didn't adhere to them your code wasn't approved. I also found it a great way to catch subtl…

Logically, any review criticism is too late, because the code was already written! Catching the issue before commitment is great, but the proper time for the feedback was during the actual writing. Now the code must be sent back for rewriting, and time has been wasted.

Catching problems before things are written is definitely better and that's why it's often a good idea to mention how you intend to approach problems in your daily sync. If someone has concerns, they can bring it up.

But if that fails, it is definitely better to review and catch it after the code is written than to submit badly written code out of fear of wasted effort. In my experience the vast majority of tasks are easily addressed by a single person and most proficient programmers will usually produce perfectly adequate code which doesn't raise any concerns. Having reviews to catch the odd lapse in judgement or logical misstep doesn't usually add a lot of overhead (as opposed to allocating two programmers to every menial task) but saves a lot more time and effort in avoided bugs and issues than the cost of having to rewrite something every now and then.

Additionally, any single submit should be kept to a manageable size so that they're easier to review and issues are caught early. The only times I can remember having insisted someone rewrite something non-trivial have been when they misunderstood some fundamental issue, did not communicate progress as they should have, and did not follow guidelines of solving a single task per submit. That type of behaviour is in itself a pattern which needs to be addressed.

Re: The mortifying ordeal of pairing all day

#192
I joined a boutique software development consultancy where 90% time is spent doing pair programming. It works out well for them since they only take people who like the idea and process of it. I saw one guy leave after a short time because it wasn't for him and it's ok, this is why there is the probation period. The company has been successful here - our clients like us, they say we are the only partners they have had who actually deliver what they promise, etc

Re: The mortifying ordeal of pairing all day

#193

Pair programming generates visceral responses due to it being introduced as if it were fact, which for me always triggers my spidey senses. People who didn't like it were told "you're doing it wrong" or "you didn't give it a proper chance". Dismissing criticisms out of hand only furthers distrust, regardless of the actual value of the idea. I played along and paired for awhile, but now steadfastly refuse to pair, eve…

Pairing works great; as long as everyone is on the same "wavelength." That's absolutely vital , and has both good and bad sides. The good, is what the author was talking about. That team cohesiveness, that he disturbingly compared to being in a Borg Collective, is something that can't be easily quantified, but can amplify energy and positive morale. The Marines have known this for a couple of hundred years. Every Mar…

Wait, a squad is a bunch of people close to each other, working on different tasks over the same object. Pair programming is two people close to each other, working on the same task and same object.

Both have completely different problems and advantages. The different (often complementary) tasks make all the difference here.

Re: The mortifying ordeal of pairing all day

#194

Pair programming generates visceral responses due to it being introduced as if it were fact, which for me always triggers my spidey senses. People who didn't like it were told "you're doing it wrong" or "you didn't give it a proper chance". Dismissing criticisms out of hand only furthers distrust, regardless of the actual value of the idea. I played along and paired for awhile, but now steadfastly refuse to pair, eve…

Pairing works great; as long as everyone is on the same "wavelength." That's absolutely vital , and has both good and bad sides. The good, is what the author was talking about. That team cohesiveness, that he disturbingly compared to being in a Borg Collective, is something that can't be easily quantified, but can amplify energy and positive morale. The Marines have known this for a couple of hundred years. Every Mar…

Just a word about the Marine analogy in case some manager sees this and gets all excited:

Team work is much more natural if you are up against an external enemy in the broadest sense, like the military, farming, building an aircraft or a group of physicists taming nature.

It does NOT work for creative endeavours with a) a distinct amount of self-expression like programming or writing novels that b) also require enormous amounts of context in the working memory. This is why developers get into fights that easily.

(Please don't counter with "the humble programmer" and all that; we know, and Dijkstra himself wasn't humble. )

Re: The mortifying ordeal of pairing all day

#195

Earlier quoted context omitted.

Logically, any review criticism is too late, because the code was already written! Catching the issue before commitment is great, but the proper time for the feedback was during the actual writing. Now the code must be sent back for rewriting, and time has been wasted.

If the code requires such a substantial rewrite after review, that would be indicative of serious communication problems on the team. In 20-odd years of reviewing code, I can't think of many instances where a review led to a substantial rewrite.

I don't know what "substantial" means but, say, in a 3 day long ticket, surely all sorts of issues found in review can easily force another day or so of work.

Re: The mortifying ordeal of pairing all day

#196
This is an introvert's nightmare.

The "fear of being vulnerable", or "showing my limitations as a human or engineer" are so secondary to the emotional drain of having to be that close to a person all day, every day at work, they don't even show up on the horizon of concerns.

Pairing is incredibly useful and valuable, but doing it all day would be hell.

If someone told me that they wanted me to pair for the majority of my day, or even the majority of code I wanted to write, the first thing I would pair on would be a letter of resignation.

Re: The mortifying ordeal of pairing all day

#197

I've worked on teams historically that did pairing (even pairing all day), and mobbing all day, and I don't get the hate. If the main issue is burnout, then what's up? Even working solo you can burn out, so I don't think that's a valid argument unless someone can convince me that specifically pairing is causing the burn out. The biggest thing is you need a team that can trust and support each other.

> unless someone can convince me that specifically pairing is causing the burn out If someone tells you something is causing them anxiety and stress can't you just accept that rather than requiring to be 'convinced'? You say you want a team that supports and trusts... yet you don't believe people when they say something's causing them pain.

It's not that I don't trust the burnout, but I want to know what aspect is causing burnout. Is it talking all day? Is there stress because someone is watching you work? Are you not taking enough breaks? These things aren't all specific to pairing, which means that pairing wouldn't always be the issue.

Sure, some people are just not the type of people that are good at pairing, and that's valid, but it's important to identify the problem. That's where trust and support comes in. If you can't talk about why you are feeling burnt out with your team, then there is a deeper issue that your team needs to figure out.

Re: The mortifying ordeal of pairing all day

#198

I can't imagine pairing full time, but I did it for brief stints as a customer of Menlo Innovations. All customer code must be written by pairs, but one option to reduce costs is to have the customer supply half of the pair team, so I did this for a few half days one one project. This is obviously scary at first because someone is going to watch me code! It turns out that it is perfectly normal to use google/stackove…

In answer to a sister comment about a location where pairing was only for the underlings (https://news.ycombinator.com/item?id=27103743) I will say that one other thing Menlo does to show they are serious is that the do pairing in other places too. Even their "High Tech Anthropologists" (people who get the specs from the customers), and the project managers work in pairs. I think that helps the culture around pairing significantly.

Re: The mortifying ordeal of pairing all day

#199
post #162

Earlier quoted context omitted.

Pairing is a decision made between two devs, not as a team or company, imo.

I've never seen or even heard of a place where pairing is optional. I've only ever seen it compulsory or forbidden.

Pairing is optional at my employer.

As a manager, I'm always on the look-out for tasks where I feel pairing may provide value. These are often moderately complicated tasks where I want a more junior team-member involved. Or, doing green-field UI work, I'll suggest one of the more UX-savvy developers pair with a small group of developers.

I have also managed people who just like to work together and they're free to pair and unpair on an ad-hoc basis. I don't care, as long as progress is being made.

Edit - I've never "paired" in the way you suggest in a sibling response (assigning a ticket to 2 developers).

Re: The mortifying ordeal of pairing all day

#200

Earlier quoted context omitted.

Logically, any review criticism is too late, because the code was already written! Catching the issue before commitment is great, but the proper time for the feedback was during the actual writing. Now the code must be sent back for rewriting, and time has been wasted.

Catching problems before things are written is definitely better and that's why it's often a good idea to mention how you intend to approach problems in your daily sync. If someone has concerns, they can bring it up. But if that fails, it is definitely better to review and catch it after the code is written than to submit badly written code out of fear of wasted effort. In my experience the vast majority of tasks are…

> But if that fails, it is definitely better to review and catch it after the code is written than to submit badly written code out of fear of wasted effort.

Yes, without a doubt.

> Having reviews to catch the odd lapse in judgement or logical misstep doesn't usually add a lot of overhead (as opposed to allocating two programmers to every menial task)

Having paired for years, and soloed for years, I have found that the downsides of allocation are overridden by the benefits of pairing, one of which is real-time code review.

Post reply on HN