After hearing Avdi Grimm give an excellent talk on why pair programming is important to the Ruby community at this years Ancient City Ruby, I realized people may want to hear a little about our pairing process here at Hashrocket. At Hashrocket we pair all the time. Whether delivering important features to clients or working on open source work during Open Source Friday’s, we always program using the buddy system.
Why pair programming?
Simply put, two heads are better than one! But here’s a few example scenarios:
- I can’t tell you how many times as a single developer I’ve gone down the wrong path while programming. My pair will catch me and help me climb out by offering alternative solutions.
- Maybe I got stuck on a particularly difficult problem when the solution was right there in front of me the entire time. My pair is there to point that solution out to me.
- We’ve all had those moments where we bang our heads on the wall and it was something so simple as a mistyped variable. Luckily my pair was paying attention and knows how to spell! Having an extra set of eyes will save you time and the clients money.
- Working alone, programmers tend to become too comfortable using the same toolset. We become stuck in our comfortable ways. Pairs mix up the repetitiveness by introducing new ideas, tools and styles helping us continually grow as software developers.
Programming is hard. Having a partner to talk to helps develop innovative, well planned solutions to difficult problems.
- Vim - Here at hashrocket we all use Vim. Some use MacVim and others use terminal, they differ only slightly so switching pairs around is a seamless process.
- iMac - We have large 27” iMac’s here at hashrocket. Each one has two keyboards, two mice and two awesome Rocketeers.
- Tmux? - Around half of the Rocketeers use Tmux, the other half just use tabs. It’s really up to the pair’s preferences as we are all proficient in Tmux and can switch back and forth.
- Dotmatrix - All our dotfiles are in an open repository on Github. This keeps our iMac’s in sync and enables us to move around the room without ever leaving the comfort of our development environment.
We switch fairly often between the driver and navigator. Having separate keyboards in front of each of us encourages people to take charge and start typing. Communication is key when pairing. The pair are constantly talking to each other about what direction the code is heading in. If you are the more experienced pair, let the other person drive every now and then. It gives you more freedom to think of solutions and forces you to explain the reasoning behind your thought process. This enhances your speaking abilities which is a necessity for us as consultants. On the opposite side, it helps the less experienced developer learn faster than they would by just watching you bang away at the keyboard.
So thats our process here at Hashrocket. Do you have any tips or systems that work well for you? Leave a comment below.