If you work remotely you may know that sometimes it can get a bit lonely but there is so much you can do to avoid this!
Ariel Camus, Founder of Microverse tells us how pair programming can have so many benefits including learning from your coding partner. Have a read of this article and maybe pair programming could become part of your daily schedule.
'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, 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:
- 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.
- 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
- 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.
- 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.
- 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.
- Social interaction: The State of Remote Work report for 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.
- 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.
- 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.
- 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. That will give you a competitive edge when looking for your first job.
- 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 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
- freeCodeCamp forum
- Local Meetups
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. We accept students from any country in the world and we don’t charge you anything until you get a job.
Ariel Camus is the Founder of Microverse, an online school for remote software developers that is free until you get a job.'