Pair Programming Solution for Remote Teams

Görkem Duymaz
Insider Engineering
5 min readMay 2, 2022

Pair programming is basically a system where two developers work on the same computer, while one writes the code and the other observes the code. Before the pandemic, many software developers were running this process in an office environment. So, how will we carry out this process in remote working, which is almost permanent in our lives with the pandemic?

Why is Pair Programming important?

Pair programming is not just the way one developer writes code and the other observes it. In fact, it has a teaching structure like the Master-Apprentice relationship. But we can do this in different ways.

  • Traditional Pair Programming: one developer writes, the other observes and they change the roles periodically,
  • Swarm Programming: co-authoring simultaneously in a remote IDE,
  • Teaching/Mentoring: the system in which you write and explain the code to one or more people,
  • Coding skill testing(interview): watching coding as a mentor, hearing clarifications, requesting changes, or otherwise requesting rewrites.

Our purpose of using pair programming is to familiarize newcomers to our team with our code principles and/or to transfer our knowledge to other teams.

So, how were we trying to do this without a tool at hand? Generally, when we were meeting in a meeting room (Google Meet, Zoom, Huddle .. ), one person was sharing the screen. Although it is somewhat easy if someone is writing and explaining, sometimes the viewers try to read the low-resolution image or if the person is sharing a large screen, you can see the followers who are working on the laptop, with squinted eyes after a while.

This is, of course, the simple one, while pair programming is often difficult to follow, swarm programming is already impossible.

What issues did we face when we are remote?

In general, our problem is about having trouble pointing to a certain place. It can be a section on the website, a code section on the IDE, a command on the terminal, or a record on the database.

Let’s talk about the code in the IDE part. When we try this with a meeting application, the problem we experience is generally with forwarding the file name by typing or saying it to our teammates. Then we explain the relevant line, the last and most complex is how we should write it. Telling how to write the code here sometimes requires spelling. If we cannot overcome it in this way, we write this code on our computer and send it to the teammate with the company chat application.

We have the same difficulties with terminal commands. The difficulty we have while explaining something is to convey how to write the commands to the teammate or to convey the repetitive commands over and over again as “Yes, now run it again.”

Although what we experience on websites is a little easier, we tell the person we help each time what they need to do one by one. This can take a long time and effort, almost like astronauts applying sequential commands.

And yet another problem we face is database updates. Here again, we forward the queries to the teammate. Sometimes we need to run SQL files, sometimes by sending commands.

So how did we overcome this problem?

Code with Me

Let’s meet with “Code With Me”?

It is a free tool introduced to the market by JetBrains as early access in September 2020 and many features at the beginning of 2022. However, if you own any student account or JetBrains product, you can use the Premium features.

So how did we overcome them with Code With Me?

  • At Insider we use IntelliJ IDEA Ultimate — the license is given to every employee that supports multiple programming languages to be installed as add-ons. Thus, each employee can work in different software languages s/he needs for development.
  • The most important feature is that it offers us is being able to open a copy of the IDE. In this way, we can quickly find the relevant code and, with the following feature, we can make changes by ensuring that the teammate follows it. This solved all our problems on the IDE side for us.
  • In addition, with the shared terminal, we have become able to write the code directly in a way that the teammate can pay attention to. In this way, we can run unit tests, npm, and similar commands quickly. It has provided great convenience in this pandemic period and our remote working life.
  • Similarly, another problem we had was on changing database records and websites. We have overcome this with the port sharing feature. When we shared the relevant ports with the teammate, we became able to access it with a DB application and we could access websites by typing the address. This further eliminated the tedious testing process for us. Normally, to do this, I need to forward the port to my computer via the Modem and share my IP address either directly or under a domain. But how safe is this?
  • In addition, we do not need a different meet program. We can make audio calls, video calls and sharing screens directly from the application.
  • The company has multiple teams. When we do cross-team pair programming, more than 2 people need to be together. Especially when we debug, we can all solve the problem quickly in one place instead of everyone doing it on their own computer. It supports up to 50 people.
  • I think the most important feature is that the undo-redo feature does not affect each other while working together.

Let’s get to your teammate’s code instantly!

For more information: https://www.jetbrains.com/code-with-me/

In addition, to follow the what’s new: https://blog.jetbrains.com/blog/tag/codewithme/

--

--