Pair programming works for me because:
- when we’re working with unfamiliar code, we can split up and then guide each other through the parts we know
- hearing/seeing other people’s thoughts keeps my mind fresh with new ideas
- I’m not so tempted to be checking my email or playing Mines
- at least someone knows how to get C/C++ code to compile
However, pair programming does come with its challenges. For college computer science courses, one of the biggest is finding a time you can work together, but the challenge I’m most interested in is agreeing on an editor to use together. Sometimes it’s simple. For Network Security and Privacy, there was barely any coding involved so my partner and I managed to do the whole thing with gedit. (Well, okay, I did type up one short script in vim). In Software Design last year, we were learning how to use tools with NetBeans, so there wasn’t even a choice there.
In Operating Systems, though, my partner and I need an editor that’s more sophisticated. Okay, there are plenty of those, no problem, right? But the fact of the matter is that he’s an Emacs afficionado and I’m vim all the way. I prefer simple keystrokes to Meta-combos, and he just doesn’t grok command mode.
I’ll admit it. Honestly, the Esc key often seems kind of far away, and after years of use I’ve only recently started getting the hang of visual mode. (In retrospect, I have no idea why it took me so long.) But he’ll open up Emacs with our project, I’ll have a burst of inspiration, grab the keyboard, and at the end type in :w. Ugh! Other times I’ll open up vim and then he has a burst of inspiration but causes crazy stuff to happen because I wasn’t in insert mode.
By now I think he does know how to get into insert mode and I’ve at least learned how to save in Emacs, but it’s obvious that one editor isn’t going to work for the two of us. We needed a new plan…
So screw the former pair programming paradigm! We now sit happily side-by-side with two different monitors, two different machines, two different keyboards. He keeps Emacs open, and I’ve got my vim. Whoever’s driving at the time gets to use their preferred editor and then check in the code once there are any changes or we want to switch off. And whenever we’re absolutely stuck on something, we both get to fiddle around with the code individually until one of us finds something that looks like progress.
It’s kind of weird, though. The last time we were working on a project together, I was using DVORAK and having to switch back to QWERTY regularly to pair program. If we managed to agree on an editor, I’m sure we’d find something else crazy to disagree on. Then again, anything’s better than fuv.