---
title: 'Pair Programming: The Ubuntu Way'
description: 'At our core, we believe in Ubuntu: "I am what I am because of who we
  all are." This philosophy of interconnectedness is woven into everything we do,
  including how we approach software development.'
url: https://canonical.com/blog/pair-programming?format=md
---

1. [Blog](https://canonical.com/blog)
2. Article

---

[Aaryan Porwal](https://canonical.com/blog/author/aaryan-porwal "More about Aaryan Porwal")

16 June 2024

# Pair Programming: The Ubuntu Way

[culture](https://canonical.com/blog/tag/culture)
[pair programming](https://canonical.com/blog/tag/pair-programming)

---

Share the article

At our core, we believe in Ubuntu: “*[I am what I am because of who we all are](https://ubuntu.com/about).*” This philosophy of interconnectedness is woven into everything we do, including how we approach software development. This belief in our interconnectedness extends to how we build software. Pair programming, a practice where two developers work side-by-side, isn’t just a reflection of our values—it’s a powerful driver of quality, innovation, and team cohesion. Industry research consistently backs this up, showing that pair programming leads to fewer bugs, faster knowledge sharing, and ultimately, better products.

## **Understanding Concerns**

We recognise that some developers may approach pair programming with reservations. Perhaps you’re concerned about a loss of autonomy, the potential for interpersonal friction, or feeling held back by your partner’s pace. These are all valid considerations, and we want to address them head-on.

**Autonomy:** You still own your ideas. Pairing doesn’t stifle your creativity—it amplifies it. Two minds brainstorming together often spark better solutions.

**Conflict:** Healthy disagreements drive innovation. Pair programming turns conflict into a tool for refining ideas and tackling challenges head-on. It’s all about crafting the best product.

**Pace:** It might feel slow at first, but pairing slashes debugging time and reduces errors. The initial investment speeds up complex tasks, making the whole process more efficient.

## **Two Heads Are Better Than One**

Pair programming significantly enhances our daily productivity. It sharpens our focus by minimising distractions and establishing an immediate feedback loop. Acting as a live code review, it helps catch errors instantly, resulting in cleaner and more maintainable code. Additionally, pair programming accelerates learning, enabling us to quickly grasp new languages, tools, and techniques. It boosts motivation, encouraging us to undertake ambitious projects and conquer challenges we might avoid individually. Plus, it’s enjoyable, fostering stronger connections with colleagues and making work more enjoyable.

However, pair programming also requires a degree of ***vulnerability***. It demands that we open up our thought processes and work habits to another person, which can be intimidating. This vulnerability is crucial, though, as it fosters an environment of trust and continuous improvement. By exposing our mistakes and uncertainties, we create opportunities for growth and collaboration, ultimately leading to better outcomes for both individuals and the team as a whole.

> “Vulnerability is the birthplace of Innovation, Creativity and Change”
>
> – [Brené Brown](http://www.youtube.com/watch?v=psN1DORYYV0)

## **Here’s How To Make It Work:**

1. **Roles**: The driver focuses on translating thoughts into code. The navigator acts as a real-time reviewer, offering suggestions, catching errors, and ensuring the bigger picture isn’t lost. Switch roles frequently to keep both minds sharp (e.g., every 25 minutes).
2. **Pairing Up**: Don’t force it. Find a partner organically, based on shared project interests or a desire to learn.
3. **Prioritising Communication**: Open and transparent communication is paramount. Explain your logic, ask questions, challenge assumptions, and share your insights freely. Remember, we are stronger together, and our collective wisdom is greater than the sum of its parts.
4. **Hitting a Wall?** If you encounter a roadblock, take a break, step back, and talk it through. Often, simply articulating the problem aloud can lead to a solution. Lean on each other and seek guidance.

## **Different Skill Levels in Pair Programming**

Pair programming often involves collaborators with varying levels of experience, which can lead to misunderstandings about each person’s contributions or frustrations due to differences in pace. Here’s how to navigate these challenges:

1. **When Your Pair Has More Experience:** Don’t assume they know best. Their need to explain their approach might bring new insights. Asking questions about the how and why can lead to fruitful discussions and better solutions.
2. **When Your Pair Has Less Experience:** Don’t assume they can’t contribute much. Their fresh perspective might help you find a better solution. Explaining concepts to them is also a great way to test and solidify your own understanding.

## **Pair Programming Tools**

When it comes to pair programming tools, there’s a wide variety to suit your needs, whether you prefer open-source or proprietary solutions.

1. For video conferencing, open-source options like [Jitsi](https://jitsi.org/meet) and proprietary platforms like Google Meet or Zoom are excellent choices. These platforms allow seamless communication and screen sharing, which are essential for effective pair programming.
2. For collaborative coding, Visual Studio Code’s [Live Share](https://code.visualstudio.com/learn/collaboration/live-share) feature is particularly impressive. With Live Share, your collaborator can see the full context of your workspace in their own editor. This eliminates the need for them to clone your repository or install any dependencies, making the collaboration process smooth and efficient. Similarly, JetBrains offers the “[Code With Me](https://www.jetbrains.com/code-with-me/)” feature, which provides a comparable experience within their suite of IDEs.
3. For those who prefer a more lightweight and simple setup, consider using an **SSH + tmux** combination. This method allows for real-time collaborative coding without the overhead of a full IDE. For a detailed guide on setting this up, check out [Ham Vocke’s blog](https://hamvocke.com/blog/remote-pair-programming-with-tmux/), which provides a step-by-step walkthrough.

## **Join The Movement**

Pair programming embodies the philosophy of community and collaboration. Working together, programmers can celebrate successes, troubleshoot challenges, and learn from each other in real-time.

It’s more than a technique; it’s a cultural shift that mirrors the open-source ethos, where collective intelligence drives innovation. As the Ubuntu community continues to champion inclusivity and collaboration, embracing pair programming is a natural progression.

Let’s foster a culture where code is co-created, knowledge is shared, and the joy of programming is amplified through the power of partnership. Together, we can build not only better software but also a stronger, more vibrant community. This is the Ubuntu way, and it’s time to extend it to the heart of our development practices.

## **Further Readings**

1. [Cockburn, A., & Williams, L. (2000). The costs and benefits of pair programming](https://www.researchgate.net/publication/2333697_The_Costs_and_Benefits_of_Pair_Programming).
2. [Williams, L., Kessler, R. R., Cunningham, W., & Jeffries, R. (2000). Strengthening the case for pair programming. IEEE Software, 17(4), 19-25.](https://collaboration.csc.ncsu.edu/laurie/Papers/ieeeSoftware)
3. [Lui, K. M., & Chan, K. C. C. (2006). Pair programming productivity: Novice–novice vs. expert–expert. International Journal of Human-Computer Studies, 64(9), 915-925.](https://www.cs.utexas.edu/~ans/classes/cs303e/pair-hcs-2006.pdf)

[Get in touch

Interested in running Ubuntu in your organization?](https://ubuntu.com/about/contact-us/form)

## Sign up for our newsletter

Get the latest Canonical news and updates in your inbox.

Work email:

\*I agree to receive information about Canonical's
products and services.

By submitting this form, I confirm that I have read and agree to [Canonical's Privacy Policy](https://canonical.com/legal/dataprivacy).

Sign up

## Share on

---

## Related posts

[### From sales development to renewals: Mariam Tawakol’s career progression at Canonical](https://canonical.com/blog/from-sales-development-to-renewals-mariam-tawakols-career-progression-at-canonical)

Career progression doesn’t follow a single path – and at Canonical, we embrace that. Our culture encourages individuals to explore roles aligned with their evolving skills and...

[Amir Abdel Baki](https://canonical.com/blog/author/amir-abdelbaki)

11 July 2025

[### Life at Canonical: Akshara Pathak shares her experience as a new joiner in Customer Success](https://canonical.com/blog/life-at-canonical-akshara-pathak-shares-her-experience-as-a-new-joiner-in-customer-success)

As Canonical continues to grow, we have developed a unique onboarding process that enables our new hires to quickly settle and establish themselves in our globally distributed...

[Amir Abdel Baki](https://canonical.com/blog/author/amir-abdelbaki)

28 February 2025

[### Life at Canonical: Victoria Antipova’s perspective as a new joiner in Product Marketing](https://canonical.com/blog/life-at-canonical-victoria-antipovas-perspective-as-a-new-joiner-in-product-marketing)

Life at Canonical: Victoria Antipova’s perspective as a new joiner in Product Marketing

[Amir Abdel Baki](https://canonical.com/blog/author/amir-abdelbaki)

19 December 2024

[### Life at Canonical: Freyja Cooper’s perspective as a new joiner in Communications](https://canonical.com/blog/life-at-canonical-freyja-coopers-perspective-as-a-new-joiner-in-communications)

Canonical has developed a unique onboarding process that enables new hires to quickly settle and establish themselves in our globally distributed environment. In this series,...

[Amir Abdel Baki](https://canonical.com/blog/author/amir-abdelbaki)

7 November 2024
