This page may be out of date. Submit any pending changes before refreshing this page.
Hide this message.
Quora uses cookies to improve your experience. Read more
28 Answers
Ridhish Guhan
Ridhish Guhan, Software Engineer (Java, Android)
  1. For pair programming to work, you need 2 people who are not only good at development, but who are ok with watching those who aren't as efficient with keyboard shortcuts / development tricks take control. I know I suck at watching slower programmers wield the holy mouse and keyboard. I would just yawn away. Basically, it requires a lot of patience, and efficiency in using tools takes time to learn. So even if I teach a couple of useful shortcuts to my PPP, I cannot expect him/her to use it fast from thereon itself.
  2. Some people like to figure things out properly before proceeding (me). Many people just like to get it the fuck over with. Such people WILL NOT BE ABLE TO WORK TOGETHER. When I do something, I not only want to do it properly, I also want to be able to do it faster and diligently the next time (preferably, without googling it again). Many people think that speed is the most important thing when doing some work. These are two schools of thought which work well in their own right, but which do not go together.
  3. There are some situations where 2 options are equally good/ bad (e.g. naming conventions). There has to be a compromise. One person has to give up. If both people keep fighting for things like this, pair programming can be a nightmare.
  4. Both people should have the same wavelength and should be able to have a light-hearted conversation every once in a while, while working(else you feel like you're working with a zombie).

Pair programming can make you uncomfortable on sooo many levels. It all depends on the kind of people more than their specific skills. Why don't you ask two managers to manage a team? Let's see how that goes.

PS: These are my opinions and may not represent what others who oppose pair-programming think.
Your feedback is private.
Is this answer still relevant and up to date?
I've done lots of pair programming but only started doing it after a long career. I've been programming for 34 years in total but only started pair programming about 6 years ago. It didn't take long to realize that one of the secrets about pair programming is that a pair of developers tend to focus more on the task in hand. Whereas a single developer can easily go off on a personal expedition to explore their favourite technology. Let's say part of the task is to use an SQL database and the developer just loves SQL then guess what? The developer -- on their own -- might spend way more time than necessary messing around with SQL, polishing their code, reading up about SQL, and generally pfaffing around experimenting & trying things out. If you're in a pair then this type of time wasting can still go on but to a much lesser extend. Effectively the programming pair has twice the amount of conscience about getting the task in hand done. I would say that this double conscience is the best part about pair programming but for some reason nobody seems to write about it. So AFAIK this is a first! :-)

So if you're set in your ways about wanting to be able to take your own sweet time for any particular task then I'd say this is the #1 reason to oppose pair programming. #2 is probably more of a social aspect. There's nothing worse than pair programming with somebody who is 'driving' who doesn't want to, or isn't interested in learning to, speak out loud as they are thinking. If somebody is thinking and not talking then you can't follow them and you're not on the same page, not working  together, and you'll feel more like a right hand that has been cut off. Obviously different developers will master the art of thinking out loud in different time frames and to different degrees. But basically if you're shy and just don't want to do it then you'll suck at pair programming... or at least it'll suck for the developer pairing with you.

I'd say the #3 reason to oppose pair programming would be religious advocacy of various technologies. If a vim fanatic and an eclipse fanatic start pairing together and they can't 'get over' themselves and their personal fix of technology then pair programming  sparks will obviously start to fly... if either of them start to pair program at all.

These would be the top 3 reasons that I have observed. Interestingly they are also the top 3 reasons why I favour pair programming :-) #1 It's great to have the whole team ripping through the highest priority tasks without getting distracted. #2 When experienced pairs learn to think aloud then it's amazing how much more productive two brains can be at solving  problems and not making mistakes than one brain. And #3 Pair programming is the ideal way to learn and embrace new technologies on-the-fly!
Your feedback is private.
Is this answer still relevant and up to date?
Kurt Guntheroth
Kurt Guntheroth, 35+ years wrangling bits; 20+ doing C++ development. Windows, Linux, embedded.

Q: Why do many programmers oppose pair programming?
A: Because pair programming is too expensive in most cases for the benefit it provides.

The point of pair programming is to get feedback on the code you are typing from a co-pilot. Now, if the pair consists of a new guy typing and an experienced hand watching, it’s a decent way to get a new guy up to speed. But if both workers are experienced, there is not feedback all that often. The same result could be had for 10% the cost by code review.

Tim Mensch
Tim Mensch, Freelance CTO/Software Architect
I've tried pair programming. It's a great way to teach junior developers. It's also a great way to pass on important information about a code base.

