The Benefits of Pair Programming

Pair programming is an agile technique that comes with many benefits. During a pair programming session, two brains are employed instead of one on a same coding problem. As a social methodology, it forces the most introverts of us, developers, to convey our mind out loud and articulate it on the go. The underlying purposes are many, from sharing technical and domain knowledge with your team to improve overall code quality.

Let’s get each benefit of pair programming in review.

Spread knowledge

The ultimate benefit of pair programming is without contest its ability to spread knowledge among team members.

When you are solo programming, you make micro decisions on how to effectively address problems. You take into account what you know of the code base or think about particular conflicts that may arise now or in the future. What happens next is another developer in the team builds a related component to yours and gets a hard time understanding why you made those decisions, because they don’t see immediately the logic or the reasons behind.

If you recently pushed the code, you can tackle situation in a few minutes over Slack, Teams or any other messaging tools. Conversely, an old piece of code requires you to dig in tickets and commits to recall why you chose that path. You thus have to go through context switches and you might experience difficulty to communicate clearly or even get flustered as you feel a sense of urgency. It gets even worst when you’re on PTO or just off sick and still check your notifications just to be told that “what you’ve coded the other day will not work”.

Without a strong culture based on communication and documentation, solo programming can lead teams to silos. Silos slow down velocity and reinforce the competitive environment within the team. Pair programming enables teams to naturally share information and spread knowledge among members. With sessions focused on communication and shared goals, it benefits teams as they can achieve collective code ownership and highly decrease the bus factor.

Share best practices

Another advantage of pair programming lies in how it enables you to share best practices with your team. We all have our own approach when it comes to coding. Our brains don’t all address problems the same way and we actually often use strategies that have produced results before in the first place.

After spending years coding all day long, we acquire some automatisms and coding gets repetitive. At this stage, the best you can do for your team is to openly share those automatisms. This does not only let younger developers ramp up faster and encourage them to build their own automatisms on the long run, but you also ensure you and your team are all on the same page.

Therefore, sharing best practices through pair programming makes a lot of sense as you’re able to demonstrate the value of any automatisms you developed on situations that require so. Practicing on real and concrete cases is the best way to instill knowledge in people. You can’t expect juniors to fully ramp up by just sharing them your best coding practices playbook. You can’t expect seniors to write good tickets, systematically elaborate on issues they encountered or test their code effectively before moving tickets to the next stage by just telling them to do so. You need to actively communicate and show by example. Pair programming is an handy tool for that purpose.

Introduce less defects

Pair programming comes with a set of best practices including who does what at any given time. Traditionally, the pair roles are divided between the driver and the navigator. The former is responsible for achieving the small objectives or steps, one by one. The latter reflects on the big picture and gives the next directions. As the navigator, you can see way beyond what the driver is currently coding. You make use of your third eye power to detect obstacles and conflicts with the other pieces of code before they happen. You then discuss together what the best approach or workaround could be.

As a solo programmer, you risk missing huge potential issues you’re not even expecting, especially when you don’t have the big picture of the code base in mind. This is generally where code review comes into play. After you declare you’re done with the task, another developer looks at your code and raise warnings by kind of redlining your code and writing comments, much like how legal team review agreements.

The reviewer is ultimately responsible for letting your code pass to the next stage on your Scrum board, for example QA, or go straight into production. The problem with code review is that no reviewer is infallible. Reviewing someone else code requires discipline, context switching and spending a lot of time reflecting on potential issues. It requires a lot of efforts and deep focus. Thus, most often than not, reviewers put way too much trust into the author’s code, leading to defects not being caught before landing into production.

Pair programming is considered as a replacement process for code review. This is particularly the case when it includes at least one experienced participant in the pair. Pair programming prevents context switches that code review implies. Pull or merge requests stop being passed back-and-forth again and again as both developers involved in the pair share the same context and have the opportunity to eliminate potential defects before they are introduced into production.

Refactor on the go

