loading...

What does pair programming look like for your team?

lostintangent profile image Jonathan Carter ・2 min read

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 🙌

Posted on by:

lostintangent profile

Jonathan Carter

@lostintangent

I build developer tools and services at Microsoft (currently VS Online, Live Share, IntelliCode, and Playwright, previously CodePush, IE Dev Tools, Visual Studio, Azure).

Discussion

markdown guide
 

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). :)

 

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.