Pair Programming

I have been a software developer for three and half years now. For the last 13 months, I have had the privilege of being at a shop where we practice 100% pairing, along with our agile practices of TDD, continuous integration, and automated deployments (soon to be continuous deployments).

Over the last year, I have experienced a tremendous amount of growth and I would attribute this to the way that we pair. For the first three months, I would just sit and watch my pair so I could learn Python and the way our systems interact. My pair would have me write a test or get a simple test passing. It was so foreign to me how a true pairing session worked where we both had keyboards. My previous experiences pairing, we only had one keyboard setup so one person would drive and the other person would simply sit there and help think through the problem.

Over the last year we have also changed the way that we pair. We used to only use one computer with two keyboards plugged into the machine. About three months in, we changed that so we would each have our own machine. This was made possible due to our switch from PyCharm to VIM as our editor of choice. You can see more details about our setup on my coworkers blog post. This new setup allowed for each person in the pair to be more engaged. I could be driving the browser while my pair is actively changing code. As I got more familiar with the language, I started writing more code.

At my previous jobs where we did test after or no automated testing, I was often terrified to change code because I was not sure I had thought through all the situations or tested all of the scenarios by clicking through the web application. This is not the case anymore. I felt quite confident when I started writing more code because we wrote a test first that said we needed the production code. Testing also helped me understand how our many different services worked together. The tests told me a story which is the best form of software documentation.

A little over a year into this job, I feel that I have a level of knowledge of our systems that would be like four years of experience. Being able to pair with five other developers and either learn from them or teach them, has given me that four years of experience in only one year. The biggest asset from my pairing experiences is that I get to learn how to solve problems differently while also teaching my style of problem solving. After pairing for a year, it would be difficult to become a solo programmer again.

comments powered by Disqus