Pair Programming Tools – 2014 Q1 Survey
airpa.ir
airpa.ir
This general setup is really nice when you are working with someone else, they are typing, and you need to do something on the side such as checking your email. Also works good with Emacs with two windows working on different parts of the same file.
The benefits are: 1) transfer of knowledge -- you have at least one other person that knows the thought process behind the code; 2) cleaner code -- when paired up, you are in a semi-teaching mode, so you are more likely to use clean and understandable code. That is, if it is too hard to explain it, and you are required to explain it to the point of understanding, then you will have a tendency to not be as obscure.
The main drawbacks: Often times, when something is sufficiently complex, you really need to concentrate for hours to develop a solution. And having someone (either more junior, or more senior) throwing out random suggestions, when they have no clue what data structures you have built up in your head, is somewhat counter-productive. Another major drawback -- too much transfer of germs. You need to make sure each person has their own keyboard/mouse, and preferably some extra space between them (such as pair programming using remote displays, and not being right on top of each other).
Disclaimer -- I haven't worked in a full-time developer role in any shop that uses pair programming extensively, although I have paired up with other developers from time to time to help them through some C code that they didn't understand.