Personally, I’m a fan of pair programming.
Both as a learning tool and as a way to generate quality code.
Most of the time, I find that the amount of code that has to be written is rather small. However, even when using a “safe” language and/or paradigm like Rust or functional-style Scala and C++, the old idiom holds true and most of the time is spent debugging. Maybe not debugging memory errors or concurrency issues, but fixing faulty logic or benchmarking and improving underperforming code.
And I “feel” that pair programming helps with generating a better foundation for that “debugging” phase (or, improvement phase, or whatever you want to call it).
However, trying to prove this “scientifically” is an exercise in futility at best as far as I am concerned.
There are too many confounding factors when looking at practice differences between teams and companies.
Any closed experiment will have the issue of problems which aren’t complex enough and any study of “real” problems will have the issue of confounding factors.
I believe programming practices is one of those areas where we ought to reason about things, rather than base them on analyzing data. Same goes for most complex social phenomenons really. You either end up with too much noise or with data that is too unrealistic by trying to experiment in a closed setting.
And, again, I say this as someone who loves pair programming and makes a living by analyzing data.
Lets assume for argument’s sake that Pair Programming is empirically proven to be faster than individual developers.
What do you do with all the people who really hate pairing? Do they get different careers? Are they forced to suffer?
I would suspect that pair programming is unlikely to be empirically faster if you cannot retain your developers, and that some concession to individual preference would be made.
If pairing becomes the norm, then those who won’t pair will be relegated to the fringes of the market.
Well that is depressing to think about.
I paired full time at a company for 2 years and ended up leaving because I couldn’t stand pairing. Now at my current job they’re trying out pairing and I’m fighting tooth and nail to keep it always optional. Im starting to wonder if I’m fighting an uphill battle.
Perhaps people who really hate pairing can study the theory into what makes pairs better. Armed with this information a disciplined & dedicated individual should be able to narrow the gap, at least somewhat.
Saying that… Let’s do a thought experiment. Assume for a moment that police body cameras are empirically proven to reduce police violence and civilian complaints. Should officers be able to opt out because they hate wearing the camera?
Lol what? Are you seriously comparing police brutality with not pair programming? That’s so ripe with logical fallacies I don’t even want to touch it.