This Saturday I’ve had the pleasure of attending a code retreat hosted by Agile Minds. The hosts were Erik Talboom and Adrian Bolboaca. In case you don’t know what a code retreat is, here is a quick explanation:
A code retreat is an event where a bunch of geeks… euh fellow developers come together to spend their united time coding. You get 45 minutes to code the assignment which is Conway’s Game of Life. It might seem boring implementing the same problem over and over but I guarantee you that no implementation of this problem is ever the same.
The goal of the event isn’t to finish the task at hand but to write the cleanest code possible. For us developers this is hard to grasp because we have the urge to deliver. But delivering a final product is at the bottom of the priority list here.
The assignment has to be coded in pair. After every 45 minutes you have to switch pairs. This makes it even more interesting because every time you start a new session, you are forced to reconsider your implementation with the ideas of the person you’ve paired up with. It’s not allowed to pair up with someone twice so you’ll always have a different angle to tackle the problem.
At the start of the event Erik gave us a few recommendations. He said that you’re not obligated to follow them but it’s strongly recommended that you do so. One of the recommendations was that you write your code in a TDD fashion. I’ve had some practical experience working test driven but I didn’t know you could take it that far. One of the eye openers was TDD as if you meant it.
I’ve already done a code retreat once hosted by my employer, but this code retreat was different in several aspects. The people in this code retreat were total strangers to me (except for one colleague of mine). I found it very interesting to pair up with people you’ve never seen before because you didn’t know what to expect from them. It was also different in the way that this code retreat was language agnostic, meaning it didn’t matter what your preferred language was. There were people doing java, ruby, C#, python, etc. I loved this aspect of the code retreat as it gave me the chance of trying out Ruby and Python, languages I’ve never done before.
It surprised me that there were a few people who had difficulty grasping the concepts of a code retreat. They were stuck with the notion of delivering a final product and didn’t seem to be able to get their heads around the fact that a code retreat does not equal a coding dojo or programming contest :-). Though I think at the end of the day everyone had a fair idea of what to do.
It was really fun participating in this code retreat and I’m certainly joining the next one. The learning experience was awesome. Some of the stuff I’ve kept in the back of my head is:
- Let TDD drive your design
- Doing TDD will help you archive other solutions for your problem instead of the predefined one in your head
- Everyone has a different angle for the same problem. Combining insights can deliver promising results!
- Having 2 keyboards is very useful when programming in pair
- I’ve got to try out ruby
Python is one damn ugly language
Certainly take a look at the website of Agile Minds and join us next code retreat (recursion joke...)!