News for hackers. Stuff that matters.
Re:The mortifying ordeal of pairing all day by kstenerud on Monday May 10, 2021 @05:24AM (#27104190)
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, ever. I work best within my own mind, and the distraction of talking to someone breaks my concentration such that I'm unable to keep the big picture in my head anymore. The irritation of being that close to someone and having to engage with them for even half an hour is draining, and I took more frequent and longer breaks because of this (much to the annoyance of my pair-partner, who couldn't work while I was away).

There may very well be people who work well in pairs, but rest assured that there are those who aren't built that way. Don't disparage them, don't discriminate against them, and don't play the moral superiority game with them. Accept their diversity and be a better team for it.

Re:The mortifying ordeal of pairing all day by ChrisMarshallNY on Monday May 10, 2021 @09:00AM (#27105498)
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 Marine I've ever talked to, has described, almost verbatim, what he said. About how the squads act as a unit; almost without thinking. The results are tough to argue with. They are a highly effective fighting force.

The price can be burnout (as mentioned). When everything we do is being channeled and amplified, we have to be "on" all the time. We don't get that "five minutes of spacing out" between modules. In my case, that's absolutely required.

It's also a young person's game (like being a Marine infantryman). As I've gotten older, my personal process has become almost supernatural, but it has also become incredibly draining, and that "down time" is now no longer a luxury, but a necessity. On days that I have had some really challenging work, like chasing a pernicious bug, or setting up scaffolding for a new architecture, I can be absolutely flattened by bedtime. I feel as if I have spent the day digging trenches.

Also, I work best in my own head. I can create a pretty sizable architecture in my head, and don't need to write down a thing. That makes for very fast development, and tremendous flexibility. I can tear down an entire architectural construct, if it proves ineffective, and rebuild it, in a few minutes (in my head).

The minute I need to communicate it, however, that efficiency goes right into the bog.

Re:The mortifying ordeal of pairing all day by qamark on Monday May 10, 2021 @11:37AM (#27107213)
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 by mattzito on Monday May 10, 2021 @12:16PM (#27107671)
I agree with this perspective - the closest thing I've seen to this sort of "external enemy" approach in tech is engineers/SREs responding to an outage/critical issue. Good teams will get into a state of flow where people are subdividing work, prioritizing, working as a cohesive unit. In that case, there is a clear objective (get things back up and running) with a clear enemy (that DDoS/database/down payment gateway/datacenter power outage).
Re:The mortifying ordeal of pairing all day by randomswede on Tuesday May 11, 2021 @03:57AM (#27115417)
I have experienced it both as part of IT emergency response, as well as when cooking with (a very small subset) other people.

As long as everyone is "on the same wavelength" (I am sorry, I cannot quantify that better), it is basically effortless. You need someone to chop onions, and a few minutes later, they're just there. You sense that someone needs a filleting knife (they're just about to place a fish on a cutting board, or something similar that signals "this is the next tool needed") and you're close to it, so you make sure it is there for them (handle first, of course).

It is a very similar feeling to a well-integrated infantry unit making an entry into a presumed-hostile building, minus all the adrenaline.

Re:The mortifying ordeal of pairing all day by scruple on Monday May 10, 2021 @01:51PM (#27108779)
> Team work is much more natural if you are up against an external enemy in the broadest sense

This is why I've always found it frightening when some management type starts talking about the book Extreme Ownership. I am a veteran, though I was not SOF, and I have strong opinions about why military management mindsets do not translate well to the business world in _most_ cases. To be fair, I have not read the book, but from what I have heard from those who have read it, I would be wary of anyone trying to apply it to a software engineering shop.

Re:The mortifying ordeal of pairing all day by caffeine on Monday May 10, 2021 @06:01PM (#27111413)
Think you might be pleasantly surprised... concepts like “extreme ownership” (care about everything in your stack), “decentralised command” (push decision making to those doing the work), “cover and move” (help each other) actually translate pretty well.

The book is mostly about dealing with people rather than about engineering process, and I think the people aspects of a coding team and any other high performance team probably have a lot in common.

Re:The mortifying ordeal of pairing all day by marcosdumay on Monday May 10, 2021 @11:36AM (#27107198)
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 by goatcode on Monday May 10, 2021 @09:28AM (#27105748)
The only way I've seen this kind of situation come about is if pairing isn't forced. "Forced" means leadership encouraging at every opportunity, ham-handedly, without considering context. If there isn't an extreme investment by leadership, badly-executed pairing will ensue, form what I've seen.
Re:The mortifying ordeal of pairing all day by kodah on Monday May 10, 2021 @10:49AM (#27106554)
Pairing is a decision made between two devs, not as a team or company, imo.
Re:The mortifying ordeal of pairing all day by goatcode on Monday May 10, 2021 @11:11AM (#27106780)
That's the work that leadership should assisting in -- enabling devs to recognize and move into situations where pairing is beneficial, and giving them the scheduling tools and methods to do it successfully. The best a company should be doing is helping devs to recognize the benefits, and when they are activated for a task, and importantly, when they don't exist for other tasks. It's still such a new area, business wise, that I think it's often done very wrong.
Re:The mortifying ordeal of pairing all day by MockObject on Monday May 10, 2021 @11:04AM (#27106707)
I've never seen or even heard of a place where pairing is optional. I've only ever seen it compulsory or forbidden.
Re:The mortifying ordeal of pairing all day by alistairSH on Monday May 10, 2021 @11:48AM (#27107348)
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 by goatcode on Monday May 10, 2021 @01:03PM (#27108222)
>Pairing is optional at my employer.

Is collaboration / pairing part of employee evaluation in any way?

Re:The mortifying ordeal of pairing all day by alistairSH on Monday May 10, 2021 @01:58PM (#27108857)
Not directly. If somebody actively avoided paired work, I'd probably ask them about it during a regularly scheduled 1-on-1. And if somebody was doing a spectacular job mentoring/pairing/etc I'd definitely mention it.
Re:The mortifying ordeal of pairing all day by goatcode on Monday May 10, 2021 @05:26PM (#27111066)
That seems pretty reasonable. I'd hate to work at a place that "didn't enforce" something, but had it turn into a 15 pieces of flair type situation.
Re:The mortifying ordeal of pairing all day by alistairSH on Monday May 10, 2021 @06:47PM (#27111807)
From my perspective, it’s a great way to mentor and facilitate knowledge transfer. It’s also great for working through coding roadblocks. It’s a useful tool, nothing more. Theres no mandate to use it at the office, it’s up to individual developers to use it appropriately and managers to facilitate it.
Re:The mortifying ordeal of pairing all day by varispeed on Monday May 10, 2021 @11:19AM (#27106910)
In many organisations pairing is encouraged, but not mandated - it means that if developer is stuck with something they ask if someone is available to pair to unblock them. Usually they'll find a person who loves pairing and get things done. In rare cases the PM would tell a developer experienced in the domain, to stop what they are doing and help. That's not too bad provided the interrupted developer gets an extra time added for context switching.
Re:The mortifying ordeal of pairing all day by MockObject on Monday May 10, 2021 @11:33AM (#27107162)
I think in every company, it is encouraged to help someone who is stuck. By "pairing", I mean that a ticket is assigned to a pair, who complete it as a pair. I've never seen a place where some tickets are done by pairs but others, solo. In my experience, if management isn't fully committed to the process of pairing, then they have a hard time understanding how pairing isn't wasting labor.
Re:The mortifying ordeal of pairing all day by varispeed on Monday May 10, 2021 @11:54AM (#27107440)
I see. I tend to avoid organisations that have such culture - I tried this and for me it is too mentally exhausting to constantly be paired with someone.
Re:The mortifying ordeal of pairing all day by kodah on Monday May 10, 2021 @11:10AM (#27106772)
That's definitely not ideal. Ideally pairing is "authorized" not mandated.
Re:The mortifying ordeal of pairing all day by ChrisMarshallNY on Monday May 10, 2021 @02:22PM (#27109136)
Sorry about the military reference. I seem to have banged a couple of sore spots.

I'm not a vet (but my parents are planted in Arlington), but I've spent most of my adult life surrounded by them, so I've heard a lot of stories, and they are very practical, pithy applicable stories.

They often spring to mind, when I think about my work.

And we developers may not be thinking in military terms, but the chances are better than even, that the Corner Office is trying on a jacket covered in medals.

Re:The mortifying ordeal of pairing all day by harryf on Monday May 10, 2021 @06:04AM (#27104379)
Like many things in programming, we adopt it like a cargo cult ( https://en.wikipedia.org/wiki/Cargo_cult_programming ) based on "some thought leader said" or "some company has amazing..." without actually doing any serious study. It's actually amazing for an industry that should be all about rational, reasoned analysis, that we're willing to perform such experiments on ourselves with so little evidence to show the value.

There is this study here - https://www.researchgate.net/publication/222408325_The_effec...

"A more detailed examination of the evidence suggests that pair programming is faster than solo programming when programming task complexity is low and yields code solutions of higher quality when task complexity is high."

There are links to a few more here - https://tuple.app/pair-programming-guide/scientific-research... - none of it looks particularly compelling.

And I'm not "against" pair programming. It's just sad to see "cargo cult" adoption of practices.

Re:The mortifying ordeal of pairing all day by throwaway894345 on Monday May 10, 2021 @09:28AM (#27105751)
Personally our industry needs to mature a lot with respect to its ability to critically understand studies before they’re going to be useful. Thus far it seems like the headline version of the first article which purports to analyze a topic is taken as gospel with respect to the topic in question. People still trot out that old article that “finds” that statically typed languages don’t reduce bugs (i.e., 90s era OOP creates enough bugs to offset those precluded by type checkers). If we’re going to depend on formal studies for these hugely multivariate issues we need a lot more rigor before they are more helpful than mere “collective industry experience”.
Re:The mortifying ordeal of pairing all day by hughrr on Monday May 10, 2021 @06:50AM (#27104562)
I'm actually here because my colleagues keep coming up with things posted here and on other sources and I was intrigued as to the consensus behind them. I'm pleasantly surprised to read that there is a nice critical balance of discussion.

The worry for me is that there is almost always an obvious detachment from the steps carried out to the benefit which is the precise definition of a cargo cult. A lot of people can't seem to see this at all and when asked for some sort of rational proof, something I do regularly, tend to switch to a personal or ideological attack instead.

It's slightly tiring to be fighting the front of rationalism in an industry which appears to be driven partially by fashion.

As for pair programming, 100% anecdotally I find that sometimes you need a second set of eyes on a problem when you can't see the forest for the trees. But mostly it's inefficient and unproductive and absolutely crippling for small teams.

Re:The mortifying ordeal of pairing all day by Agentlien on Monday May 10, 2021 @08:46AM (#27105373)
I agree with your criticism against pair programming. I also agree that it's helpful with an extra pair of eyes on anything you write, which is why I'm strongly in favour of code reviews.
Re:The mortifying ordeal of pairing all day by harryf on Monday May 10, 2021 @10:17AM (#27106198)
...although some people might argue that you could get the same value from a rubber duck ( https://en.wikipedia.org/wiki/Rubber_duck_debugging )
Re:The mortifying ordeal of pairing all day by Agentlien on Monday May 10, 2021 @11:15AM (#27106849)
I want very different things from my rubber ducks and my code reviews.

Rubber ducking is great for forcing yourself to articulate your train of thought, spelling out your assumptions, and proof-reading your own logic.

Code reviews are great for catching errors you glaze over because you're too familiar with what you think you wrote to see what's actually written. It's also a great way to onboard people and enforce code standards and best practices.

Even when you're in a more senior position code reviews can often teach you new things, when you interact with systems the reviewer knows better and they happen to know a better approach.

Re:The mortifying ordeal of pairing all day by hughrr on Monday May 10, 2021 @01:12PM (#27108327)
I do this. It works. I have a stuffed parrot though. And everyone thinks I’m nuts but I don’t care :)
Re:The mortifying ordeal of pairing all day by MockObject on Monday May 10, 2021 @10:54AM (#27106597)
I despise code reviews, because the criticism is shallow, and offered too late, after the work has been done. I want the review in real time, and at a greater depth of insight. This is what pairing provides.
Re:The mortifying ordeal of pairing all day by Agentlien on Monday May 10, 2021 @11:12AM (#27106801)
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 subtle bugs or difficult to follow logic. But it does require actually having and taking the time to carefully review things, rather than giving them a passing glance.

Re:The mortifying ordeal of pairing all day by kstenerud on Monday May 10, 2021 @11:23AM (#27106997)
Another helpful technique to good code reviews is to keep individual PRs small. Once a PR is over a few hundred lines, my eyes start to glaze over and by the end I'm just skimming.

I've had great success with breaking larger changes into smaller PRs that get code-review-merged into an integration branch. Then the integration branch gets merged to your main branch once everything's done and verified.

Re:The mortifying ordeal of pairing all day by Agentlien on Monday May 10, 2021 @11:50AM (#27107387)
Yes, I also have great experiences with this type of approach.
Re:The mortifying ordeal of pairing all day by MockObject on Monday May 10, 2021 @11:18AM (#27106887)
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.
Re:The mortifying ordeal of pairing all day by Agentlien on Monday May 10, 2021 @11:34AM (#27107178)
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 by MockObject on Monday May 10, 2021 @11:49AM (#27107366)
> 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.

Re:The mortifying ordeal of pairing all day by Agentlien on Monday May 10, 2021 @12:02PM (#27107520)
I have done some pair programming. At my first job we sometimes did it when some problem proved especially tricky. Typically a tricky bug.

In some cases it's invaluable, absolutely. I just don't think that's a large percentage of the code written on a daily basis. For most tasks pairing seems to be either

1) one person tapping out simple code which practically writes itself while the other lazily nods along.

2) One person solving something tricky which happens to be their area of expertise while the other stares blankly. Maybe at that point it would be useful to explain things in detail, but that can make development take much longer and if something like this requires rethinking halfway it can be quite taxing. In that case, I would prefer waiting until it's done and compiling the result as an annotated review. Which can be a great forum for asking questions.

Re:The mortifying ordeal of pairing all day by MockObject on Monday May 10, 2021 @12:22PM (#27107754)
When I've seen it adopted, it was in the context of XP. The red-green-refactor cycle affords a decent flow for pairs, who may switch off between test writing and feature writing. I can see that without the other XP practices, pairing may be awkward.
Re:The mortifying ordeal of pairing all day by kstenerud on Monday May 10, 2021 @11:31AM (#27107139)
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.
Re:The mortifying ordeal of pairing all day by MockObject on Monday May 10, 2021 @11:38AM (#27107222)
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 by kstenerud on Monday May 10, 2021 @12:00PM (#27107503)
Anything over half a day would be substantial, but really I'd consider any post code review fix that takes longer than an hour to be a red flag that we're not communicating effectively.

As I alluded to earlier, I've never encountered these sorts of problems in the healthy companies I've worked at (but I HAVE encountered them at unhealthy companies).

Re:The mortifying ordeal of pairing all day by rmk on Monday May 10, 2021 @03:21PM (#27109731)
Code reviews sometimes seem like a micro-management tool: they often boil down to quibbling over things that are quite superficial, while simultaneously ignoring or missing big problems that lurk under the surface. Without some sort of automated linting and code style enforcement, this is what happens in code reviews. They serve as a reminder to the developer that his work is not trusted, and someone else must keep an eye on him at all times. This is very bothersome to people who have been around the block a few times, and are already capable of producing robust, clean product (this is often a pitfall of having someone who's just out of college reviewing code from an experienced dev).

Another problem I've observed in code reviews is that they turn into impromptu redesigning sessions. Most devs are quite opinionated, and code reviews often become an avenue to engage in bikeshedding that can actually harm morale, not to mention velocity and product quality.

The trouble with pairing is that it doesn't remedy these problems effectively, while simultaneously reducing the number of hands doing work. If two people just don't get along, pairing them is not going to magically solve the problem. And I guarantee that there will always be people who simply do not see eye to eye on many important things in most sizable teams.

Re:The mortifying ordeal of pairing all day by randomswede on Tuesday May 11, 2021 @05:06AM (#27115885)
Yeah, code reviews (like any other process) can be done wrong.

The way to propose a change, in a "good way" (I am assuming here that no one has unilateral capability of merging to master, and things thus have to pass through review), to my mind, involve doing a few things.

<ul> <li> keep the change small ("small" here is a very fungible quality, but "probably less than n * 1000 lines") <li> does NOT mix "fix bug" / "add feature" / "refactor" (arguably, there are cases where feature-adding and bug fixing are instrinsically linked, let those through) <li> has a change description detailing the why of the change (the "what" is the change itself) </ul>

As a reviewer, your task is not to critique the design (that is why everyone agreed on a design doc up front, no?). It is OK to review the structure of the code, though.

Hopefully, you have a "run this through a linter / style-checker" integrated into your pipeline, so that should be pretty much already done. But, if there are a few things left over, it is OK to point those out.

It is OK to point out that things that should be (but aren't) tested should have tests. If you can spot an edge case that isn't (or doesn't seem to be) tested, ask for that to be tested, also.

People need to be permitted to take the time to do a review.

With these things in place, a review should be pretty quick (at the pace of up to a few lines per second), and most of the time frictionless. But, it does require some discipline, both from the writer and the reviewer.

Re:The mortifying ordeal of pairing all day by anthonygd on Monday May 10, 2021 @01:50PM (#27108771)
I have mixed feelings about code reviews. It seems like sometimes they're an opportunity to show off so every review _will_ find something insignificant; sometimes code reviews are rubber stamps and just not useful. There's a balance though where you get concise thoughtful responses.

It seems like there is something about pairing though that guarantees a focus on shallow insignificance. I don't like dismissing something that has smart proponents but I just can't find a way to make pair programming anything other than negative. The real time aspect rules out depth.

Re:The mortifying ordeal of pairing all day by JohnWhigham on Monday May 10, 2021 @09:47AM (#27105925)
It's because software is incredibly amorphous. It's incredibly hard to compile meaningful metrics about it, partly because every project is different and used differently. We all know this in the back of our heads, and how incredibly daunting it is to squeeze out quantifiable data from it, so we instead don't tackle it (which is normal behavior for humans) and instead go with stuff that sounds and feels good. Pairing increases your code output Well, two it better than one, so it must be better! TDD prevents bugs? Well, writing the tests first sounds good to me, so it must be better!

Yeah, it's a dangerous mindset, and I don't really know how to get out of it, especially since we're all hypocrites to some degree.

Re:The mortifying ordeal of pairing all day by superduperycomb on Monday May 10, 2021 @12:25PM (#27107790)
I have ADHD and pairing is liberating. I don’t need medicine, I can stay focused and motivated for years. I’m seriously worried that I’ll have to get back on medicine because the pairing opportunities in the industry are becoming so far and few between. If anyone has recommendations I’m all ears (and eyes)!
Re:The mortifying ordeal of pairing all day by nerder92 on Tuesday May 11, 2021 @06:27AM (#27116338)
That's very interesting, i never thought about pairing as a tool that help people with ADHD stay focused.

At ThoughtWorks we do promote pairing, please let me know if there is anything I can do to help you out!

Re:The mortifying ordeal of pairing all day by superduperycomb on Tuesday May 11, 2021 @08:45PM (#27125395)
It’s funny you mention ThoughtWorks, I’m happily (enough) employed right now. But I’ve thought about applying for years. I appreciate the offer :)
Re:The mortifying ordeal of pairing all day by brightball on Monday May 10, 2021 @10:35AM (#27106395)
I’ve always encourage pair programming solely as a team cross training exercise and only for short stints.

Aka - Bob built a system using tooling that is new to our team and unknown to anyone else. Bob needs to pair with Fred for a couple of hours so more than just Bob will have hands on experience with the tech.

That’s my only requirement because in my experience it’s better than documentation and it’s a requirement to make sure Bob can take vacations.

Everybody will be able to figure it out eventually, but if something is urgent we don’t have until eventually.

Re:The mortifying ordeal of pairing all day by kstenerud on Monday May 10, 2021 @11:13AM (#27106815)
I like to use bringing someone up to speed as a vehicle for improving the documentation. Docs go stale and decay, and require regular maintenance. But without a fresh eye, you become blind to many of the problems the documentation has. Having a new person go through the docs, feel their pain, and fix the problems (with your help) is a golden opportunity to keep the docs fresh and usable, and more importantly codifies knowledge that can otherwise be lost when people leave.
Re:The mortifying ordeal of pairing all day by goatcode on Monday May 10, 2021 @09:26AM (#27105730)
>There may very well be people who work well in pairs, but rest assured that there are those who aren't built that way. Don't disparage them, don't discriminate against them, and don't play the moral superiority game with them. Accept their diversity and be a better team for it.

The most progressive view I've seen so far in the "official" dogma of pairing says to accept people who work better outside of pairing, but to exclude them from important projects. I'm at a loss as to how this is a good thing, and to me is a sign of pairing becoming a religion of extreme bigotry.

Thank you for saying something that should be common sense! Don't expect everyone to work and think in the exact same way!

Re:The mortifying ordeal of pairing all day by commandlinefan on Monday May 10, 2021 @10:01AM (#27106056)
> but rest assured that there are those who aren't built that way

Yeah, the title suggests an anti-pair-programming rant, but the author seems to have stockholm-syndrome'd himself into accepting it. I tried pair programming once, a long time ago, when it first "came out". We immediately ran into all sorts of practical issues like, how do you check your e-mail? (Back then, you had to read e-mail in a dedicated e-mail client like Outlook). What if there's documentation that needs to be read? Take turns reading a page? I can't even conjure up a world where pair programming is effective in my imagination.

Re:The mortifying ordeal of pairing all day by t0mbstone on Monday May 10, 2021 @12:28PM (#27107815)
The best pair programming experiences I've had involve each programmer using their own laptops, each with a separate screen attached.

The pairing sessions were shared via ScreenHero (now I use Tuple), where each person has independent control of their own mouse cursor, but can grab control by clicking anywhere and typing.

Because the pairing session is constrained to the external monitors and the laptop screen isn't shared, each dev can still check their private email or look up things off to the side, but can also keep an eye on the pairing session and jump back in whenever they are needed.

This methodology works well in a side-by-side pairing environment, and it also works great for remote pairing.

Re:The mortifying ordeal of pairing all day by bluk on Monday May 10, 2021 @10:26AM (#27106279)
I've pair programmed using a shared server for a couple years. Both of us ssh'ed into a server and used a shared tmux session and primarily used vim to edit code. Having a chat program on the side to share links or other info we wanted to keep allowed us to browse things like documentation at our own pace. An audio/video session if working remotely.

If terminal based pair programming doesn't work, Visual Studio Code has an interesting "Live Share" feature which works similarly. You keep some of your extensions (and don't even need all of the same extensions installed to make things work depending on who shares).

Re:The mortifying ordeal of pairing all day by sleepybrett on Monday May 10, 2021 @01:10PM (#27108298)
They've recently added shared buffers to the jetbrains stack as well (or at least goland): https://www.jetbrains.com/code-with-me/

I have yet to try it out though.

Re:The mortifying ordeal of pairing all day by Noumenon72 on Monday May 10, 2021 @03:17PM (#27109687)
I tried it and it was pretty cool. You can each look through the code on the source machine independently, and summon each other to the place you're looking at. The changes I made were put into a separate changeset where the host could roll them back.
Re:The mortifying ordeal of pairing all day by suhlig on Friday May 14, 2021 @02:52AM (#27151509)
> how do you check your e-mail?

You don’t. That’s what breaks are for (assuming personal e-mail).

> What if there's documentation that needs to be read?

- Define an objective together (e.g. „We‘d like to understand how the HTML progress element works“)

- Optionally, agree an a timeout

- Split (both reading at their own pace, on their own device)

- Join and discuss results

Re:The mortifying ordeal of pairing all day by jdlshore on Monday May 10, 2021 @05:17PM (#27110992)
If you couldn’t figure out how to check your email or read documentation, it sounds like you were looking for reasons to fail. Pairing doesn’t mean you’re literally joined at the hip. You’re allowed to exercise judgment.
Re:The mortifying ordeal of pairing all day by commandlinefan on Monday May 10, 2021 @05:41PM (#27111215)
Well, no, in our case it literally did mean we were "joined at the hip" - we shared one computer.
Re:The mortifying ordeal of pairing all day by CRConrad on Monday May 17, 2021 @04:31PM (#27188069)
"Bloing!" -- "Oh look, an email. Never mind, I'll read that later."

"Bloing!" -- "Oh look, I think I need to read that email now." -- "OK, I'll toodle over to my own desk and see if I've got any. See you in five."

A computer isn't a hip.

Re:The mortifying ordeal of pairing all day by ratww on Monday May 10, 2021 @06:15AM (#27104423)
> The irritation of being that close to someone and having to engage with them for even half an hour is draining, and I took more frequent and longer breaks because of this (much to the annoyance of my pair-partner, who couldn't work while I was away).

For me the issue wasn't just the difference in frequency or duration of breaks, but also the fact that different people prefer to take breaks at different times.

In the end, unless you're very lucky, it ends up being a compromise for both parts and the productivity gains are negated by the constant context switching.

Re:The mortifying ordeal of pairing all day by ballenf on Monday May 10, 2021 @10:21AM (#27106232)
I think it's also fair to apply that tolerance to the team level: letting teams exist that require pairing. And teams that never pair. And everything in between.

That is, the parent point, should not be used as an argument against there existing teams with team-level pairing standards or expectations.

If we get to the point where it is hard to find a non-pairing team, then maybe we revisit this. But given the diversity of people on this topic, that seems extremely unlikely.

The justification on teams that require pairing should be a non-judgmental "that's just how we do it here. For now." And people who have strong preferences should be able to ask about it interviews.

Re:The mortifying ordeal of pairing all day by athorax on Monday May 10, 2021 @11:27AM (#27107065)
I usually come off as a bumbling idiot when I try and pair program. It completely breaks the way my brain works trying to explain something while also trying to reason about a piece of software as a whole
Re:The mortifying ordeal of pairing all day by jhedwards on Monday May 10, 2021 @10:18AM (#27106209)
How do you teach other people? In our team we sometimes have people working on systems that they are unfamiliar with, either because they are new to the team or new to the feature/system, and we've found that it saves a huge amount of time to have someone who is familiar with the system pair with them to get up to speed.

Sure, once the person is comfortable (and the "expert" is comfortable that they aren't going to do anything that they'll have to undo later) we typically go off and work on our own, but I just don't see how you can train others efficiently without pairing.

Re:The mortifying ordeal of pairing all day by kstenerud on Monday May 10, 2021 @10:56AM (#27106611)
I bring up the existing documentation, and have them run through it mostly on their own with me sitting there, asking me whenever they have questions. I watch over their shoulder and nudge them if I see something going awry. They jot down notes that they'll use to update the documentation later. Once they're up and running, they ping me whenever they get stuck, and then jot down notes for the documentation later.

The important part is that they read the docs (as a sanity check that the docs still make sense to a newcomer) and perform the actions themselves. I don't touch the keyboard except when it's a complicated, exceptional issue that they're not expected to deal with at this level.

The other important part is that they update the documentation.

Re:The mortifying ordeal of pairing all day by eloisant on Monday May 10, 2021 @10:28AM (#27106319)
I've had great pair programming sessions in the past.

But it was always occasional, and short. Sometimes longer or more often if it's someone I really like to work with, but there have been only a handful in about 20 years of career.

I think that the biggest mistake about pair programming is about forcing it, especially when do it all day. I could never do that!

Re:The mortifying ordeal of pairing all day by eplanit on Monday May 10, 2021 @08:48AM (#27105399)
In my experience, I've seen pairing work in the context of an experienced engineer mentoring a junior, as part of a spectrum of engagement: observing/reading, shadowing, pair programming, to then where the junior acts with more independence with some oversight, and then they're ready.

Beyond that, as a general rule it's only attractive to very mediocre engineers (who are honest enough to admit they need help).

In interviews for experienced roles, I might ask "what do you think of pair programming", and if they're positive about it there's a good chance I'll pass.

Re:The mortifying ordeal of pairing all day by lghh on Monday May 10, 2021 @08:56AM (#27105467)
> as a general rule it's only attractive to very mediocre engineers

"Thing I don't like is only useful to developers who are worse than me" is a super toxic take. If you said something like that when I was interviewing you, regardless of how much pairing the company I'm running the interview for does, I'd pass on you as well.

Re:The mortifying ordeal of pairing all day by randomdata on Monday May 10, 2021 @09:59AM (#27106039)
...and then complain that there is a "shortage" of developers.
Re:The mortifying ordeal of pairing all day by lghh on Monday May 10, 2021 @05:09PM (#27110923)
I think a developer presenting themselves as unqualified for the job, via being an asshole in a job that requires good communication skills and teamwork, you have a pass to say you have not gotten a qualified candidate yet.
Re:The mortifying ordeal of pairing all day by paulcole on Monday May 10, 2021 @08:54AM (#27105451)
> it's only attractive to very mediocre engineers

This is a feature, not a bug!

Most people are mediocre at nearly everything. The mediocre person who knows their limitations and embraces systems to get the most out of themselves is more valuable than the mediocre person who sees themselves as a rockstar.