What is Pair Programming?

Pair programming is a development method that involves two programmers, one-two keyboards, and one monitor/workstation. Many leading and innovative companies, such as Square, use pair programming for all their development. These companies find pair programming increases productivity, reduces the number of mistakes, and spreads knowledge through the team quickly. Most significantly, pair programming is the quickest way for developers to master a language and gain the proficiency and competency of an experienced developer.

With LaunchCode, the idea is to match a new, inexperienced programmer with a company's developers and have them pair program together. What’s in it for the inexperienced programmer is a chance to learn from a more experienced peer. And the company gets a chance to take someone with raw talent, build on that talent, and grow a potentially new and valuable employee

Pair Programming and LaunchCode

The goal of LaunchCode is to put junior developers in a position to readily level up to where they can fill the open jobs at St. Louis companies. We believe our recommended combination of pair programming and mentorship is the best way to achieve this. That said, our goal is job placement, not ideology. If a company has approaches to job training they think more effective, by all means they should use those practices. If a company doesn’t feel extremely confident in their job training abilities, we recommend they combine their best judgment with our best practice recommendations.

Technical Set-up:

When pairing, it’s important to have an environment where collaboration is easy. At a minimum, you need a big monitor, a keyboard and mouse that can be easily slide between the two pair partners, and a large enough work area that the two of them can comfortably sit next to each other.

There are a few more patterns you can follow to make things even better:

2 keyboards, 2 mice: This makes it very easy for the pair to switch roles, changing between “driver”, the one actively typing and writing code, and the “navigator”, the one thinking at a more strategic level, guiding the “driver”. They simply decide to switch, with no swapping of physical devices needed.

2 monitors: A bit harder to do, but definitely worth it. Having two monitors allows both programmers to more easily and comfortably see the code without having to look at a central monitor the whole time. It’s a little thing, but it makes pairing that much more comfortable

Recommended Approaches to Pairing for mentoring:

#1 – The Hybrid:

  • The mentor and candidate should work together for the first week, with the candidate learning everything they can and the mentor taking note of holes in the candidate's knowledge.

  • Within the first week the mentor and candidate should spend an hour or so talking about where the candidate is with the essential skills and identify gaps that would prevent him from being hired. They should prioritize the learning needed and discuss how the candidate can address their most important gaps.

    Because companies are getting potential more than a fully job-ready candidate, the candidates must be willing and able to devote time outside of work to studying to sufficiently improve their gaps within the 3 months or so of the trial period. Some of the standard things that the candidate should focus on early are learning the language(s) that their mentor is using as best as possible, learning everything about the IDE in use - so that they can use it proficiently as quickly as possible, and they should learn about the problem domain so that they can add as much value as possible.

  • The mentor and candidate should work together throughout the day. Initially they should truly pair, with the mentor allowing the candidate to drive/type most of the time. That's the best way for the candidate to learn. As the candidate gains more experience and confidence, then he should begin to work on tasks on their own with frequent discussions with the mentor. Over time, the candidate should be more independent in solving problems and should have fewer questions.

  • Similar to the first meeting, the two of them should spend an hour every week or two going over the improvement plan and progress against it, and moving through the gaps as quickly as possible.

#2 - Pure Pairing:

  • The candidate spends the duration of the apprenticeship with their pair. They take breaks together, work on the same monitor, etc.
  • The first day or two the senior developer would control the keyboard to demonstrate the job. This would be followed by 1-3 days with the candidate mostly running the controls. This would allow the senior developer the opportunity to assess the candidate’s level of skill and aptitude.
  • Based on this the mentor works with the candidate to develop a work plan that aims to address the issues that would currently keep the candidate from being hired. Throughout the pairing apprenticeship, the mentor monitors and advises the candidate and pair programs with the candidate.

#3 Agile Company Already Pairing: We suggest having the candidate participate in pairing sessions with as many people on the team as possible in a more traditional pairing relationship. Additionally, we recommend following some of the above suggestions on mentorship and working with the candidate to identify their gaps and to bring them up to speed.

How to choose a mentor

Assuming you're going to be choosing who in your organization can pair and mentor the new apprentice throughout their time at your company, let's talk about the characteristics a good pair/mentor should have.

  • Most importantly, they should be interested in helping a rising developer grow. The person chosen as the mentor has to be truly interested in his apprentice's growth and willing to put time and effort towards that.
  • They should have the people skills necessary to aid in the apprentice's growth. Understanding, patience, a willingness to teach things in multiple ways depending on how the apprentice is learning, ability to praise when appropriate and offer criticism gently but openly as needed.
  • The best mentors are those who put the apprentice at ease. Someone about the same age, experienced but not your most experienced person, and not someone who is in demand from everyone every day.
  • A good mentor/pair should know how to give their apprentice enough freedom to travel down a path and learn from their failures as well as their successes, before giving advice or taking over. People learn best from doing, not from watching. This entails letting the apprentice type even those the mentor knows the answer already - instead of grabbing the keyboard, a good mentor asks questions intended to make the apprentice think and understand.

The key to being a good mentor and pair programming partner is not technical skill, as you can see from the above qualifications. We assume that you'll pick someone qualified to mentor on a technical level. Being a good mentor is largely about the person's soft skills and their ability to engage the apprentice into their own learning process.

Keys to Successful Pairing

  • Both people must be willfully pairing
  • Maintain good, frequent communication
  • The junior developer should ask questions
  • Both need to be fully engaged (no distractions, i.e. cell phones)
  • Share the keyboard
  • Be patient – don’t get frustrated with your partner
  • Give the driver a bit of time to correct their errors
  • Respect your partner
  • Take breaks
  • Maintain good hygiene
  • Have fun

Pairing Resources

James Shore on Pair Programming – A good description of pair programming.

Pairing Video – JB and Naresh demonstrating a quality pairing session.

Back to the homepage