DEV Community

Jonathan Carter
Jonathan Carter

Posted on

What does pair programming look like for your team?

Hey All! I’m curious to know whether your team does pair programming of any form (let’s not get too academic!), and if so, what exactly it looks like. For example:

  1. How frequently do you do it? Daily? Weekly? Full-time?

  2. How long do pairing sessions usually last? An hour? Three hours?

  3. Are sessions initiated on an ad-hoc basis (e.g. you just ping someone on Slack), or do you schedule/plan them ahead of time? (e.g. you decide to pair with someone on a task as part of sprint planning)

  4. Do you only ever do two-person pairing sessions? Or do you ever have three or more people collaborating? (Mob programming/swarming)

  5. Do you typically pair with the same people? Are they remote or co-located with you?

  6. What is the typical scope of task you pair on? A bug? A user story? Prototyping?

  7. What is the typical motivation for doing pairing sessions? Knowledge transfer/shared ownership? Mentoring? Code review?

  8. Does you and your pair have specific roles during the session? (e.g. driver, navigator). Or do you keep things fairly informal?

  9. Do you use any sort of time management techniques to add structure to the session (e.g. pomodoro)?

That’s obviously a bunch of questions, so feel free to share as much or as little as is convenient. Additionally, if you’ve already written a blog post about your workflow, then just share a link to that. No need to repeat yourself! 🤗

As part of building out Visual Studio Live Share, I’ve had the opportunity to learn from a ton of teams regarding how they collaborate. However, I’m increasingly inspired by the broader DEV community, and so I’d love to hear what’s actually working well for folks in-the-wild 🙌

Discussion (3)

Collapse
milanlatinovic profile image
Milan Latinović • Edited

Yup, my team does peer programming, mostly in two cases: 1) if one part of the team doesn't have a specific knowledge or 2) if it is small but high impact feature (i.e. financial transaction with some funky calculations involved).

In my experience, it is good to have lead-follower combination, because one person will have better knowledge, but still it should be informal and friendly. :)

Time tracking is used and useful, because these things can quickly add up and escalate (eat parts of sprint or cause time gaps). :)

Collapse
misnina profile image
Nina

I work on a volunteer basis for a remote only organization! We just got started, but we've been working together on quite a few things.

How frequently do you do it? Daily? Weekly? Full-time?

At minimum we work on stuff while in a voice call once a week, but there are times where me and the lead will do it every day! The entire team doesn't pair program, but usually if working with myself or the dev team leader, we will be in a call.

How long do pairing sessions usually last? An hour? Three hours?

They can last between 1 to 3 or more hours. Usually 3 hours we need a break and might come back later that day, sometimes it's just a quick chat to get caught up on some late night work someone did. I should probably start keeping better track of our productivity!

Are sessions initiated on an ad-hoc basis (e.g. you just ping someone on Slack), or do you schedule/plan them ahead of time? (e.g. you decide to pair with someone on a task as part of sprint planning)

For more then 2 people, it's asked when people are ready and planned hours or a day before. If it's just us two, it's just a simple discord ping "Hey wanna work on dev stuff when I get home?". Sometimes we have clear tasks, sometimes we don't and just work separately and have each other available for brainstorming.

Do you only ever do two-person pairing sessions? Or do you ever have three or more people collaborating? (Mob programming/swarming)

Rarely, we have had 3 people working together on a code base, but usually one of them is being taught by us. We've not had more then 3 people actively deving at the same time together, but have been looking at code and talking about it with up to 5 people.

Do you typically pair with the same people? Are they remote or co-located with you?

All remote, typically pair with one same person.

What is the typical scope of task you pair on? A bug? A user story? Prototyping?

Pretty much anything that needs to be done. If we're available and feel like talking, we will open up a call and a live share session to work on any features together, or work on separate thing but have the other available for question.

What is the typical motivation for doing pairing sessions? Knowledge transfer/shared ownership? Mentoring? Code review?

Code Review and mentoring! Also just a side of social engagement, like we're working at an office together and have adjacent desks.

For the larger groups, it's more about knowledge transfer, one person and one helper teaching multiple people about the workflow or catching them up on how to use React or things like that.

Does you and your pair have specific roles during the session? (e.g. driver, navigator). Or do you keep things fairly informal?

We're very informal for the most part. When teaching, most people stay quiet while the one teaching explains everything, but that feels less like pair programming and more like a lecture.

Do you use any sort of time management techniques to add structure to the session (e.g. pomodoro)?

Nope! We just code until we either get a headache from headphones or need to go eat something.

Collapse
lostintangent profile image
Jonathan Carter Author

Thanks for sharing’