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
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.
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
#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:
#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.
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.
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.
James Shore on Pair Programming – A good description of pair programming.
Pairing Video – JB and Naresh demonstrating a quality pairing session.