A Guide to Effective Pairing in Tech: Junior Pair Edition
.@samsonasu: "I thought you two were pair-programming - then I realized he was just teaching you #Minecraft."
— Hilary Stohs-Krause (@hilarysk) May 15, 2015
This is the second of two posts on pair programming; both are based on an internal talk I gave recently with Ten Forward's VP of engineering, Brett Samson, which pulled from our own combined 13 years' of experience, various conference talks I've seen, and a recent Twitter conversation.
This post looks at pairing from the vantage point of the more junior participant; see the first post for our tips for the more senior part of the pair.
Note: some of the advice is the same, but we tried to write it from a tailored perspective.
Pair with a Purpose
Before you begin pairing, think about what you'd like to get out of the session. It doesn't have to be super-specific, but we find that spending a little time at the beginning to set expectations can go a long way toward ensuring both parties get what they need or want.
For example, maybe your goal is among the following:
- Learn something new
- Complete a specific task
- Practice debugging
- Improve your test-writing skills
- Connect or bond with a colleague
- Practice pairing #meta
It's OK if you don't understand everything
That's why you're pairing!
Programming is hard; often, it just takes repetition (and a lot of it!) to really grasp a concept or pattern. The first few times you hear about something, you don't necessarily learn it.
But that doesn't mean it's a waste of time! Your brain is constantly absorbing during a pairing session. Exposure is an important step to eventual enlightenment, so even those times when you feel like you're barely following along are a vital part of the process.
Don't be afraid to ask questions
That being said, if your primary feelings during a pairing session are confusion and frustration, speak up! Hopefully your senior pair partner is methodically providing a space for questions, but if not, just plow ahead and ask anyway.
(Related: See our guide on on "How to Ask For Help".)
Something that really helps get you back on track? Asking as specific questions as possible.
Even if it's how you're feeling in the moment, saying something like "I don't understand anything you're saying" doesn't give your senior pair a good starting point. Instead, try something like, "You made a comment about going to look at methods in the service object. What exactly is a service object, and why would that be the natural next step?"
We talk a lot at Ten Forward about helping our juniors, apprentices and interns "find a ledge to hang onto," and I think this is great advice for trying to move from confusion to clarity during pairing, as well. If you can give your pairing partner a stable point to build from, you can get much more productive and tailored guidance, even if you don't understand everything they're saying or doing.
Misc. Tips
Take notes!
We can't stress this one enough. There are several reasons why doing some kind of documentation during and / or after pairing is beneficial:
- It provides a reference for next time. Instead of having to ask your senior pair every time what the company conventions are for, say, the order of CSS, write it down! Then, the next time it comes up when pairing, you can just check your notes and without them needing to re-explain. (Note: If you can't understand what you wrote down or have additional questions, then by all means, ask.)
- In case you and your senior pair can't finish what you're working on in time, having documentation will help you return to the problem later without losing progress.
- Various studies indicate that we learn best when approaching knowledge from a variety of styles (aural, visual, etc.). Remember that point about needing repetition in order to really get something? Writing something down reinforces what you're learning.
You don't have to pair with someone who knows more than you.
Pairing with folks at a similar level, or who are less experienced, can be a great way to gain deeper understanding of what you already know, and the process of solving a problem with someone who has comparable experience is very different than with someone who has a lot more experience.
You really can learn by teaching, so if your company has interns or apprentices, don't shy away from calling them over to pair with you.