Comp 290 Agile Methods Pair 10 Final Report

Brian Cornell and Dave Knott


Distribted Pair Programming

The Distributed Pair Programming (DPP) method seemed to be for us than side-by-side pair programming. The technology to support DPP is perhaps not mature enough to make the DPP experience as optimal as it could be. For instance, Brian notes the lack of a second mouse pointer as a particular drawback of most "shared workspace" technologies (such as VNC).

The lack of the ability to do whiteboard-style brainstorming is cited by some others teams as a drawback, but we didn't find this facility to be particularly necessary, at least on a project of this size. All of our experience with non-coding tasks such as system architecture was based on work done side-by-side. It is difficult to say whether this would have been less efficient using DPP.

Testing "animated" components of our application was particularly troublesome, as the virtual desktop software could not transmit screen updates fast enough for the "remote" partner to get a clear sense of what was happening.

Because we were working in a "distributed" format, we were forced to use two computers, as opposed to "side-by-side", where only one computer is necessary. This was in some ways very beneficial. For instance, Dave could be making some changes to the code while Brian was using his own computer (not through VNC) to look up some technical information.

Pair Programming vs Individual

We found that pair programming helped to reduce the amount of "non-work" activity on the part of the programmers involved. The programmer became less likely to stray off on non-work related tangents.

Also, having two programmers forced us to work strictly based on the system requirement. Because both programmers had limited overlapping time in their schedules, we were disinclined to add functionality beyond that which was needed to make the required system work as specified.

We found that logic errors in the code were greatly reduced by having two programmers. Very often one partner would be coding and make a simple mistake (say an "off by one" error) that was quickly pointed out by the other partner.

A distinct benefit of the pair programming experience was that both partners had a good, solid knowledge of the code base that we were working on. In a more dynamic setting, this would seem to help in transitioning between programming teams, as the loss of one programmer would not be disastrous.

Dave's Thoughts

I found that the desktop-sharing paradigm made me act a little bit "greedy" with respect to having mouse and keyboard control. This seemed most likely due to the fact that I was the host computer and updates from the remote system's end often felt very sluggish to me.

Brian's Thoughts

As far as pointing at the screen with my finger, I would like to note that I only found myself trying to do this as a second resort after learning that pointing with the mouse pointer would not work (due to the lack of individual mouse pointers).

I found it hard to tell using the remote display software who was controlling the mouse, so I let Dave control it most of the time. There was also a bit of latency at times with the remote connection over the Internet

I was more comfortable programming at home than if I had to program in Dave's office, a foreign environment to me. At home I was able to be with my cats, drink and eat what I have at home, and use my familiar desktop setup on my computer. The coding aspect of this was somewhat less comfortable than I am used to however. For one thing, I had to use headphones to prevent feedback in the voice communication system, and they got uncomfortable after extended coding sessions. I was also less comfortable coding over remote desktop using a windows system setup unlike my desktop.

I also had a little trouble with the requirement that this be done in Java. I would have been much more comfortable developing it in C, C++, or Perl. I had never programmed Java before, and had never used the eclipse environment either. Though I was able to pick up on the syntax of Java relatively quickly and was familiar with object oriented programming in general, I was not familiar with the details and I think it made me significantly slower at programming.