According to the Bureau of Labor Statistics, the average computer programmer makes $79,840 a year. For companies large and small, helping programmers be as productive as possible is a major goal that is vital to the financial well-being of a company. To that end, many different methods, styles and workflows have been adopted, including pair programming.
In its most basic form, pair programming entails two programmers working together at a single workstation on the same task, with only one of the two actually writing the code. The second programmer focuses solely on reviewing the code being written, identifying bugs, recommending alternatives and conceptually solving problems as opposed to physically coding. The two may also take turns and switch roles from time to time depending on the situation.
At first glance, many employers fail to see the benefits of pair programming, believing they are paying two programmers to do the job of one. In spite of that, studies show that the overhead of pair programming is not 100% but, in fact, around 15% and the benefits in the long run more than make up for this.
For companies who largely rely on remote workers, however, pair programming presents unique challenges. Is it still a viable option for programmers who may not be in the same state or country, let alone sitting at the same desk? Are there ways for companies with remote employees to still benefit from pair programming?
One of the most obvious ways to engage in remote pair programming is with the help of screen sharing. Applications such as TeamViewer, Skype, ShowMyPC, Google Hangouts, AnyMeeting, Zoom and Slack (with Screenhero) offer a variety of screen sharing options that can be used.
Skype, in particular, has been a long-time favorite for remote pair programming due to its ubiquity and cross-platform support. Regardless of the platform, there is likely a version of Skype that can be used. In recent times, however, Google Hangouts has been making inroads for screen sharing scenarios. Many developers report better performance and fewer latency issues.
In addition to Microsoft and Google’s offerings, Slack is another solid option. Already a popular team communication platform, Slack recently acquired Screenhero, bringing screen sharing and collaboration to the Slack product. For many developers, this may be the best option, as it offers integration with an already integral part of their daily communication.
For some programmers, screen sharing can be an invaluable resource, allowing the programmers to experience the next best thing to being at the same physical workstation. This method is especially beneficial when developing applications that require a great deal of visual input and feedback, as it allows the observer to see not only the code being written, but also see and test in-progress builds.
In spite of these benefits, screen sharing does have some drawbacks. Most important are the performance and latency issues that often come with screen sharing. Due to the amount of data being transferred during screen sharing, for it to be most effective, both parties must have fast, reliable Internet connections. If not, the observer may find their view lagging behind by a couple of seconds or stalling as frame rates are dropped. In either case, bugs may be missed or opportunities to improve the code skipped if the observer cannot see what is happening in real-time.
Collaborative Coding Environments
Another way that many developers successfully engage in pair programming remotely is with the help of collaborative coding tools, specifically real-time collaborative editing (RTCE). With RTCE, the observing programmer can see the code as it is being written. Unlike more traditional screen sharing, however, the resource overhead is considerably lower for RTCE. Rather than streaming video and audio over an Internet connection, RTCE options only have to stream characters.
There are an almost unlimited number of options for programmers looking to use RTCE. These options include web-based code editors such as Kobra, Collabedit and Squad. Still others, such as Cloud9, Floobits, Codeanywhere and Codeshare use a variety of cloud-based technologies to enable collaborative code editing. Even mainstream development IDEs are increasingly adding in varying degrees of collaborative tools, some of which allow real-time collaboration.
In particular, Floobits is a good option for many developers due to its integration with existing editors, such as Emacs, Sublime Text, Neovim, IntelliJ IDEA and Atom. Because it works with existing editors, many developers find easier to integrate Floobits with their existing workflow, rather than learning an all-new process.
Whatever the specific tool used, RTCE editors provide an effective option for remote pair programming, offering a good balance between performance and collaboration.
Regardless of the method used for the collaboration process, one of the most important things for remote pair programmers to rely on is good communication. Because the two developers are working separately, there are many small cues and exchange of ideas that—while normally taken for granted when two people are sitting right next to each other—can be easily lost when two people are working together virtually. Brainstorming, sharing of ideas, proposing better solutions all take extra effort on the part of both remote workers.
Whether programmers are using screen sharing or an RTCE approach, many find a dedicated audio solution to be an invaluable tool in the collaborative process. By using a separate option—even something as simple as communicating via phone—it helps reduce potential resource and latency issues and ensures the two programmers can communicate through all phases of the process.
In addition, many programmers find it beneficial to take a few minutes at the beginning and end of the work period to assess the project, the day’s goals and the progress that has been made. By taking those few minutes before and after the work period, it helps each programmer to remain engaged and committed to the process, in spite of the additional challenges that come from working separately.
While many programmers may initially be reluctant to engage in pair programming, and even more so remotely, the benefits far outweigh the costs.
It’s been estimated that 96 percent of computer programmers enjoyed their work more when paired, while 95 percent voiced greater confidence in their programming solutions. Other studies have shown that paired programming often results in simpler, more elegant solutions that are often easier to maintain long-term.
Other benefits include improved design quality, fewer bugs, improved communication, increased technical knowledge, better team building and greater odds of project success. If your company is looking at paired programming, contact DistantJob to see how you can benefit, and to get help implementing a remote pair programming methodology.