Last Saturday I got up very early in the morning so I could spend the whole day at the Code Retreat in Ghent. This Code Retreat was organized by AGILEMinds and facilitated by Corey Haines. You might ask yourself what a Code Retreat is.
A Code Retreat is a bunch of software developers who get together and practice their craft, share ideas and basically try to learn and improve. There are six sessions that last 45 minutes. For each session, one has to pair up with another participant and work on a problem called Conway’s Game of Life. All pairs decide for themselves which programming language and/or platform they want to use, as long as they don’t waste the majority of their time setting things up. There are a couple of rules though. First of all, regardless of the technology used, applying Test-Driven Development (TDD) is a must. You also can’t pair with the same person more than once. At the end of each session all code must be deleted after which a short group retrospective is being held.
There was quite a nice turn-out for the Code Retreat in Ghent despite the fact that folks were spending their Saturday with a bunch of other geeks :-). I was also pleasantly surprised to see so many .NET developers amongst the attendees. There were also a number of Java and Ruby developers as well. It turned out to be quite a good mix.
The first two sessions of the day were more about getting familiar with the problem while trying to implement a solution. Gradually I got a better understanding of the problem and also had a couple of “ah-ha” moments throughout the day (even during the last session).
I learned a lot from watching how other people write unit tests, implement code and how they approached the problem. Throwing it all away after each session and starting out fresh was extremely liberating. We used C# for most of the sessions except for one session where we actually used Ruby. It probably sounds like a cliché by now but using Ruby really opened my eyes on how concise this programming language is compared to static languages like C# or Java. Going back to using C# on the next session was a bit hard to do. I was amazed by the amount of cruft we have to type just to satisfy the compiler. A fair amount of people came to the same conclusion during the final retrospective after the last session, so I guess there is some truth in that.
While I have been doing test-driven development for a good number of years now, I learned that I really need to focus on letting my unit tests drive out the design of the system. I usually have a design in mind before I start writing tests but I should practice more on how to let the design emerge. There is definitely some ground for me to cover on that particular issue.
I also noticed that the 45 minutes of a session just fly by. It’s a very short time. Therefore, the last session lasted for about an hour and 15 minutes. During this period of time we managed to get closer to solving the problem at hand, but it still was not enough time. How time can fly by when you’re enjoying yourself ;-).
I had a total blast and got more out of it than I initially expected, which is always a good thing. If you ever get the chance to be part of a Code Retreat, then I recommend you take that opportunity and spend a day coding, practicing, communicating with a other developers. It’s totally worth a day of your weekend regardless of how scary that may sound.
You can take a look at the pictures of last Saturday to get a sense of the atmosphere. AGILEMinds also announced that there will be another Code Retreat in Belgium on January 16th 2011 with a live hand-over from the Code Retreat with Corey Haines in Cleveland.
Kudos to AGILEMinds and Corey Haines for making this happen.