For those of us who work as software developers, can you recall your first day at your job? Chances are you felt lost as you faced your responsibilities at the new workplace and the need to figure things out. We have all been there. Sometimes, you get a work buddy who shows you around and explains how things work there, and it makes it much easier to start developing and shipping features! Also, seeing the work buddy doing their work works better for many of us than just being told what's expected from us.
If you haven't changed jobs lately, you're still likely to have switched teams within your company. Even though it's less of a challenge than starting a new job, it still takes time to get up to speed in your new team.
Good news for us developers is that we can take advantage of pair programming. That technique has probably been around since the early days of the software development industry, but it was formally defined and recognized for the first time by Kent Beck as part of so-called Extreme Programming, which aimed at delivering quality software fast.
So, what is pair programming exactly? It's a quite simple and intuitive idea: you and your colleague sit at a desk side-by-side, sharing one screen and one keyboard, and taking turns controlling the keyboard for a few hours. And yes, it's essentially as simple as that!
However, as many of us switched to working remotely in the last couple of years living through the COVID-19 pandemic, it may appear that this tectonic shift presents a challenge to the idea of pair programming in its traditional sense. But thanks to solutions such as the LiveShare extension for VSCode, we can take advantage of that technique even if we're thousands of miles apart. And here's how it works: one developer starts a sharing session, sends a link to the other developer, who then joins the session, and finally, the two are sharing the same editor window while talking over an audio-chat.
But when are you likely to benefit the most from pair programming? Here’s a few cases: when you want to help less-experienced developers to get up to the level of the best ones on your team, when you need more brainpower to solve a particularly demanding challenge, and when you want to share and spread the best practices at your workplace. Also, developers get immediate feedback as they work on a solution to the problem at hand together, and this fast feedback cycle improves the quality of the resulting solution, since one developer can quickly spot the errors in another developer's code and vice versa.
However, pair programming isn’t a silver bullet. Two cases when you're not likely to benefit from it are when the task at hand is relatively easy and can be handled by one developer just as well, and another case is when both developers are experienced. That is, it works the best when one developer has something to teach, explain, or share with the other one.
You may object that pair programming slows both developers down, and it's true short-term. But in the long-term, you're raising the whole development team to the level of your star performers.
Besides knowledge and experience transfer from one developer to another happening in a natural and efficient way, pair programming equips developers with a tool to come up with better thought-through and more thoroughly designed solutions ranging from individual features in your product to completely new systems.
And aren't we all at least a bit curious about how our colleagues work and what tools and approaches help them shine in the workplace? Pair programming is a perfect opportunity to have a sneak peek into that! Personally, I learned about many Vim tricks and keybindings as I paired with my colleagues working in that text editor. What did you pick up from your colleagues when pair programming?
And just so you know, we’re hiring here at Velory now, so come join us and pair program with us!