Where I’m working we practice Pair Programming, but from my understanding, we do it in a different way than many. This is my first experience pairing, but I’ve read and my co-workers have told me about places that have one computer and someone “drives” while the other sits over their shoulder and watches. Another way is about the same, but each have their own keyboard synced to the same machine, so there is less over the shoulder watching.
For us, each person has their own machine, and one remotely connects to the other’s. It’s nice to be able to have one person typing and trying to solve and issue, while the other may be looking up a solution, or discovering the next challenge. It’s a good system and I really enjoy it, but it is exhausting.
Being “tied” to another person for 8 hours a day is extremely tiring, analyzing the code they write and trying to get inside their head to understand their reasoning can be tough, especially when you’re new and don’t know your pair partner that well yet. Pair Programming has another advantage, it’s an amazing learning tool. Being tied to a more experienced person who can give you immediate feedback is fantastic. In a month I’ve learned more than I think I would’ve in six non-pair programming. It’s what I think is the biggest advantage to pair programming, when I pair with someone I can quickly gain all of their experience. There are 5 other guys in my department, so essentially I “gain” all of their knowledge.
I’ve only been Pair Programming for a few weeks now, but I already can’t picture working in any other environment. I’m looking forward to the coming months and learning more.