There are many advocates of pair programming who think that this way of organizing software developers’ work is best for the company. However, I have not seen much explanation as to why it might be good for a developer. Developers usually enjoy what we do and care enough about the success of the projects we work on, but I don’t think many of us would get up in the morning and commute to our place of work if there was nothing for us as well. We like to be paid well and we like to have a career. This means that our choices are not only defined by what is good for the company but also what is good for us personally.
Pair programming was around for quite some time (XP, since 2000), but recently, I've been hearing more about it than before.
Interestingly, I also have an impression that 100% pairing normally involves either an IT consultancy practice or people who in the past used to work for an IT consultancy practice.
I suspect there is a reason for IT consultancies to practice pair programming. You can charge two people to do the same work, explaining that it improves the quality and it allows you to send to a customer an inexperienced developer paired with one that has experience while charging as if they both were experienced.
I can also understand why managers might like it. It allows them to see developers as an exchangeable “resource,” eliminating a “bus factor” while at the same time ensuring that the developers police each other in terms of actually “doing the job.”
What I don’t understand is why some developers support this.
Do people really want to be sitting next to someone else at the same desk day in and day out instead of having their own place in the office, which they can personalize the way they like (pictures of kittens, Star Wars posters, or whatever else their personal preference is)? Don’t they want a place where they don’t have to suffer because someone else has poor hygiene habits?
Do they want to be able to use any IDE they fancy and set up their machine to whatever weird configuration they favor, or do they prefer this decided by a “committee” and then be forced to follow rules?
Do they like to be “one of the pair” instead of “that guy who did that cool thing”? Are they feeling too insecure in their professional abilities that they are afraid to work on their own?
How do they see themselves in 10 year's time? Still as a faceless member of a “team” whose members are not even trusted to work on their own at their own desks?
Talking about personal interest as far as developers' concerns go, I can see only disadvantages:
It is more difficult to demonstrate your own abilities and worth to management if they never see just your name attached to anything unless it is with another person. Thus, there's fewer chances for career advancement based on your abilities as a programmer.
Management sees you as replaceable. As far as they're concerned, there are always other people available to do your job; everybody you are pairing with is a good enough candidate.
You have less freedom over what you do and how you do it. You have to explain every step to your pair and you have to coordinate all of your activities with others.
You have less comfort at your workplace, as you have to share space in front of the screen with someone else.