Pair programming, that deceptively simple practice introduced to the masses by Extreme Programming, but done by everyone at some point or another, is one of the most divisive issues that I have come across. Some people hate it, others love it. Like any other practice though, it serves a purpose and must be understood to be used effectively. I think that one of the most deceptive things about pairing is that it looks easy, when viewed from the outside. Two people sitting at the same computer working on the same problem. What more is there to it?