Using a single computer and keyboard, two developers sit side by side and jointly analyze the project at hand, strategizing and combining strengths to solve problems faster and expand their skill sets. Called pair programming, it's an ill-advised work set-up during a pandemic.
Yet a number of digital tools, such as Visual Studio Live Share, Teletype or GitHub's Codespaces, enable pair software development between remote engineers.
Fangda Wang, software engineer at Indeed, said her team began implementing a pair programming technique called pair rotation, in February. The technique is a variation on pair programming, in which developers switch partners frequently. As a result, the team was able to execute a faster development cycle, improving developer efficiency.
"When you pair, it feels like you and your partner both have some pieces of the puzzle," said Wang, speaking last week at a Women in Tech Virtual Summit session. "You leverage each other to make a beautiful picture. And at the same time, learning is easy."
Pair programming can improve team dynamics and efficiency at a time where teams are experiencing longer development cycles as a result of pandemic-induced disruption. Whether used sparingly for educational purposes or more engrained into the workflow, it can lower the learning curve for new employees and distribute team knowledge more evenly.
But leaders should deploy the technique in a way that maximizes the potential of software development teams and prevents resource waste. Adding too much bandwidth to pair programming can mean an inefficient allocation of developers' time.
In Wang's case, pairing with a front-end developer colleague allowed her to observe "how he composed a task into a subtask and how he made decisions among different implementations." The exercise reduced development time to two weeks on a project where Wang had not made progress.
"One of my team members said, 'a week's pairing makes me learn more than a month solo,'" Wang said.
The upper hand of pair programming
Extreme programming was proposed in 1999 as an agile framework. There are three key collaborative development techniques teams can adopt, according to Peter Hyde, senior research director at Gartner:
- Pairing: A driver and a navigator sitting together at one work station
- Swarming: The whole team collaborate to complete each change, each from their own stations
- Mobbing: A whole team working together on the same item, at the same time, at the same computer.
The use of pairing can deliver a 15% decrease in escaped defects, and helps developers leverage brainstorming, said Hyde, in an interview with CIO Dive. In pairs, focus on the task at hand increases.
"Team dynamics will be improved by working closely together," said Hyde. Pair programming lets teams "break down silos by working with others with different skills," which also reduces individual points of failure.
Continuous learning practices, such as pair programming, innovation sprints and hackathons help employees become proficient with agile processes, Gartner said in its research note, titled "Adopting Agile? Do What Successful Agile Teams Do."
Extreme programming techniques aren't all that common at the enterprise level, with just 11% of companies including pair programming among the agile methods they used in 2019, according to the study.
But pair programming adoption is 13% higher among teams with successful agile development when compared to teams with unsuccessful agile practices. In a separate study, titled "Agile in the Enterprise," Gartner found 87% of companies use Agile for at least some of their application development.
The concept of pair programming can face resistance in the current economic context since managers can perceive two employees on the same workstation as a waste of resources. Business leaders are seeking to maximize efficiency while lowering costs, with eight in 10 CIOs facing pressures to shrink budgets, while half of CIOs report having already slashed IT spend, according to data from Apptio.
"It's always been a challenging concept for management because they see two people in one machine," said Hyde. "We have to explain why it's a good idea and an advantage."
When adopting pair programming techniques, leaders must address the correct use cases in order to reach results. "Pairing is like coriander," said Wang. "By nature, you can love it or hate it, but if you're looking to add a spice to your meal you need to know when to use coriander. Similarly you need to know when to use pairing."
In considering where to apply pair programming, Wang recommends focusing on tasks that aren't "too straightforward," but instead tackle more complex projects that might benefit from a diverse set of skills.
"That's the worry of many product managers," said Wang. "Are we wasting resources by putting two developers on a single task? Sometimes, absolutely yes."