Pair Programming in the Time of Covid
Tags: agile, beginners, productivity, programming
Published: 2022-01-13 14:44:22

It’s no secret that Covid-19 has changed almost every aspect of our lives. It’s changed [how we work](https://www.pewresearch.org/social-trends/2020/12/09/how-the-coronavirus-outbreak-has-and-hasnt-changed-the-way-americans-work/), [how kids go to school](https://www.edweek.org/leadership/a-year-of-covid-19-what-it-looked-like-for-schools/2021/03), [how we socialize](https://www.nwacc.edu/news/30-ideas-for-freetime-during-covid-19.aspx). But it’s also affected how we pair program.

## What was pair programming in the before times?
[Pair programming](https://www.agilealliance.org/glossary/pairing/#q=~(infinite~false~filters~(postType~(~'page~'post~'aa_book~'aa_event_session~'aa_experience_report~'aa_glossary~'aa_research_paper~'aa_video)~tags~(~'pair*20programming))~searchTerm~'~sort~false~sortDirection~'asc~page~1)) is a way to develop software. It used to involve two software developers sitting down at one workstation and writing code together. There is usually a “driver” who is typing and “steering” the mouse and a “navigator” who is thinking more strategically about the big picture of what the code should be doing. You switch roles constantly and at the end of the day, you have a software product that’s better than if one person sat down by themselves and wrote it and then another person sat down by themselves and reviewed it.

I don’t know about you, but asking me to sit down next to someone and share a keyboard, mouse, and general air with them sounds like a great way to catch all their germs. And that’s not really something I’m interested in doing right now.

## So how do you pair program remotely?
Personally, usually in sweatpants with at least one cat trying to attack the mouse on my screen.

But seriously, it’s a lot harder to pair remotely, but that doesn’t mean you shouldn’t try. Here’s what I’ve found works for me:

### Be intentional about pairing
It’s much easier to scroll through reddit, or go start something in the slow cooker, or do some online shopping when you’re alone in a room than it is when you’re sitting next to someone sharing a screen. I do much better when I put my phone on my desk, with the screen down. I’ve also learned I do better when I close non-pairing related tabs. I remind myself that I’m pairing and that I need to be an active participant.

### Find a good screen-sharing program
At Focused Labs, we’ve settled on [Pop](https://pop.com/). I really like Pop because it gives me the ability to both draw on and take control of my partner’s screen. This is really useful because I think we’ve all been in meetings where we’re trying to tell somewhere what to click on and we have to say, “okay click on Edit, now it’s the third item, nope you went to far, no a little to the left, okay too far left, THAT’S IT!” It’s so much easier for everyone to just circle it with your mouse, or click on it for them.

It’s also great when it’s time to switch roles. You don’t have to push everything to git and have your pair pull it, you can just type on their screen.

### Over-communicate
There’s a lot of [non-verbal communication](https://medium.com/@sgblank/whats-missing-from-zoom-reminds-us-what-it-means-to-be-human-651be7cbff39) that humans take place in that we simply cannot do over Pop (or zoom, or tuple, or whatever you choose to use). Because of that, it’s really important to use what we do have. And that’s our video and our words. I think it’s super important to have your video on when pairing. Your mouth might be saying, “oh sure, I understand totally what you’re saying.” But your face might be telling a very different story. If I can only hear your words, and not see your face, I’ll move on thinking we’re on the same page.

On that same idea, tell the truth. If you’re lost, say so. There’s nothing wrong with that. Everyone processes information differently. Tell me you’re stuck so I can think of a different way of explaining what I’m talking about.  Also, if I’m making a bad decision, don’t just make a face but say nothing. Tell me (kindly) why you think I’m making a bad choice. Maybe I’m missing some context, maybe there’s some secret to the programming language I don’t know yet, or maybe my cats are desperately trying to jump onto my keyboard, so I don’t have full mental focus.

I also realize this isn’t always possible. Some days my internet is just bad, and I can’t turn my camera on, or my router will crash. (And yes, I’ve called my ISP about this.) When that happens, I explain why my camera is off, and I put more effort into using my words and staying engaged. 

### Take breaks
The idea of sitting in one spot for 4 hours talking to one person doesn’t sound fun. Schedule in some breaks. Go get coffee, take a walk, have a snack, go to the bathroom. We’re all just humans, we need some rest. Also, if you’re really stuck on something, and both people’s frustrations are getting high, stop. Take some time to do something else, and then try again.

### Give everyone grace
There is a big difference between pair programming sitting next to one another and pair programming sitting in different states, time zones, and maybe even continents. Remember that we’re now spending time in our coworkers homes, that’s weird. Try your best and trust that your pair is trying their best. This is all uncharted territory, and there are going to be some growing pains, the best we can do is the best we can do.