This last weekend was the tenth annual Global Day(s) of Code Retreat, with over one hundred and fifty Code Retreat events running on either the 15th and 16th of November. Not having been to one before it was great to find there was an event being run by Barney Dellar and Natalia Zon from Canon Medical Research at their office in Edinburgh, so I signed up to head along.
The basic idea of the Code Retreat is to look at how we as software developers code by coding the same basic problem in a series of exercises during the day with various restrictions. The basic problem is based around Conway’s Game of Life devised by British mathematician John Conway back in 1970, although during the course of the day it’s unlikely that anyone will get a working solution as your code is thrown away at the end of each exercise!
Each exercise lasts forty-five minutes, which is followed by a short retrospective session and a break, and then we start again. First off we had a simple attempt to solve the problem, to get used to pairing and the Cyber Dojo environment that we all used, however from there it got more difficult.
Session number two we were heavily restricted in the length of methods we could write, and in my case that was made more difficult by myself and my second coding partner coming at solving the problem from totally different directions! As a result of that in session number two I came up with a better explanation as to my thinking, which then came totally to nothing as session three we weren’t allowed to talk to or communicate with our pairing partner at all, except through the code we were writing, and we took turns to write tests and implement the code to pass the test.
Session four thankfully we were allowed to talk to our pairing partner, but had restrictions of not being allowed to use conditional or loop statements to solve the problem, this was just the kind of challenge that had a lot of the developers at the event still thinking about how to do it as they were leaving at the end of the day!
In session five we were exploring the Kent Beck idea of Test and Commit or Revert so if our tests failed for any reason we had to revert to the last successfully passing code, and delete what we had written since then. This is to encourage you to make small simple changes and always have working code rather than perform big changes that could potentially break.
The final session, Barney who along with Natalia was leading the event told us that since it was the last of the day we could do what we liked, resulting in lots of experimental solutions. However it was a ruse, and after twenty minutes he swapped the pairs around, and then five minutes later swapped development environments handing us all what was effectively legacy code with non-working tests, and in some cases in a language the new developers were not familiar with. The retrospective after that was interesting with all of us trying to explain where we were going with the half finished solutions that were passed on to others.
So was it worth giving up a Saturday for? Absolutely. Usually as developers we’re trying to learn development techniques at the same time as doing our actual work, it’s rare we get a chance to actually just look at how we code, and as such it was a really worthwhile day. Canon Medical Research actually ran the day twice, firstly on the Friday when it was mainly their own developers who attended, and then the public session on the Saturday. Certainly if you have a large number of developers it is the kind of event that could be run internally if you’re wanting to improve the coding skills of your team.