These days, programming is a team sport. But like many, I am still trying to figure out what the most effective rules are for the game. Pair programming keeps coming up. I probably should not tell you this, but here it is: I’m a lousy pair programmer.
At a conference, I meet a developer who doesn’t shut up about the kind of programming where you pair up all day every day. My first thought is ‘who is paying for that?!’. But their enthusiasm is infectious. On further inquisition I discover that he is new at the company so is loving the quick pace of learning that came from pairing. I am skeptical that it is so great for the senior dev.
I’m game for learning anything, even if it does threaten my life-long habits. I discover Sarah Mei and read about her first two months pairing and then pairing with junior developers. I feel qualified to do it, and I soon have my first opportunity: my company has 3 interns doing a 12-week programming placement. I announce we will be pair programming and immediately pair up with one of the students from France.
At first it feels all I am doing is issuing directives. And then having to slow my speaking so they can understand me. So then I shut up and they start to go down the wrong track. I remember fondly many times that I’ve gone down the wrong track and learnt something useful. But it feels too agonizing watching someone else do it in real time, so I leave them to it. Instead I observe quietly from a distance as if it is my own toddler trying to figure out how to climb out of their crib. All in all I think I last 40 minutes on the pair programming.
It isn’t long before I am ready to try again, but with a different dynamic. This time I want to pair with someone more senior: which just so happens to be my co-founder and spouse(!). Ambivert is the term you use when you cannot commit to being an introvert or an extrovert. And I definitely have commitment issues. On the other hand, my partner is a fully fledged introvert.
I volunteer to be at the keyboard first. But it turns out I am allergic to imperative commands and can’t seem to switch it off. I suggest he make requests and adjust his tone. He says he will try. He suggests, in a nice tone, that I use ‘Alt-Shift-R’ and other keyboard shortcuts to speed things up. I decide it is best if we switch roles. Sarah has warned us that power dynamics are against us.
So we agree to swap places. Now I am giving directives and he is using all the keyboard shortcuts and things are progressing well. We are still arguing, but it is the good kind of arguing. In fact we even get into the flow state, just like Sarah said we would. By the time we finish, we have solved so many things, the output is amazing & I am exhilarated. But he on the other hand my partner is exhausted: endless listening, constant voicing what they are doing, arguing , agreeing, disagreeing, etc – it is all too much.
I draw some shoddy conclusions from the whole episode. It will be a while before I give it a try again. And I will have to find a new pairing partner. For now, how people can pair program for extended lengths of time remains a mystery to me.