Pair programming has a special place in my heart. It played a huge role in my growth as a software developer. It gave me a chance to work on projects that would have been out of my reach. It meant I got to work closely on a daily basis with developers on a whole other level than me. From what I hear when I talk to others, it doesn’t seem like pair programming has broad appeal. My suspicion is that many people have experienced a crude, half-baked version of pair programming, one that poses many more challenges than benefits.
Pair programming can look a lot of different ways, and it needs to to conform to different workplaces, different power dynamics, and varying needs of the developers and project. That said, I want to touch on some of the things that worked for me.
Pair programming has to be an intention, something that is deliberately practiced day-to-day by two developers that want to work together. It is a constant negotiation of preferences and priorities. At each turn you have to communicate about who is driving (typing), about what particular problem you are solving, and about what your thought process is.
And this is where it gets good. Rather than charging ahead with wild abandon like you might do on your own, you first have to articulate your thought process. To have to put into words a theory that you have is to peel that theory out of your brain and try to materialize it in a way that makes sense to your pair. In doing this you are confronted with the holes and assumptions that riddle your theory. You quickly become better at drawing more sound conclusions, you learn to articulate your ideas in ways that you couldn’t before, and you spend significantly less time chasing the theories that you haven’t thought through.
To me this is the exciting stuff. You become a better problem solver. You become a better communicator. You spend way less time feeling isolated. The rest are just side benefits, things like picking up small programming and workflow tips, having a partner to help keep you focused, and not having to type the entire day.
Pair programming is not easy. It takes a lot of work, practice, trust, and respect. It's not even right for every situation. For many people who have written it off, I think pair programming deserves a second chance. If you can find a good pair and the right environment, I think you'll love it.