My first week doing Pair Programming & Extreme Programming

I’ve been reading about and playing with the ideas behind extreme programming (XP) for about a 8 months. It seemed like good idea, but i was programming on my own, so i started by incorporating unit tests in to ActionDirectory, the project i was working on at the time. There was not user, and no other programmers to try other aspects of XP. A couple of months ago when i was in India i happened across a tech book store in Bangalore. Lo and behold, they had local reprints of western tech books at much cheaper prices. I grabbed a dozen O’Reilly books and a copy of Extreme Programming Explained: Embrace Change.

I was also broke, so i took a job and a few weeks later i found myself working as a lead programmer for a software company in Rome. The company had invested the better part of a year on developing a solution based on a java platform and recently killed it before i was hired. I thought i was just coming on as a programmer, but it became clear that quite a lot more was going to be expected of me, and the slate was in part cleared by the recently canceled project. We had specs which were both copious and not particularly precise. We also had a new platform, Python/Zope/Plone which was used to make a static demo of the software and would be the platform for future development.

Given this situation I suggested that we should try Extreme Programming as it’s quick, focuses on results, seemed cool, and generally let us work from the demo to a site which is quickly functional. A bit to my surprise my idea met with general approval, and we expanded the team with a specific eye towards people who had experience with or wanted to use XP Methodologies.

For a couple of weeks while we hired two other programmers we worked on converting the specs and demos in to use stories. We also banged away at learning zope/plone, which we’d never used before. It was a bit of a slow process but this week things finally kicked in.

We brought in one person who has a few years of experience doing zope/plone development to act as a project coach/guru for a three days a week to help get us on the right track.

This week was our first full week working on it. It’s great.

Especially Pair Programming feels totally different from traditional software development. We all sit around one big computer screen, taking turns with the keyboard, switching chairs, standing up, commenting, switching back to the whiteboard to sketch out an idea. We’re a small team, just three people, but i noticed we only go back to our own computers at breaks to check email, rss feeds, and the like.

We spent a morning going through each of the use cases which we’d prepared out of the specs, and outlined the workflow of the main decision making component of the application. At each step we talked about what we could leverage and use within Zope/Plone and how we’d go about implementing it. In the afternoon we picked a section and started coding. We shifted back and forth between learning how zope/plone work and making progress on our example.

The second day we realized we’d neglected to be writing tests so we downloaded, read about, installed and started using the zope testing framework. From this point on we have been writing our tests before the functions.

What’s amazed me is how different it feels to program with other people, as opposed to separately within the same project. We talk a lot more, we point, we take turns at the keyboard. At first it feels weird to sit down to somebody’s class and start coding away, adding comments, changing functions. Without the unit tests it’d be a disaster. In fact i think using python helps us because we have much more strict limits on layout and coding style than in perl.

Next week will bring new surprises and hopefully revelations about a new form of programming. Next friday we’re going to a day long workshop here in rome about Open Day for Managers on Extreme Programming (XP) and Agile Methods. It should be interesting.


About this entry