Musings, rants and questions about happiness at work.

Nice Pair - Pair Programming Archetypes

This post first appeared on the Lonely Planet Engineering Blog

What kind of pair programmer are you?

Pair programming is an excellent method of producing quality software, minimising business risk and making everyone in the team smarter. It can be a fun social activity for those of us of the nerd persuasion. And it can also be frustrating, boring, aggravating and a waste of time. I’m interested in what makes a pair gel, how to maximise the good times and minimise the not-so-good times. I’m not a clinical researcher, just a software developer writing from personal experience and those of my peers.

Pair programming is good for business and good for programmers, that’s what repeated studies tell us. There are a lot of resources out there on how to pair program and some resources on how to do it well, most of which focus on the code. Code is simple. Once you write it down it stays written down, has repeatable outcomes and doesn’t self-mutate over time (yet). We can write standards and rules and heuristics for writing code in pairs and measure the outcomes and draw conclusions.

People on the other hand are only consistent in their inconsistency, don’t always produce the same outputs with the same inputs and often don’t have compatible interfaces. Understanding what we bring to the pair can help us moderate our own less helpful characteristics and develop useful ones. Below is a list of pair programming archetypes with Highlights and Lowlights for each plus a Check Yourself section which might be helpful if you find yourself in a category, or pairing with someone in that category.

finger coder
The Finger-Operated Coder

Thinks best while typing. Expresses himself* in written code on the screen rather than words.

the thinker
The Thinker

Sits in silence and thinks problems through before talking or coding. Generally soft-spoken.

The Cheerleader

Very supportive, engaged pair who thinks almost everything his pair does is awesome. Slow to criticise, quick to praise.

big brain
The Brainiac

Knows she is the smartest person in the room, and by certain measures probably is. An expert on the tools and technologies under development.

the newbie
The N00b

A newcomer to the codebase, or coding, or someone who knows less than his pair.

The Surfer

Has to show you the latest YouTube/Wiki/HN/Twitter video/article/tweet/pic/site/page, you will totally love it.

the rock
The Rock

Has read everything on OOD, BDD, DDD, TDD, FP, XP and all the other acronyms. Writes code that always conforms to the latest and best standards.

The Talker

Does his best thinking while talking so talks a lot.

The Twitch

Can’t keep digitally still. Constantly flicking between windows, highlighting random text or typing nonsense characters when not coding.

Stow Away Beer
The Stow Away

Sits back and lets the other person do all the thinking, typing and talking.

Private Benjamin
The Private

Waits with their fingers on the keyboard to be told what to type. Expects their pair to have all the answers.

Professor McGonagall
The Constant Corrector

Cannot tolerate a mistake on the screen and corrects you as you type.

The Vault

Assumes her position at the keyboard and begins to code. Nothing gets in or out, will not talk or surrender control of the machine.

The Vacancy

It is 4pm on a Friday, you are going to the beach for the weekend and have remembered you forgot to pack your towel. Also you didn’t get much sleep last night and you’re hungry. Oh, and you’ve got the flu and you are hungover. The person sitting next to you is programming, but you are not.

Like all attempts at categorisation you probably won’t fit entirely into one of these boxes but are more likely to be a combination of several. Becoming aware of which categories you fall into will help you to lean into the strengths of the archetype and also to minimise those that interfere with effective pairing. This list isn’t designed to make you feel superior or inadequate, we’ve all had our N00b days and our Brainiac days. By no means is this list meant to be exhaustive, add your own to help us all become nicer pairs.

* I'm so over the male/female pronoun issue, so I'll be using he/she randomly throughout, no gender profiling intended.

03 Jul 2015