Getting Started with Some Basic Tools

Mary is an eight-year-old with spinal muscular atrophy. This rare condition confines her to a wheelchair and prevents her from attending school during flu season because of her weak immune system. But that doesn’t stop Mary from participating in class and earning good grades. Mary’s teacher has an iPad, which runs Apple’s FaceTime and acts as a kind of virtual student in the classroom. At home, Mary connects to FaceTime with her iMac and uses other sharing technologies to view the teacher’s electronic whiteboard in real time. It’s a bit like remote pair programming without the code. Mary can get a lot done with just a few common tools, and the same is true for software developers.

Try each of the communication technologies in the following section and become familiar with their features. None of them fully satisfies the needs of remote pair programming, but they provide an essential foundation for building an environment in which you can collaborate with your partner.

Skype[29]

Skype was first introduced in 2003, and Microsoft purchased it in 2011. Some reviewers have called the client application “clunky and unpleasant to use,”[30] but that hasn’t slowed its adoption. Skype handles more international phone calls than AT&T.[31]

If you don’t have a Skype client on your machine, go download it now. You will eventually need it even if you don’t use it day-to-day. Then find a friend and try voice calling, video calling, and screen sharing. Share your development tools with a partner. You may be able to accomplish some basic tasks, but you’ll probably feel limited. Skype’s screen sharing does not provide two-way control, and it consumes a lot of bandwidth.

If you simply can’t stand Skype after trying it, move on to one of these similar communication options: Google Voice,[32] Apple FaceTime,[33] or Ekiga.[34] All of these tools handle audio and video, while Google Voice and Apple FaceTime support basic screen sharing as well. But another class of communication tools goes even further.

Google Hangouts[35]

Google Hangouts was released in May 2013 and has made huge inroads during its short lifetime.[36] Hangouts is a communication platform that supports instant messaging, video chat, screen sharing, and more. It’s quickly become popular with programmers as a means of sharing screens and pair programming.

Two Ruby developers, Avdi Grimm and Josh Susser, recorded a screencast of a pairing session they conducted over Hangouts.[37] Their video provides an excellent example of the main advantages and disadvantages of Hangouts. Avdi and Josh were easily able to share Avdi’s integrated development environment, but only Avdi could directly control the environment. Josh’s role was constrained to that of a navigator or researcher. Some teams find this acceptable, but in Patterns of Pairing, we’ll discuss why we must exercise caution when assigning roles in this way.

Google recently added a Remote Desktop feature to Hangouts allowing for two-way control of a session, but it has severe limitations with regard to screen size. Each session is limited to the size of the main Hangout window, which makes it difficult to see details and read code. It may be useful for quick or simple tasks, such as helping your family remove Spyware, but it’s not adequate for pair-programming.

A few developers have created tools that quickly spin up Hangout sessions and create a URL that you can share with your partner. One in particular uses Alfred,[38] a Mac OS X utility, to put a Hangout URL directly into your system clipboard, which you can then easily paste into a chat session.[39]

Screenhero[40]

The final technology we’ll discuss, Screenhero, is a commercial collaborative screen-sharing application that lets you share individual windows. It’s so new that it’s still beta software, but it’s becoming a major player in the market for remote development tools. Because the sharing can be limited to a single window, the shared application feels almost native. Another advantage of Screenhero is that each user gets his own mouse. Your partner can point to a location on the screen without stealing control from you, and visa versa. Download Screenhero right now—it’s free while it’s in beta.

Screenhero does a good job of handling the technical challenges of remote pair programming, but it’s not without disadvantages. It doesn’t support Linux, and it still requires lots of bandwidth. You will likely experience occasional lag and pixelation.

Many remote pair programmers use nothing more than tools like Screenhero, Google Hangouts, and Skype to support their work. But if you want to get the most out of your pair-programming sessions and realize the benefits described in Examining the Evidence, you’ll need something more. All of these tools have the same problems: they consume lots of bandwidth, they are often laggy, and they depend heavily on the availability of a third party (that is, if that party’s servers go down, then you can’t work). Furthermore, Skype and Google Hangouts lack adequate two-way control, which violates one of the rules we discussed at the beginning of the chapter.

The biggest difference between Mary’s remote environment and our desired remote pair programming environment is that we must function as peers. Both programmers must be able to control the environment equally and contribute to the code base. The tools you’ve learned about in this chapter simply don’t live up to this demand (although Screenhero comes very close). That doesn’t mean you should avoid remote pairing with these tools, but it’s best to use them as a supplement to more powerful tools that suit the needs of a software developer. In the coming chapters, you’ll learn about tools that solve all the problems we’ve discussed.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.15.140.68