My Thoughts on Pairing

Some of my coworkers have been talking about what they do and do not like about the Agile development process, specifically pair programming. This motivated me to write about my experiences with pair programming.

Before starting at Square, I was not completely sure I wanted to pair program all the time. I knew I enjoyed working with other people for short periods of time, and that was the way I was used to working. At previous jobs, when I felt I needed help I would often ask someone to work through a problem with me. I also worked at a consulting company for a while, and when I was thrown on a new project I would spend time working with someone else in order to get a good understanding of the code base. Now, after pair programming pretty much all the time for almost a year, I find I enjoy doing it but I can understand why other people would not.

What I like about Pairing

It’s easier to learn about how things work. I felt productive the first week I started working at Square and if I have a question about something, there are at least 2 people I can ask.
I like having someone to bounce ideas off of and talking things out. I always have. Starting in high school I found that explaining something to someone else was the best way to confirm that I understood a concept. Having a pair to talk to and debate with is great.
I don’t really like doing code reviews. I do these sometimes because my coworkers will write some code by themselves and everything needs to be reviewed. I feel more comfortable being responsible for code that I helped write than code I reviewed.
I feel more focused when I pair. It’s so much easier to be distracted by the Internet when I’m coding by myself. When I’m working with someone else, I will work with them without interruption for hours.

What I don’t like about Pairing

Too much social interaction. I’m an introvert, I find talking to people for long stretches of time very hard. I miss being able to sit on a couch and listen to music for a couple hours and bang out a feature. I’ve been able to do this every once in a while, but not very often.
It can be frustrating. Sometimes I have a hard time communicating with other people. Pairing involves a lot of talking and I get frustrated when I can’t get ideas across. Also, there are days where I don’t like being the one not typing or I don’t like being the one typing. If I’m not typing, I feel like I don’t pay attention as much. If I am typing I don’t like having someone else see all the stupid mistakes I make while I’m coding.
I feel stuck with people. When I first started at Square, everyone who paired would rotate pairs amongst each other every couple of days. Now, pair rotation happens less and there are less people I am allowed to pair with because of a change in team structure. I spend a lot of time working with the same people. I enjoy working with these people, but I do miss working with my other coworkers, who I don’t talk to as much as I used to.

Overall, I really like pairing. If I did it for the rest of my career I think I could be happy doing it, given I enjoy working with the people I pair with.