But for really strong senior developers, it simply does not double the effective productivity to have two people sitting at the same computer.

This has certainly been my observation, but there have also been studies. Looking at junior developers, they gained the most from pair programming. Intermediate developers just about hit a break even point, and top developers lost efficiency.

As a strong developer, I can crank out code really quickly and accurately, without needing to be reminded of things or to have errors caught. I was "pair programming" on one job recently, and it ended up more like performance programming: I was coding and explaining what I was doing the entire time, while another developer watched and occasionally asked questions. It was OK, since part of the point was for it to be educational, and I enjoyed talking through everything. But it didn't speed anything up.

I could see using pair programming for particularly hairy, complex design tasks. Any time you're working on architecture, having two brains to bounce ideas back and forth is great. You're less likely to miss important details that way, and for design work, an important detail can mean a lot of code refactoring or rewriting if you don't catch it until late in the game.

The short answer is that developers like efficiency, and if they get good enough they recognize that they can be more efficient without pair programming. Some developers may never reach that level, though.

And it's certainly more fun to pair program, so I can understand wanting to hold onto the practice even if you could do better alone. I already charge as much per hour as two (or more) programmers, though, so doubling that number again would be a hard sell to my clients.
Paulina Jonušaitė
Paulina Jonušaitė, has been programming in multiple languages and paradigms for 15 years.

Because Pair Programming™, as enforced by clueless managers looking for Agile buzzwords, is complete unadulterated garbage. It’s yet another case of “X is good, therefore, X taken to the extreme and enforced by the company rules must be better” (compare with TDD).

There is one and only one situation, where pair programming makes sense — knowledge transfer from the more knowledgeable person to the less knowledgeable person. Other than that, you have just wasted twice the development power for at best +20% benefit. Let me spell it out for you explicitly:

If both developers in the pair are of the same skill level, at any given moment one of them is almost certainly completely wasting their time.

Make no mistake, where I am working, we are a team. If there is a tough problem to solve, we will get together and throw around some ideas until one of them sticks. We regularly (almost daily) review each other’s code, especially when the work is still in progress (like Alan Mellor would say, “Code review on pull requests is most often already too late”). What we don’t do is have half of the team sit on their asses and twiddle their thumbs, while the other half is writing some routine code no one is bothered about.

I am about as excited about pair programming as David Gilmour would be excited about someone else plucking the strings while he were only doing fingering, and then switching places every once in a while. It’s about as efficient as having two separate internal combustion engines in a car.


Added on June 18, 2017: it has been brought to my attention that I was unnecessarily rude to Kent Beck in my last sentence, so I removed it. He is a good software developer, and it is likely that his idea of extreme programming fitted his circumstances at the time of the (in?)famous Chrysler project. I completely disagree with his assertion that it is the correct way though, and I would regard it as a good example of survivor bias (in other words, people who tried the same and failed completely didn't go on to write or edit tens of books about it).

Indeed, I don't think there even can be a one-size-fits-all solution to software development. Teams, clients, products, and tools all are different from case to case, and the process must be adjusted accordingly. Pair programming in particular only works for specific circumstances, which aren't encountered very often, yet some people treat it as a gospel because it Worked That One Time™. It is rather ironic, really, that extreme programming, a set of concepts revolving around flexibility, has become this calcified and rigid in a lot of people's minds.

Russell Wark
Russell Wark, Developer, musician, dad, nerd, Whovian, British, American.
I can see the benefits, in as much as two heads can be better than one sometimes. Sometimes you can stare at a page of code for a day and be none the wiser as to how to proceed - an extra pair of eyes on the code can be useful in that sort of situation.

But personally, I hate it. I just cannot stand someone else being that close to me while I'm working. It's too distracting. I work best on my own, disconnected from everyone and everything else in my immediate vicinity.

I guess what I'm saying is that it depends hugely on the personalities of the developers involved. In my experience, many developers (me included) prefer to be in their own bubble, and, if they have to work with others, to do it asynchronously via source control. Of course, some love it and thrive on it, but I suspect they're in the minority.

Me + noise-cancelling headphones + no shoulder taps = productivity.

Me + people sitting or standing anywhere near me = angry, irritated and unproductive. F**k off and let me do my work.

Plus, I generally loathe and despise anything related to "agile" or "extreme" programming - it's a cancerous polyp on the anus of software development (see my other Quora answers for more on this).