Technical debt is a constant uphill battle for any development teams. To deal with it, you have to get disciplined as a team and embrace a culture of periodical reviews. If you don’t, sooner or later your code base will internally implose and any changes will require a lot of efforts. That’s not an easy task when your team is tight on deadlines.

Fortunately, pair programming inherently helps developers discuss and challenge solutions as they emerge, allowing to write less lines of code but with a way better quality overall. This is what NASA engineers concluded in 2001 after they did an experiment, using Emacs and Ruby, to see how pair programming improved their productivity and helped them increase their business value delivery. They compared what produced a solo developer and a pair programming team. After 6 weeks, the solo developer had written 2144 lines of code with no testing. After 3 weeks, the pair programming team built the same functionality with 866 lines of code, including 463 lines of test. The author attributed the reduction in lines of code to agressive refactoring and continuous code review inherent to pair programming.

All in all, combining two heads through pair programming lets you see beyond the problem at hand. It allows you to predict the future and come up with better and sustainable solutions.

A live rubber duck

All of us developers are faced soon or later with a recalcitrant piece of code. No matter how many times we re-read and alter it, it simply refuses to work as we intended it to do. To palliate this situation, a technique known as rubber duck debugging was introduced and popularized in the book The Pragmatic Programmer, published in 1999. The story in the book, whose technique’s name is taken from, is about a programmer who purposefully describes each line of their non-working code to a rubber duck. By articulating every steps of their solution out loud and checking the results, they tend to find the mismatch between what they expected and what actually implemented. Finally, the source of the issue becomes clear.

This technique is being taught in computer science courses and can be used with any inanimate objects or even pets, so you don’t have to importune other developers. With pair programming, the whole pair is already involved with the reasoning behind the code. It forces you to convey your mind out loud and explain each step you go through. Therefore, using pair programming in such tough situations that require a second pair of eyes can highly benefit your team.

Lightning fast onboarding

An underestimated benefit of pair programming is how it lets you onboard new team members blazing fast. Here’s the deal, your company has just hired a new software engineer and you’ve been assigned as their onboarding buddy to support them while they go through your day-to-day processes, explore your code base and familiarize with your tools.

By doing frequent pair programming sessions with them straight from the beginning, you’re able to inculcate a clear vision in them on how components of your project interconnect. It also enables you to elaborate on their specificities instead of letting them dig through the whole code base all alone. Additionally, it’s an opportunity for the newcomer to quickly familiarize with their new environment, find their place within the team and get a glimpse of the company’s culture. Pair programming drastically lowers the time required before new team members are fully ramped up.

But it does not only benefit the developer being onboarded. As the onboarding buddy, you also get a chance to discover any missing internal documentation as you unroll your explanations and give directions. This happens all the time. Eventually, pair programming lets you ensure the just hired software engineer is really a good fit to the team by defining short term goals and measuring success on the go.

Eliminate distractions

Staying focus all the time can be hard when you’re solo programming. It's especially true when you are confronted with a complex problem. As a curious human, with such qualification highly implied by the nature of your job, you might tend to explore different routes to solve a problem. You know, just to satisfy that itching curiosity. Only for you to select all the code you wrote a few hours later, hit delete and revert back to a simple solution.

Pair programming forces you to stay focus together and prevents you from getting stuck on minor details for too long. As a pair, you feel accountable to each other. In a similar way and when employed conscientiously, pair programming helps you stay away from email notifications, phone messages and other distractions. The counterpart to that deep focus and constant talking is that you feel more exhausted at the end of the day than when you’re solo programming. Just make sure you take breaks regularly.

Build up team cohesion

The last benefit is inherent to the nature of pair programming and the social dynamics it implies. A development team like many others is subject to competition among members. Competition can be healthy as it enables developers to set personal objectives and excel in their work.

However, the right balance must be found between teamwork and competition to ensure team cohesion and prevent demotivation or even turnover. For example, software engineers who work individually on the same code base might develop a toxic behavior when they stumble upon an implementation of a solution that diverges from what they would have done, convinced they know better. Some programmers even aspire to be a go-to person a team can’t live without.

