This is not a blog. So sue me!

Crikey, things are looking up!

Thursday, February 14, 2008

Pair programming: an experience

As with many of the Agile techniques, pair programming may be counter-intuitive when you first hear about it. Having worked like this for about 6 months now, I think I can say that it can be very successful.

This particular experience has been productive, fun and a very effective way to transfer knowledge. I was, prior to this, a Java/JSP developer for a couple of years. I consider myself a professional programmer. My oppo, Derek, was a very experienced Flash designer/web programmer. Two totally different domains with practically no intersection.

Our mission was to pick up the pieces of the ASK Flash client apps (the previous incumbents having departed 3 and 12 months previously) and to develop the first of the oral reading training activities for students using the red5 media server for recording/playback.

These previous apps had been under development for about 5 years and in that time server-client traffic had become a bottleneck. The apps needed to hold the server's hand when they did anything. The Flash apps are pretty and intelligent and could do a lot more of the heavy lifting. So we also had to implement a new way for the apps to function in the system.

Working together, often at the same computer, I found that I learned a huge amount about Flash apps, and, of course the programming language AS2. I am now quite proficient. I am still a beginner at the design side of Flash, although I can follow what Derek does - this is truly an alien way of thinking for a text-based worker like me.

Derek for his part was not an object-oriented programmer before this, but is now a pretty fair coder.

Together we have made 3 major apps, now working on the 4th, each of them is better than the last in both design and code. It has been very effective for us to actually work at one desk for a lot of the time, especially when coding and building the logic of the apps. It's also been a lot of fun. This has been perhaps the only drawback - I've heard a manager grumble about "splitting us up", as if we were just being social - lol.

Interestingly, almost but not quite the same degree of collaboration can also be achieved remotely from our homes about 80 km apart, VPN'ing in to the company network. We use IM and Skype to talk and run local dev environments as well as Remote Desktop to our office machines.

One major consideration is code quality; we catch a lot more errors earlier than I would alone. Also I think that talking through the logic really makes it more robust.

Another advantage is that the two of us really understand the apps and code in considerable depth. I trust that Derek can make code changes, and I think he'd let me make mods to the Flash apps.

All considered, I'd definitely recommend pair programming in the case where two experienced developers can complement one another's skills.

No comments:


St Lawrence Rowing

Test content from SLRC