Pair Programming is an Agile Development practice that was born out of the Extreme Programming movement.
Working as a team of [exactly] two, at a single computer, the pair will slide the keyboard and mouse back-and-forth throughout a “pairing session”. This increases the code quality by providing a “greater than the sum of its parts” effect of two developers working on a single problem domain.
The increase in quality of the code, combined with the effect of knowledge and understanding on the project being spread across multiple developers, can produce a large savings in cost on the project as a whole.
In a Test Driven Development (TDD) shop, it is most common for each member of the pair to take turns a) writing a test and b) writing code to pass the test. This “ping pong” yields a cumulative effect on the overall quality of the final product.
To be most effective it is important that pairs are intermixed; not the same couple of developers always working together.
Pair programming is considered to be very “social”. It can be akin to a marriage because you learn to cooperate with a peer in a close, give-and-take relationship. As such it is often very difficult to become comfortable with pair programming. Some developers simply NEVER feel quite at-home. In the end, the willingness to share, be a bit vulnerable and work cooperatively toward a better product will make you a far better developer (and a better person overall).