Pair programming, when done extensively and with frequent rotations within a team, lets you put all the developers on the same page. By actively discussing and challenging solutions to problems with their team, developers become accountable for the whole code base.

Furthermore, pair programming makes you show your true self, not who you aspire to be. You have to remove your shield and expose your vulnerability to get the most out of any pair programming sessions. But it’s ok, the promise is a healthier environment with empathetic colleagues who care about the team and share the same goal, succeeding together.

As we’ve just discussed, pair programming comes with many benefits. When employed the right way, with patience and a determined will to make it works, pair programming can deeply transform how developer teams communicate and share knowledge internally. We, developers, are curious live beings by nature. Don’t let evaporate what you learned along your journey. Schedule some time with another developer in your team to tackle a complex problem together that they have been through for a long time. Take a sit next to them or pair remotely using Drovio.

Pairing is sharing, pairing is caring, pair widely.

Product Update - July 2022

Hey folks, hope you’re all doing good, it’s Julien from Drovio, here to tell you what cool things we added to the app lately.

Share code snippets

In a previous version of Drovio, we introduced chat history that lets you re-read what your contacts said a few days ago. We didn’t want to stop there though, so we decided to improve our chat feature once again!

Starting with Drovio version 3.3.2, private and session chats come with new features. First up, you can now easily share code snippets using the new code block button. Just click on it, enter or paste your code snippet and hit enter. A button on the top right of any code snippets lets you copy them with just one click.

Next, we know emojis have their role in our day-to-day online communication as they help adjusting our tone. They are now supported within Drovio. And we even support emoji codes, using a colon followed by the emoji alias and closed with another colon.

Last but not least, the chat now finally recognizes links.

Drovio for Google Calendar

Last month, I told you a Google Calendar integration was coming your way soon. I’m thrilled to announce that it’s finally available for all. To get started, go to Google Calendar and click on the plus button on the right panel. Search for Drovio and install it. Now, when you create a new event, you’ll be able to select Drovio as your conferencing tool and schedule Drovio meetings right from within Google Calendar.

Share feedback

While a part of the dev team is focused on bringing in new shiny features to upcoming updates, we also managed to fix a few bugs you reported us. Make sure to check the release notes on drovio.com/changelog. And as usual, should you experience any issues, have an idea for a feature we’re missing on Drovio, we are all ears on feedback.drovio.com.

Take care during the heat waves people, stay hydrated.

Happy collaborating!

Product Update - June 2022

Hi folks, Julien from Drovio here. Time for a new product update.

We have some great news to share this month: meeting scheduling is now available within Drovio.

Meeting scheduling

To get started, make sure the app is up to date on your computer as we released this feature in version 3.3.0.

Then, you’ll find a new calendar button on the app interface. When you click on it, you’ll land on the meetings tab of your Drovio account settings. There, you’ll be able to either start an instant meeting or schedule one for later. This supersedes the previous envelope feature that enabled you to generate links and send invites over email. Our new meeting links are now persistant, meaning that until the presenter joins the session, participants will be in a waiting room.

Scheduling a call for later is quick and easy. Just enter a title, the participants’ emails, fill in the start and end date, select any recurrence and optionally, a description. When you click on save, participants, including you, will receive an invite over email with a link to your meeting. When you’re ready to start the meeting, either click on the link from your calendar or on the start button next to your meeting.

Really soon, you will also be able to schedule a Drovio meeting right from within Google calendar.

Fixes and improvements

This new release also comes with a few fixes and improvements, such as a new single and universal package for macOS to handle both M1 and Intel chipsets. Make sure to check the app release notes on drovio.com/changelog.

Hope you’re enjoying these cool new additions.

Happy collaborating!

Product Update - May 2022

Hey folks, hope you are doing well! Time for our May product update.

Let’s begin!

Performances improved on macOS

Over the last month, we’ve continued our quest for stability and added some cool new stuffs to the app.

