Pair programming: A few observations.
As I write this, we’re at the midpoint of our time at Flatiron School. Seven and a half weeks complete, seven and a half weeks to go. Hard to believe we’ve come this far!
Over the course of my several weeks here, I’ve had the opportunity to do pair programming (also programming in groups of three) quite a bit. People seem to have plenty of opinions about it. I didn’t think I was going to like it at first, but after trying it out I’m pretty much sold.
In case you’re unfamiliar, the basic idea of pair programming is this: One laptop, two people. The person doing the typing is called the ‘driver.’ The person watching is a kind of supervisor or ‘director.’ The ‘director’ thinks mostly about the ‘big picture,’ telling the driver what to do. The driver actually writes the code and thinks more about the small details such as syntax, etc. Ideally, you switch roles after a while so that everyone spends equal time in the driver’s seat.
So, after several weeks of this, I thought I would offer some observations, based only on my experience so far at Flatiron. What does pair programming do?
1. It gives you super powers.
In my experience, pair programming is GREAT for catching the little things. When there are two pairs of eyes on the code instead of one, stuff like typos and syntax errors are caught almost instantly. Even more often, you prevent the error from being made in the first place. Every time this happens, you may be saving yourself several minutes to an hour of debugging later. If you think of it that way, pair programming saves a ton of time!
Super power #2: You think of solutions you never would have thought of otherwise. You may have a habit of doing something one particular way, while your partner may have a completely different habit. You may realize that your partner’s habit is way more elegant and appropriate than yours, and end up with something new to add to your own bag of tricks. (Als0, you may learn a new keyboard shortcut!! Keyboard shortcuts are the best.)
Super power #3: When it’s 4:32 pm and you’re mentally exhausted and distracted and you can’t think, pair programming can be a lifesaver. Your insurmountable problem may be a simple solution for your partner, who just solved a similar problem the other day. Also, mental tiredness can slow you down quite a bit, and having a partner will make things that much easier.
2. To learn the most, work with people just a little better than you.
From my previous years of experience playing jazz piano, I had the opportunity to play in lots of different music groups with different people, and this is something I noticed. If you perceive that your group-mates are WAY better than you, you may feel like a burden, or feel overwhelmed. (Not that you should.) Conversely, if you perceive that your partners are much LESS experienced than you, you may feel a bit bored, or even annoyed. And then there’s the ‘Goldilocks’ of ability levels, when you are all very close in ability but you feel like your partners are just a little better than you. If you’re lucky enough to have that experience, it feels like you’re just barely hanging on, but you ARE hanging on. And learning a ton.
Even better, if your ability levels are ‘Goldilocks-matched’ and you have a great, respectful relationship with your partners, you may even come across a sort of M.C. Escher-style “cycle of respect” where EACH member of the group feels the same about the others!
This is barely even an analogy. I think it’s safe to say that all of the above can apply directly to pair programming in addition to music.
3. It gives you an opportunity to get better at SOMETHING, no matter where you are on the ability spectrum.
If you’re the less experienced partner, you will get better by driving. That goes without saying. But what if you’re the more experienced person? What if you know all the required concepts and could easily finish coding this by yourself? You STILL have plenty you can learn by teaching your partner, and making sure they understand. Even if you don’t think you have any gaps in understanding, teaching someone is a great way to find out for sure! It can also be an exercise in patience, speaking clearly, and grokking where the other person’s understanding gaps are. All of these are great skills to learn, even if you already know all the code!
So either way, you’re going to get better — at doing, teaching, or both.
Oh, and be nice! Everything works better when people are nice.
