Pair programming is a software development technique where two software developers work together on a single workstation. They take turns “driving”, one writes the code while the other follows along. Both developers take turns with each role. It’s a collaborative approach that improves code quality, increases knowledge sharing, boosts productivity and fosters teamwork.
Businesses can benefit from pair programming because it reduces the potential for bugs and issues and improves security. It’s also a good way of enabling your developers to learn from one another — particularly important when you have newer team members.

What is it?
A software engineering technique where two developers work together to solve a coding problem.

What’s in it for you?
It improves software quality and reduces the likelihood of bugs, while also cultivating a culture of collaboration.

What are the trade-offs?
Pair programming can occasionally be challenging in a remote setting. Some developers are more open to constant collaboration than others.

How is it being used?
Pair programming is helping organizations in many industries deliver more reliable and secure software.
What is pair programming?
Pair programming is a software development technique where two software developers literally sit and code together. Typically there’s a ‘driver’, who will be writing the code, and the ‘observer’ who will act as a kind of editor, offering advice or ideas on how the code could be written or improved. Both developers will take turns in each role.
Although the practice has traditionally required co-location, with the rise of remote working and distributed teams, it’s becoming more common to do pair programming remotely.
What’s in it for you?
Pair programming can deliver significant benefits to businesses. The most critical is improved code quality: when there are two developers working together on the same problem they can more easily catch errors and issues and also help maintainability, so less rework has to be done. In turn, this can improve productivity and efficiency, even if there are two programmers working on a single thing. In an age of AI-generated code, pair programming can offer the necessary oversight to ensure teams get the most out of tools like GitHub Copilot.
It also encourages a culture of collaboration. Programming is often quite a solitary activity, so opening up a way of getting software developers to work directly with one another adds a new dimension to their day-to-day work. A positive consequence of this is that it enables knowledge sharing and skill development in a more informal and organic manner than is usually possible — for example, if a junior developer pairs with a more experienced colleague, they have a great opportunity to learn (indeed, the same might even be true vice versa — bringing diverse experiences and perspectives to a problem allows people to grow).
A further subtle benefit is that it can mitigate the challenges posed by staff churn. If developers are primarily solitary, you may depend on what particularly experienced or skillful person. By enabling direct collaboration, you’re removing those ‘single points of failure’ and better distributing knowledge and capabilities.
What are the trade-offs of pair programming?
Pair programming can be challenging and requires some degree of technical maturity and expertise to be effective. If it isn’t done well, it can, of course, lead to increased costs.
It also requires the right culture and individual mindset. Although pair programming can contribute to a collaborative culture, if there isn’t a willingness across teams to work together, then pair programming simply won’t work. Relatedly, it also requires that programmers get on with one another. If there is any degree of friction, pair programming will not only be ineffective, it may even make matters worse!
It’s also important to be mindful of ownership when using pair programming. Just because developers are working together on a given challenge shouldn’t dilute ownership of that problem. That means the right processes and team routines need to be in place to ensure that work that needs to be done is actively driven by those working on it.
How is pair programming being used?
Pair programming is used by many organizations, including tech giants like Microsoft and Meta. Microsoft even developed a tool called Visual Studio Live Share to aid pair programming.
In fact, it is most likely to be used in technically demanding areas where coding problems require significant time and rigor to be solved successfully. This isn’t to say that only tech companies should use pair programming — given every organization is, today, grappling with significant technology and software challenges, embracing pair programming could help teams solve difficult problems more successfully.
At Thoughtworks we actively embrace pair programming. When we work with clients we encourage them to adopt the practice if appropriate — while caution about getting two developers to do what looks like one person’s job may be understandable we have found that pair programming invariably delivers better outcomes in terms of both software and software teams.