Developing software professionally since 1998. Focused on AR/VR through the complete 3D pipeline. Also experienced in full-stack product development including native-mobile, web, server ops, analytics and AI.
Updated Jun 8, 2016
However, pull one of those people out and suddenly efficiency breaks down and the team’s knowledge gaps are amplified.
Alice turns to pair programming. The two engineers see each other’s screens or work together at the same workstation, switching off between “driver” (the person typing) and “navigator” (the person offering suggestions). They collaborate on the same task to solve problems, create reliable workflows and engage in test driven development (TDD) for a more efficient and well-rounded outcome.
Bob is a loyal five-year employee highly skilled at technologies U, V, and W, but your company has slowly been moving to X, Y, and Z technologies. How can you train Bob to use X, Y, and Z without taking time away from his family at night or on weekends to learn? How can Bob get real world experience in technologies he’s never used?
Clair has been the go-to person for deployment of Example.com for years. She’s a very talented engineer, and has just gotten an amazing opportunity to lead a new project at Google. How can you transfer all of her domain knowledge to a new engineer in two weeks, or even a month?
Dave is easily distracted. Beyond working in the noisy din of an open-air office, he spends a lot of time reading about new methodologies and technologies and shares the articles by email. Although those articles are relevant to work, he wants to focus more and sometimes has to logout of email, Reddit, Facebook, etc. to get things done. How can he focus on what he needs to get done? How can he be more productive?
Pair programming doesn’t solve every problem, but it takes a major chunk out of the issues we just discussed. How?
By pairing with others, Bob gradually builds the skills he needs to grow with the company. Engineers are fantastic at pattern recognition. Any good engineer can be put on a new project and quickly learn to be a productive member. For Bob, the key is constant and immersive on-the-job training using iterative development to identify problems and fix them.
Bob pairs with Alice, navigating in the beginning and writing more code as the day moves on. Alice writes a test or implementation whichever is easier. If Alice is writing the test, then she is designing the architecture of the code (where the code will go), and Bob just has to fill in the implementation. This is easier on Bob, who doesn’t have much experience writing tests. If Alice is writing the implementation, then Bob while writing the test just needs to stub out the interface. Bob doesn’t have to know all the idiosyncrasies and details of how the whole app is connected, he only needs to know about some small thing he just wrote. Alice can show Bob how to connect the system to make his test pass.
When Clair pairs for years with other developers on Example.com, her knowledge of the system is nearly the same as the other developers. Moreover, she would leave the company with good memories of a meaningful shared experience, carrying with it the chance she may return one day. Rather than harboring bad memories of being under appreciated or poor team communication.
He who complained about the noise and not being able to focus, now hardly has time to check his email. When Dave is pairing, he’s talking to his partner and ignoring the noise level of the office because he’s deep in another conversation. Even if a manager from another department comes by to ask a quick question – which would normally derail his focus – Dave’s pair partner is able to answer the question while Dave continues to focus.
A: Both names, and even a team alias, like Alice & Bob <team+alice+bob@example.com>, which, if you are using Gmail, will send an email to everyone on the team@example.com alias. Pivotal Lab’s Git Scripts handles switching pairs from the command line with git pair
, and I even wrote an IntelliJ plugin that uses the same config file, which can be installed in Android Studio or any IDEA based IDE.
A: This is eventually natural based on body language. When Bob leans forward Alice knows Bob wants to type. When Alice puts her hands on her keyboard, Bob takes his hands off his keyboard. Before the pairs can recognize each other’s body language, you can say things like “Can I drive on this?”, “Let me just do one thing.”, or “Do you mind driving for a bit?”. Reasonable people avoid pointing out things that the syntax checker is also telling you, like “missed a semicolon”, try to only bring it up if the driver is about to compile. Or even better, lean forward, fix it, then lean back.
A: Neither Alice nor Bob own the desk or computer. They use a pairing station. Alice and Bob have their own company laptops that they can use to do a quick search or from where they can manage their health insurance benefits. But they respect each other and don’t sit at the pairing station all day on their laptops.
Can we help you apply these ideas on your project? Send us a message! You'll get to talk with our awesome delivery team on your very first call.