How remote pair programming works and why it can change your life
Tags: learntocode, programming, pairprogramming
Published: 2019-02-22 10:07:15

---
title: How remote pair programming works and why it can change your life
published: true
description: Learn how you can learn to be a software developer quicker through remote pair programming.
tags: learn to code, programming, pair programming
canonical_url: https://medium.freecodecamp.org/how-remote-pair-programming-works-and-why-it-can-change-your-life-cd7b767dc60f
---
![](https://cdn-images-1.medium.com/max/1600/1*CzxqkaFNXkD58pDh7XrjnQ.jpeg)
<span class="figcaption_hack">Photo by [Trust “Tru” Katsande](https://unsplash.com/photos/DPWCpOzx8SA?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/@iamtru?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)</span>

#### The silver bullet to deal with loneliness and distractions while learning to code

Whether you are working or learning remotely, chances are that loneliness and distractions are your main daily struggles to staying happy and productive.

What if you had a buddy to code and learn together with every day? What if you could face the challenges of learning to code with the help of someone who is as invested as you are? And what if you did that by working on the same software project, discussing all the steps and possible solutions as you go?

Take a moment to think about this Swedish proverb and how it affects your learning journey:

> Shared joy is a double joy; shared sorrow is half sorrow.

The good news is that all those ideas can apply to you even if your coding buddy is somewhere else in the world. That’s what remote pair programming can offer to you. Here is how it works and why it can change your life.

### How Remote Pair Programming Works

Remote pair programming is not very different from traditional pair programming.

In pair programming, you and another software developer (or aspiring software developer) sit together in front of a computer and take turns writing code using just one keyboard.

**The person typing on the keyboard is called the _Driver_**. They will be responsible for thinking about the classes, variables, functions, and algorithms that they need to code in order to make the program accomplish its goal. This person will try to verbalize their thinking process as much as possible as they code.

**The other person is called the _Navigator_**. They will be sitting next to the *Driver* but won’t be writing any code. Instead, the *Navigator* will be paying close attention to the code the *Driver* is writing, and will offer guidance and suggestions whenever possible. The *Navigator* will suggest alternatives, find answers to upcoming questions and challenges, and act as a sounding board for the ideas the *Driver* is coming up with.

**Regularly, the Driver and Navigator will switch roles**, so now the *Navigator* will become the *Driver* and they will now be the one writing the code. You can switch roles every 30–40 minutes, or every time you finish implementing a given feature or function.

If you and your coding partner are not in the same room and working on the same computer, you can still do pair programming. But we will call it remote pair programming.

**In remote pair programming, each developer will be working from a different computer**. You will be using some kind of software that allows you to talk to each other and share your screen. For example, you can use a video conference tool such as Google Hangouts, Skype, or Zoom.us. Using one of those tools, the *Driver* will start by sharing their screen so the Navigator can see what they are typing.

There are also [plugins for Atom](http://blog.atom.io/2017/11/15/code-together-in-real-time-with-teletype-for-atom.html), Sublime, VS Code and almost any other code editor that allow you to share your IDE with the other developer and modify the code at the same time. You can also allow the other developer remote access to your computer.

However, my recommendation is that you just stick to a video conference tool for two simple reasons:

1.  **Only the Driver should be typing code**. If you have access to the code editor of the *Driver* through a plugin or remote access, you will sometimes feel
tempted to help the Driver by typing something. This is not necessarily against
the rules, but it requires certain maturity and it’s something you can introduce
later on in the process.
1.  By working on two separate computers, you will force yourself to make proper
**use of version control in order to keep track of changes and share the code
with each other** every time you switch roles.

To give you an example of that last point, let’s see what happens once you
decide to switch roles:

First, the current *Driver* will commit their latest changes (for example, *git
commit*) providing a descriptive comment. After that, they will push those
changes to the remote repository, making the latest version of the code
available for the Navigator.

Now, the *Navigator* will become the *Driver* by pulling the latest changes to
their computer and opening the corresponding file. They will now start sharing their screen and writing code.

### The Benefits of Remote Pair Programming

1.  **Constant feedback**: when you are writing code as the *Driver*, the
*Navigator* will be providing feedback about the quality of your code. They will
also offer different perspectives that will help you improve.
1.  **Reduced frustration**: they say two heads think better than one, and that
shared sorrow is half sorrow. If you get stuck with a problem, the other person
will be there to help you in real time.
1.  **Increased focus**: since you are sharing your screen and microphone, you will
find it really hard to get distracted by social media. Also, the people who are
physically around you (for example, your family) will have a harder time
interrupting you.
1.  **Social interaction**: The [State of Remote Work report for
2018](https://open.buffer.com/state-remote-work-2018) concluded that loneliness
is the main struggle for people working/learning remotely. Your coding partner
will, most likely, become a good friend and a daily source of support that goes
way beyond coding.
1.  **Accountability**: you should have a pre-arranged, recurring schedule with your coding partner. That way, you will hold each other accountable and make sure that you show up every time.
1.  **Collaborative skills**: technical skills are important when searching for a
job (and once you’ve found one). But collaboration and communication are the
most important skills in any modern knowledge-based and complex job such as
software development.
1.  **Real-world experience**: remote pair programming will help you learn how to
build software as part of a team, and will force you to use version control and
[gitflow](https://guides.github.com/introduction/flow/). That will give you a
competitive edge when looking for your first job.
1.  **Mentorship**: your coding partner and you will most likely bring different
skills and levels of proficiency to the table. By doing remote pair programming,
you will have the chance to learn from each other while also mentoring each
other.

Does all of that sound too good? That’s because pair programming has the
potential to make you a much better developer and help you learn at a much
faster pace. Let’s talk about how to find a coding partner.

### How to find a Remote Coding Partner

Finding other people learning to code is not difficult. However, in order for
remote pair programming to help you in your learning journey, it’s extremely important that you find someone willing to commit to a recurring schedule.

As we mentioned before, in order to make pair programming part of your daily habits, and in order to use it as an accountability mechanism, **it’s very important that you and your coding partner meet on the same days, at the same time every week**. It’s like having a gym or running buddy, but for coding.

I run a [school for remote software developers](https://www.microverse.org/) where students from all around the world learn by pair programming full-time with each other. We do the hard job of selecting people with a high level of motivation who are willing to commit to their coding partners full-time. However, there are several other places where you can find people as motivated as you are:

* [Local freeCodeCamp study
groups](https://medium.freecodecamp.org/the-fastest-way-to-find-people-in-your-city-to-code-with-c71c956456c8)
* [freeCodeCamp forum](https://forum.freecodecamp.org/)
* [CodeBuddies](http://codebuddies.org/)
* [Local Meetups](https://www.meetup.com/)
* [#100daysofcode](http://www.100daysofcode.com/)
* [CodeNewbie](https://www.codenewbie.org/)

However, no matter where you look for remote pair programming partners, just remember: make sure that you communicate the amount of time you want to dedicate per day/week and that you agree to a recurring schedule.

And if you are ready to jump into learning to code with a remote pair programming partner full-time, go ahead and apply to join [Microverse](https://www.microverse.org/). We accept students from any country in the world and we don’t charge you anything until you get a job. We currently have full-time students in 40+ countries.