The way John and I pair together works like this. He'll ask me a pointed question which will require some thinking. John won't rush me. Beyond the answer, he is looking to understand how I think. I'm a programmer. He's a sales person. Our audience is composed of programmers. Whenever I have a chunk of free time I'll hop on Screenhero with John so that he can see my screen or me his. When we talk we often want to show each other examples, context, articles to read and sites to visit. Through our conversations John and I will take detours to talk about cognitive science because we both love that.
Katie is a programmer and a damn good one. Yet we probably only write code together 15% of the time. Most of the time we talk about code. We talk about interfaces. How names feel. How things fit together. We get excited about deleting huge chunks of code. We pause while I try to paraphrase something brilliant she just said because the world needs to know and I must tweet it now.
Morgan is bothered by not understanding something. When she wants to understand, at first I think: "Sure, I know how that works. We can take a short detour so I can explain that.". Then I realize: "Shit, actually I have no idea how that works. How the fuck have I never bothered to look into this?". So we pair. I can use the accumulated system knowledge I have and, with her, come to a satisfying solution faster. Perhaps because she doesn't know yet where and what to look for. Yet, without her I would have never looked. I owe her that fresh perspective. This renewed attention to details that you often lose when so many things need fixing.
Joel is a linguistics nerd like me so together we defy the adage that programmers suck at naming things. That said, we sure talk about naming things a lot. When we pair, I spend a lot of time making Joel comfortable with the fact that I have no idea what I'm doing either. But we can figure it out together. What will benefit Joel from pairing with me is discovering the connective tissue of my workflow that you can't really learn by reading programming books. I liken it to the colloquialisms and slang I learned from TV shows and my friends while I was on my way to become billingual. It can't be taught, it can only be experienced.
Knowing John, Katie, Morgan, and Joel better; understanding how they think, what frustrates them, what they cares about, what makes them lose sleep at night; that's how we can all design and develop a better interface to work with each other and build software for other real human beings.
My kind of pairing is simple. It's loose. All it takes a pair of people working together to achieve something or simply to learn something from each other.
We do not spend 100% of our time on task. Ever. If you think that's a waste of valuable company time then you don't understand that the most crucial pieces of the entire machine are the relationships between the humans that keep it running.