As the name implies, pair programming is where two developers work using only one machine. Each one has a keyboard and a mouse. One programmer acts as the driver who codes while the other will serve as the navigator who will check the code being written, proofread and spell-check it, while also figuring out where to go next. These roles can be switched at any time the driver will then become the navigator and vice versa.
Though my experience in an online school, we did remote pair programming which we had 2 sets of computers and the navigator had to share their screen for the driver to see and vice versa.
It’s also commonly called “pairing,” “programming in pairs,” and “paired programming.”
There are proven benefits of pair programming you and your team can take advantage of. I recently started pair programming through the help of an online school. I have pair programmed with a lot of people across the world. Every time while pair programming I have learned something new from the other person regardless of my colleague’s programming experience and I am going to talk about some of my experiences with pair programming. I believe you and your team can also reap these rewards of pair programming, So here are some of the advantages of pair programming.
As pair programming involves 2 engineers writing code for the same task at the same time on a single computer the code is reviewed on the go. As the driver is writing code, the navigator is reviewing it in real-time and also thinking about any design, architecture related issues, and possible bugs. It is much better than an asynchronous code review because both software engineers are already familiar with the task and problem in context as well as know if the code is working or not at the same time.
During my pair programming sessions, my partner is always giving insightful feedback while I am writing the codes and vice versa when he is also writing the codes, this makes the process really easy and leaves little room for errors
This is probably a very underrated benefit of pair programming. While pair programming you observe the other software engineer and learn lots of things on the go. While you are on the go you pick up how the other engineer uses keyboard shortcuts or tools that you were not aware of. This is really helpful when you pair program with someone senior to you, you get to know their routine and how they use the same tools more productively. This helps you grow as a software engineer because there are always one or two things to learn from the other person.
Pair programming can be an excellent way for programmers to learn rapidly from other developers. You learn the entire complex process, not just by watching, but by participating.
I also did not really know much about programming when I started and this has really helped me, I have learned a lot from my partners, though some of us might have different cultural backgrounds we find a way to make it work and learn from each other.
Pair programming can be one of the tools to make your company’s and team’s on-boarding process for software engineers even better. If new team members can have a good session of pair programming with one of the experienced team members they will get to know the ins and outs of the system much faster and hands-on.
New members will get acquainted with and used to the new tools and process which the company/system runs in a more practical way.
Sometimes you can’t do your task because it is blocked by another task being done by one of the software engineers in your team. Rather than waiting for the software engineer to finish that task, you can help them accomplish it through pair programming. In the end, its the team’s achievement or goals that matter more than individual ones.
When developers pair, all of the choices they make can benefit from the experience of both developers and the dialog they have with each other, which makes the decision making more effective
When two people pair program on a certain task as they say two heads are better than one, I think it is a more productive episode of work. If the driver encounters a road bump the navigator can help solve the issue. On top of that, it can really help to share knowledge about parts of the system the other software engineer is not much aware of. For example, I pair programmed with someone on Ruby which I had never worked on before to teach me a few things which would help my learning process become smoother.
Pair-programming might seem a little strange if it is something you have never tried out before and it involves a lot of communication among team members and between partners but as you try pairing, experiment with different modes and pair combinations. Some pairs stick together for a week or more, others swap every day. Some developers may prefer the driver or navigator role or prefer to switch back and forth depending on the situation. Developers on a team will have different backgrounds and levels of experience. Try various combinations of both to determine what works best.