The New York Times did a profile on the topic of pair programming, the art of writing software with a partner. They looked at it through the eyes of an individual who does pair programming every day.
The profile is pretty good, and makes a strong case for pair programming. While Im not fully prepared to surrender my freedom to another person for 100% full-time pair programming, I think that doing pair programming is something that can be very effective.
One thing that the New York Times doesnt really play up is that pair programming is good for management. This is sometimes lost on management, who wonders why they should use two programmers to do the work of one. They miss the point, though, when they do the math. First, a second programmer provides a second set of eyes, meaning that bugs are reduced. Fixing bugs takes time, and this reduction in bugs actually saves time. Second, management also misses the fact that two people put in eight hours of productivity each day, together, rather than perhaps four hours total, if they were programming separately. This is due to the fact that programmers get bored, get distracted, or generally get off task, but with another person there is a peer pressure to keep working.