In thinking about the pair programming that I've done, I realized that I can separate all of my past partners (all 6-8 of them) into four categories:
- Equally skilled
- Less skilled
- Much less skilled
- Skilled in a different domain
Of these, I have found the “less skilled” partners to be the most frustrating. Not because of their personality, but because during the sessions I've felt like there is a mutual understanding of the goal, but I would just be able to get there more quickly (for example, because I'm more experienced with the libraries or environment). I haven't felt this way with the “much less skilled” partners because I believe there is a mutual understanding that the session more akin to a tutorial… So, in my mind, the goal becomes “teach my partner” instead of “solve a problem”.
The times I've paired with an “equally skilled” partner do not stand out in my memory, so I assume they went okay.
My favourite pairing experience was when a friend and I had to figure out the inner workings of some example C code for a micro controller. My friend knew a lot about micro controllers, I knew a lot about C, and together we were able to reverse engineer the hideous example code much more quickly than either of us alone could have. It was a lot of fun.
: as I write this, I don't have any specific people in mind, just memories of my experience.