Pivotal Engineering Journal

Technical articles from Pivotal engineers.

DRAFT A Recipe for Successful Pair Programming

Key ingredients, directions, and some secret sauce for a day of pairing.

Posted on by
Categories:   Pair Programming    Extreme Programming    Humans    Culture   
Edit this post on GitHub.

Pair programming isn’t just putting two programmers in front of a computer! This recipe outlines the basic ingredients and some secret sauce for a successful, productive pairing session.

The authors pairing on this blog post

The authors pairing on this blog post

Recipe

Serving size: One Pair

Ingredients

  • 2 Engineers
  • 1 Computer
  • 2 Mice
  • 2 Keyboards
  • 2 Monitors
  • 1 Codebase
  • 1 Problem to Solve

Secret Sauce

  • Honesty
  • Empathy
  • Trust
  • Constant communication
  • Fast feedback
  • Regular breaks
  • Sharing
  • And caring!

Directions

  1. Set up the computer so that both monitors show a mirrored display, and each mouse and keyboard is able to control it.
  2. Select any other engineer on your team as your pair.
  3. Pick the team’s highest priority problem to work on.
  4. Talk with your pair about how you should tackle the problem. You will need to agree on a direction before any code can get written!
  5. Take turns sharing control of the mouse and keyboard, constantly communicating your thoughts when you have them, and helping each other to solve the problem at hand.
  6. When you run into a disagreement, you have to stop coding and have an honest chat about the pros and cons of each possible direction. You may pull in another pair to chat about technical decisions, or talk to a product manager or designer to check your understanding of the problem.
  7. Trust your pair’s solution and try it out together so you can get fast feedback about whether it’s the right direction.
  8. It’s been a rough day, so in a display of empathy, your pair asks if you need a break. After all, pairing is caring!
  9. After a walk and a coffee break, you deliver some code and celebrate success together!

Comments

Internet Critic commented: I feel like there’s no way pairing can be more effective than two smart developers working separately. What gives?

Avery & Bella replied: The secret about the secret sauce of pairing, empathy, trust, constant communication, fast feedback, etc., is that it isn’t a secret! These qualities will help any team be more effective at working together to solve problems and deliver better products faster. If a team isn’t pairing, they often need to spend lots of additional time and effort to build all of these qualities up. We think these qualities are essential to effective and productive software development, so why not build this into your discipline, all day, every day? Pairing is a great way to do that! We’ll be sure to address the effectiveness of pairing in a future post.

Super Hacker commented: What if I’m pairing and I really need to check my email or Facebook? I don’t want my pair snooping on my personal info!

Avery & Bella replied: We work hard to limit the need for any one team member to need to respond to email or other messages. If you need to check your messages, get on Facebook, or whatever else you need, tell your pair you need a break during the day. But pairing requires a lot of focus and lack of distractions. Find ways of limiting those distractions for you and your team!

Anon E. Mouse commented: Help! I really want to try this recipe, but my developers aren’t co-located. What do I do?

Avery & Bella replied: Sometimes, your developers may not be able to sit together at one computer. While this is less ideal, it can be solved by substituting one computer with two computers, each with a webcam, high-quality headphones, and screen-sharing software. A whole monitor dedicated to just your pair’s face is especially effective.

Concerned Pair commented: I’m new to my team and I’m always afraid I will just slow down my pair. Should I just take some time alone to ramp up before trying to pair?

Avery & Bella replied: We find pairing is effective when both people are experienced pair programmers, but also equally effective at quickly turning an inexperienced teammate into an experienced one. When paired with a more experienced teammate, you’ll be effective at delivering software on day one, and even more effective on day 100!