First up, I’m pumped to announce that we’ve greatly improved the streaming performance of the app on macOS, by up to 40% with one participant and 80% with multiple participants. Yes, you heard me right, 80%. This is especially noticeable when sharing large content like a retina screen if you’ve enabled it on Drovio. A new option is available on Windows and Linux for more advanced users in the preferences panel, that lets you change the preferred video codec. The video codecs come with pros and cons, more on that in an upcoming article on our help center.

Stability and cool new additions to the app

Next up, whether you experienced crashes during sessions, got the app stuck after waking your computer, we smashed a lot, really a lot of bugs lately. I urge you to update the app to get the best experience possible.

Also, you’ll get access to hot new stuffs:

Upvote features or annoying issues on our feedback platform

You want to see what we’ll be building next or you just want to let us know of an annoying issue you’ve been experiencing lately with the app? Be sure to go to feedback.drovio.com. There, you’ll be able to suggest and upvote new features, bugs and get a sneak peek at our roadmap. The platform is also accessible from our app in the main menu, feedback and roadmap option.

Happy collaborating!

Product Update - March 2022

Hey there,

Time ⏰ for our product update where we expose what we've been up to with the app over the last month. Exceptionally this time, there will be no video.

Improved stability

During the whole month of March, our efforts have been mainly focused on making the app more stable. We rolled out our latest version 3.2.4 a few days ago. And we highly recommend the update, especially if you've been impacted by one of those issues:

👾 Several crashes during sessions

👾 Residual echo or noise while chatting with your team

👾 JetBrains apps on macOS not responding to mouse clicks when used via Drovio

👾 The app getting blocked on the "Signing in..." step

The complete changelog is available here.

Public platform for feedback

Your feedback matters a lot to us, 🙏 thank you once more for all your messages on our Google form. 

I’m thrilled to announce today that we’re moving to a public platform for feature requests and our roadmap. This platform is available on feedback.drovio.com.

On that platform, you’ll be able to vote for features, send us new requests or report issues you’ve been experiencing and get notified for any update. We’ve already populated it with your feature requests. 

So keep the feedback coming. 

Remember, when you do that, you actually help us shape the future of Drovio.

Happy collaborating!

Product Update - February 2022

Hey folks, time for our February update where I'll expose what we've been up to with the app over the last month. Let's dive in.

Drawing feature improved

We’ve been improving our drawing feature with our latest release. This feature lets you easily brainstorm and convey what you’ve in mind without having to frenetically move your mouse cursor in all directions. As the presenter, you can now make drawings persistent for all the participants. Either from the session toolbar or from the app. If you find out your piece of art is not that great after all, use the eraser by keeping down right click. You can also erase your whole drawing with shift right click. The presenter is able to erase drawings with ctrl shift right click or from within the menu on the session toolbar. In a future release, we’ll be adding new drawing tools including various shapes, the ability to insert text and take a screenshot.

Drag & drop made easier

We know dragging and dropping files has always been tough with Drovio. It should be much easier now in our latest version. We’ve actually increased the timeout before a participant is considered inactive when they keep a mouse button or a key down without doing anything else.

Microsoft Teams integration

Our Microsoft Teams integration is still on its way. We’re currently working with Microsoft in order to get it validated and available for all from their app directory. We hope to have some great news to share shortly.

Lately, we’ve been focusing our efforts on making the app more stable and adding awaited new features. Stay tuned.

Happy collaborating!

3 Ways Your Team Should Collaborate Remotely

Advances in remote collaboration have made teamwork over long distances easier than ever. In fact, some of the more recently released remote collaboration platforms have so many features that choosing the right tool for the job can be overwhelming. So, we have put together our recommendation for three remote collaboration features that your team should be taking advantage of – shared desktop/screen, shared control, and session recording.

Common Remote Collaboration Features

There are many features to take advantage of between the various remote collaboration tools. Some of these features include:

Security Features

Security features are crucial to any platform or program, particularly those used for corporate projects - fortunately, in this day and age, virtually every application or platform is developed with this need in mind. So - although security features are necessary, most platforms already have security measures available or already in place. 

