I’m currently developing a course on agile software development ( eXperience Agile) and a course on pair programming. I’ve been puzzling on pair programming before, and now seems a good time to pick up this thread.
I stumbled across Flow, stuckness and interruptions over at recycled knowledge:
Stuckness cannot be overcome by will or planning, only by insight, and the arrival of insight is not predictable.
One of the things Pair Programming and regulalry switching pairs helps me with is getting unstuck.
Rob Westgeest and I completed the first run of eXperience Agile on monday. As we do with software, we develop the course iteratively. After this first version, we were looking for ways to simplify the code and support scripts we use for the programming case, an online auction system dubbed Agile Auction.
Observing both teams in the course competing, I got the feeling there were just a few too many steps between adding a new feature and having it show up on the auction site. I knew we could remove some, but wasn’t exactly sure what. On tuesday, I was pretty exhausted, and was stuck thinking of improvements, so I decided to relax a bit. At night, I drove to Mechelen, Belgium to attend the pair programming party.
I put up some stories for our website acceptanc test framework rintegration. I also had some wishes for Wiki2Go. I wanted to have what I call Rublets – small bits of ruby application embedded in a wiki page. Pascal van Cauwenberghe said:
Funny you should mention that, I was just working on something along those lines…
Pascal wants the registration form for xp day benelux as part of the wiki (we use a wiki as back-end for the conference website), rather than as a separate page. So far, I hadn’t delved in to Wiki2Gos sourcecode, as I’m just gladly using it. The funny thing is, that Wiki2Go is like Agile Auction written in Ruby, so that gave me an excellent opportunity to compare and get some fresh ideas.
So, what did I learn from working with Pascal? The Rublets feature was fairly easy to build (if you leave out security issues..), as it basically means opening up the templating system already present. Pascal’s way of dealing with requests coming in from a browser was a bit simpler, so that enabled me to remove a step from agile auction on Wednesday. Pascal’s approach to integration testing a cgi application is also different, as was the development environment he used. That was interesting to see.
What made it difficult for me to ‘drive’ while pair programming was the babylonian collection of keyboard layouts we have in Europe – just one hours drive and they’re using AZERTY keyboards, which I as a QWERTY touch-typist have a lot of trouble with…
After about one and a half hour Rublets in a basic form were done, and we celebrated with belgian beer and looking around to see what the other pairs had done. Johan Peeters and Christian Neumanns had tried to build a web-proxy to simulate phishing – to see how and if websites can protect themselves against phishing attacks. Sven Gorts and Hans Keppens had worked on brainstorming session for xp day benelux.
Fun to see that agile people everywhere use similar ways of coming up with sessions. Hans and Sven sat around a table with a stack of index cards. They had brainstormed about six sessions, and afterwards they asked what sessions would have the most value – they’re also going to ask their colleagues that.
So, at the end of the evening, I drove home with a ton of new ideas, new inspiration and Rublets for Wiki2Go. Beforehand, I wasn’t sure how much fun a pair programming party could be, but it was Especially if you start off your evening with belgian food and beer on a sunny terrace… Needless to say, I wasn’t stuck anymore.