Last week I spent an enjoyable day at XPdays Benelux in Rotterdam. I ran a couple of sessions, attended a couple more, and met up with friends old and new. Here are brief recollections of the highlights in my day…
The day began with every presenter offering a 1-minute sales pitch for their session. I got to do two: one for Hexagonal Architecture and one for Jidoka. A minute is longer than you’d think, and I’d guess that most of the pitches were over inside twenty seconds. I decided to be a little different, so I had everyone stand on one leg – hopefully to demonstrate that the standard layered architecture model compromises agility…
I then went to the first half of Joseph Pelrine’s Cynefin workshop. I had to leave at the midpoint, due to the timing of my Hexagonal session; but what I saw in the first half intrigued me. I regret having paid little attention to Cynefin thus far, although after Joseph’s introduction I plan to catch up as quickly as I can.
Hexagonal architecture was a late substitution after another session dropped out. I’ve done a poor job at selling this topic to conferences: reviewers commented repeatedly – and correctly – that I failed to explain its connection with agile development. Consequently this is the only conference that has accepted the session, and so I wasn’t sure what to expect on its first outing. So earlier, while thinking about what to say for my 1-minute sales pitch, I had tried to work out why I instinctively feel there’s a connection to be made. I had concluded that the layered architecture model makes it harder to design adaptable systems, simply because we tend to think of things at the bottom of a stack as being harder to remove or replace (hence asking evefryone to stand on one leg). So the session turned into a lively debate about the power of metaphors in shaping our unconscious thinking, together with interesting discussions about the role of databases, and the use of throw-away user interfaces in the early stages of developing the domain objects. I felt it went well, due to the range of opinion in the group and everyone’s enthusiasm for engaged debate.
At lunch, the refreshment on offer was milk. Very Dutch, and a nice touch.
Then it was on to Christophe and Emmanuel’s coder’s dojo. As with so many things, a coding dojo is something I’ve been meaning to experience for a long time; I wasn’t disappointed. The first half of the session consisted of Christophe and Emmanuel running through a prepared kata, in which they had to develop a flight scheduling algorithm in Ruby. The point here is that, although they had worked through the exercise together previously, the session wasn’t just a code walkthrough. Instead, they wrote all code and tests from scratch, so that the audience was fully engaged in solving the problem together. (In retrospect, the customer acceptance tests should perhaps have been expressed in prepared FIT tables. Instead, they were developed “live” using RubyUnit, which confused the group into thinking in terms of unit tests and TDD too early in the process.) After the tea-break the session switched to become a randori. The group selected a problem from a shortlist of 4-5 – we chose conversion of Roman numerals into Arabic numbers – and developed a Ruby implementation test-first. The catch is that each pair only gets 5 minutes at the keyboard; when time’s up, the driver exits, the co-pilot becomes driver, and a new co-pilot volunteers to step up out of the audience. The session participants demonstrated a wide variety of approaches to TDD, including Microsoft’s “write all the tests up front”. This somewhat derailed the flow, although much was accomplished in the time available. I suspect that the dojo concept will work best when the group has time, over a number of sessions, to evolve a common style and approach – as the Paris dojo group has done during the course of this year.
Finally, my second session of the day: jidoka. This topic has proved extremely popular; I’ve already run it for AgileScotland, and I’ll be running it again at XPday London and at SPA2006. The beauty of the discussion format is that the session is never the same twice, and so it proved again here. The AgileScotland group stuck very much with the themes of stopping the production line and root-cause analysis, while this Benelux crowd veered all over the place, finally settling on a lively debate about the use of weekly retrospectives to drive process evolution. This was a big group, and with a fair amount of Devil’s Advocacy in some quarters we had a broad spread of informed opinion, and I enjoyed the session immensely.
Willem has posted photos of the conference (including one showing me and the attendees standing on one leg!)