Better Programming

Advice for programmers.

Follow publication

7 Pieces Of Paired Programming Advice I Received From a Senior Developer

Jeffrey R Wills
Better Programming
Published in
4 min readMay 2, 2022
Photo by Vasily Ledovsky on Unsplash

I always thought my first Medium article would be something technical and concrete. However, I think this is just as important and possibly even more so. Just recently I received some well-thought-out feedback from a paired programming partner and it inspired me to write down what has worked well over the years.

This is written specifically for the Expert-Novice pairing context, however, many of these behaviors will be relevant with some adjustment to Expert-Expert and Novice-Novice pair situations. There can be nuances in these three contexts.

For example, you may have two senior programmers but only one expert has knowledge in the domain you’re working on. I recently was in a situation where I was the expert in functional declarative programming pairing with a senior engineer that hadn’t worked in this paradigm before. It was also asynchronous to boot. This brings me to the first tip.

Know your pair

We need to know our pair’s experience on the subject matter but it is just as important to know your pair as a person. Take a little time to get to know them, what do they enjoy, what is their background, how did they get into engineering, what do they find funny, and so on? For me, I like to laugh and I find it makes pairing more enjoyable. Knowing your pair doesn’t stop at the ice breaker, little questions like “How was your weekend”, or “You seem a little down today”, “is there anything I can do to help make your day a bit better?” go a long way to creating an effective and safe pairing session. Knowing your pair will help you empathize and make the pairing experience more enjoyable and productive.

Set the expectation and adjust as needed

When working with someone new we have no way of knowing what the common knowledge is shared between us. As such, set the expectation that you will likely over-explain the problem or solution, this isn’t because you don’t think they comprehend something, it is simply because you don’t know what the common ground is and this is a good way to expose any little gaps in understanding. Over time you’ll know when and what to expound on. Setting the expectations will help communication flow with fewer misunderstandings.

Make asking questions safe

Software Engineering is massive, and no one knows everything. Part of pairing is teaching and this isn’t always just expert -> novice. Everyone needs to feel good about asking questions. Even as an expert you’ll find that you probably learn more about the subject when you have to verbalize an answer. Learning can’t happen without first asking a question. Stay curious my friends.

Be patient

Software engineering is more than just solving the task at hand it is also learning and mastering your craft. Patience doesn’t always yield immediate results, however, I believe patience gives you and your pair an opportunity to grow and your team will become stronger over time allowing you to accomplish more in the long run. The bottom line is if you have time take the time.

Ask for your pair’s opinion even when they’re a novice in the domain

Typically there are multiple ways to solve a problem and this is a great time to ask your pair what they think. When my pair doesn’t have enough knowledge to form an opinion I’ll explain the multiple options with their pros and cons and whether they conform or deviate from best practices or patterns. More perspectives make you think and thinking typically leads to greater understanding. A novice sometimes sees the problem from an unbiased direction possibly leading to a solution you wouldn’t have found otherwise.

Be concerned about your pair’s professional and personal development

This is woven into all of the other behaviors but I think it is still worth mentioning when someone knows you have their best interest at heart it makes feedback (the following point) more effective and in general the whole pairing experience more enjoyable.

Provide and seek feedback

It is hard to grow rapidly if you only have your own assumptions to work off of. I wrote this article because I was inspired by some well-thought-out feedback I recently received. I believe there are two types of positive feedback praise and constructive. Receiving praise not only feels good it provides us encouragement to continue growing. Constructive feedback isn’t always fun but if you feel safe you’ll see a growth opportunity and not an affront. Well thought out feedback given in kindness is essential to growth.

Bonus

I’m going to finish by waxing the philosophical. “Know thyself” was the seed that lead Socrates to revolutionize Greek culture and possibly lay the foundation of western civilization. Pascal wrote in the Pensées “The heart has its reasons, which reason does not know” it is important to take the time to figure out your motivations, annoyances, and reasons, if you do you may find it can revolutionize your pairing experience and possibly much much more. Knowing yourself leads to awareness of what you bring to the pairing session and how it influences the interaction. “Know thyself” will also help you identify your weaknesses so you can grow them into strengths.

Writers note: I simply wrote my experience here, if you are looking for something with a little more analytical rigor regarding high-performing teams Google’s Project Aristotle would be a great place to start.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Jeffrey R Wills
Jeffrey R Wills

Written by Jeffrey R Wills

Staff Engineer at Rise8, making life better with software.

No responses yet

Write a response