Remote collaboration security measures should include encryption protocols and clearly outline their privacy policy.

Integration Features

Integration features are not available on all remote collaboration platforms, and depending upon your needs, they may not be necessary. Although - as we know here at Drovio from our integration with Slack and soon Teams - integrations can take your collaboration to the next level, keeping the whole team up-to-date at all times. 

Internal Messaging

Internal messaging is another feature worth looking for in a remote collaboration tool. Although, it is not one of our top three features to look for because it is already a feature on most platforms. 

Internal messaging makes it easy to tag teammates and maintain a good workflow even when team members are online at different times.

Mobile-Friendly Website Design or Application

A mobile-friendly website design or mobile application is also a helpful feature, but in this day and age, they are features that most remote collaboration platforms do have. 

We live in a world of mobility

A mobile-friendly website design or application allows participants to participate in live collaboration even when not in front of their PC. This feature further adds to the versatility of remote collaboration. A mobile-friendly design also ensures that mobile users do not experience lagging or delays that can interfere with their ability to participate in a live interaction.

Cloud-Based Storage

Cloud-based storage is helpful for remote collaboration software but not a mandatory feature. It used to be that video conferences required pre-planning – copies of documents to email or print out for participants to view. Cloud storage speeds up access to these files and ensures that session participants can directly view files under discussion in real-time.

Our Top 3 Remote Collaboration Tools and Features

As great as the features listed above are, we do not include them in our top three remote collaboration tools and features. So, what remote collaboration software features do we have on our list? Our “must-haves” include:

Shared Desktop/Screen

The shared desktop or shared screen feature allows remote collaboration participants to share their screen with and view the screens of other users. The shared desktop or shared screen tool is one of the most notable features of any remote collaboration platform - without it, participants are limited to audio and visual interaction – essentially, a video conference.

There are multiple benefits to sharing a screen during remote collaboration, including improved communication, better collaboration, and more efficient and creative project development.

Shared Control

The shared control feature allows each user in a remote collaboration session to have their own cursor. Up to ten cursors are available on a single session, giving each participant the ability to point, underline, and emphasize areas of shared screens.

Shared control is a good way for meeting participants to be more efficient in making points and explaining ideas. More importantly, however, shared control is a prime tool for co-editing projects. 

Shared control co-editing is a particularly valuable tool for design and programming projects, as it allows multiple participants to pull together an entire project simultaneously. Simultaneous co-editing and code creation also sparks a new level of creativity as participants work together. Additionally, with live collaboration like this, team members can catch errors as they happen and consult each other for solutions as problems occur which avoids problems further down the road.

Session Recording

The session recording feature allows users to record a remote collaboration session as it takes place. This recording feature has two very useful applications – onboarding/training and playback.

Remote collaboration tools are a great means of putting together demonstrative onboarding videos to familiarize employees and clients with a company, service, or product. Repeating the same introductory videos can be tedious, and ensuring that each employee or client gets the same information during their onboarding session can be tricky at best. Fortunately, a remote collaboration tool that offers session recording makes it simple to create a single onboarding video, record the session, and playback when necessary for future employees or clients. 

Session recording is equally as useful for participants in a remote collaboration session. When a virtual meeting covers a lot of material, it is easy to get overwhelmed but recording the session and playing it back later ensures that meeting attendees do not miss important points.

Lastly, session recording can also prove helpful if disputes arise later on. Rather than a problem becoming “he said, she said,” when all discourse gets caught via a microphone, the answer is on record.

Why Not Audio and Video Chat?

You will notice that we did not incorporate audio and video chats in our list of “must-have” tools – this is because any good remote collaboration platform offers audio chat and video chat features. Additionally, they are staples on which all team collaboration projects rely. Instead, we focus on less-obvious features that offer more hands-on interaction for a better team experience overall.

Conclusion

Shared desktop/screen, shared control, and session recording, are three must-haves of all of the features that Drovio has to offer. Our tool does not just make long-distance collaboration easier; it also improves the quality of work done and increases overall productivity too!