I recently met a programmer who said he hated pair programming because he likes to do his own thing. As a Ruby newbie, it's been pretty invaluable to my learning.
Pairing has been both fun and challenging for me. I enjoy the personal aspects of pairing--meeting new people and getting to know my cohort better. Working virtually as we do in Phase 0, pairing helps me feel connected to the community and reminds me that I'm not struggling through this process alone. I have found that different people have different styles and pairing is always different each time I do it.
The challenging part for me comes when we get deep into a challenge and come up against an issue. That's when you're really faced with your own and others' work styles. Some like to step away, others like to research, while others like to tinker. When we're both stuck, it can be frustrating as we both probably come into the session with the hopes of solving the challenge within a reasonable timeframe each time. For this reason, pairing keeps me on my toes because I want to be both culturally and technically valuable to my pair.
It is not easy to give or receive feedback. Reading my feedback produces a bit of anxiety. As a newbie, I have struggled with some of the material and so it's not always easy to acknowledge that, despite knowing it. My feedback generally has been actionable, specific, and kind. I feel bad though when I feel like I have let down my pair. I use this to motivate me to read and work harder to be technically stronger for future pair sessions.
Writing feedback has also brought its share of challenges. It's easy to get frustrated when working through challenges or to have different opinions about how to proceed on a problem. I try to put myself in someone else's shoes and be compassionate. At the same time, we're only going to improve as people and programmers if someone takes the risk to give us honest and kind feedback. That's what I want, so I do it for others.