ADC 2011 incidentally happened on a day when a meeting was scheduled for the Munich coding dojo meeting. Luckily, we were invited to the meeting by Ilker Cetinkaya.
The first thing you’ll notice in the picture, is that I may seem shorter than the other people there. I’m still suspecting Adi used a fish-eye camera. Regardless of what Germans eat and how much they grow, this was a very fun session. My expectations were not high coming in, but this is because I’ve imagined not being so active there, as I thought it was going to be a German discussion.
But once the exercise started, I realized that it’s not going to be like that. Ilker has selected the Paginator kata by Brett Schuchert. This is an object that manages the presentation of the page navigation like in your favorite Google page.
We divided to groups of 7-8 people, and coded it test-first. The original direction was to have a driver and a co-pilot and then every 7 minutes to change. But very soon it became a driver with a bunch of co-pilots. We discussed where we wanted to go next, what the design is currently, what we’re keeping and what we’re changing.
For example, half way through the implementation, Thomas (in the middle of the picture) asked: Is this a browser Paginator or a desktop Paginator? If it is a browser one, that means we don’t need state carried between pages. So the concept of a “current page” we devised and kept in the object, was irrelevant, since a new Paginator will be created in every page. There’s a great lesson to be learned here: You don’t know everything as you start the design. You can aspire to, but you’ll find things later on, that will require to change the design. This is not bad news, this is just a fact. Accept it.
At the end, all teams presented what they came up with. As I presented, I saw that as we’ve replaced drivers and co-pilots, our naming convention changed, and also the way we wrote different tests changed. To keep those in line, we need to remember to review the tests by different people all the time. But the naming convention is just a tool. Regardless of using underscores as separator for every word or not, as long as it’s readable it’s ok.
I’ve also learned that night, that the German keyboard is not that fit for coding C#. Apart from the fact that the German guys who were using my computer couldn’t find the semicolons and braces, when I tried to use their keyboard, I found out that distances between keys require using Shift combinations, making it hard for programming to flow. I think I sense a connection between where languages were invented, and the keyboard setup used there.
Overall it was great fun with great people. And followed by Pizza and beer, we finished the evening going out and talked about the developer community, in Germany and in general.
PS, throughout the evening, I was trying to remember what Kata I led in the Israeli software craftsmanship group 2 months ago (beer effects probably). Thanks to the internets, which logs our life without us even knowing, I now know it was the code line counting kata.