Last 14th of December was the Global Day of Code Retreat 2013. I came to know about Code Retreat this summer, in one of the session done with our coach during the RGSoC, actually the last one. I had no idea about the format, and also though explained at first I did not completely get it, but there was something that made it very attractive, the basic rules sounded great.
How Coderetreat is explained in their webpage is:
Coderetreat is a day-long, intensive practice event, focusing on the fundamentals of software development and design. By providing developers the opportunity to take part in focused practice, away from the pressures of ‘getting things done’, the coderetreat format has proven itself to be a highly effective means of skill improvement. Practicing the basic principles of modular and object-oriented design, developers can improve their ability to write code that minimizes the cost of change over time
Once I got to know that a Global Day of Code Retreat was going to take place, I signed in. At first I was not too sure if I would fit, I mean I don’t consider myself to be “fluent” in any language, I did not know how the format worked, I was not really familiar with the Game of Life, so I signed in just because I had the intuition that I was going to enjoy it.
There are several characteristics of Code Retreat, one of them is that organizers want to make sure that you are committed to programming, for that the event started at 8:30am on a Saturday (yes, the kind of day that you don’t want to hear the alarm clock), you had to pay a ticket but if you attend you get the money back.
At 7:45 up!! just to get ready and arrive on time. Before going, I shutdown the computer, put it on the bag and off.
When I arrived, there were already some people, with their laptops, first introductions, first chats. I looked for a seat, took my computer out, tried to start it and …..it did not boot!!!! oh great…there was I, in a coding event with a broken computer, it looked like it was not a good start. I told the organizer, he said, no worries you are pair programming, so you just need a pair with a computer, ok, then perfect!!! everybody in the room seemed to have a computer 🙂 … even if you don’t have one, you can use paper!!
Ok, first thing was to stand up in a circle and shortly introduce ourselves, name and language you use (mostly java but also ruby, haskell, scala, where present), we were around 25 people, I guess, in the event. Then we did a barometer, to know how many people knew or used TDD, there were people that used it for everything, others that had never used it. So after this couple of quick rounds, everybody had a general idea of the group skills. Time to start.
First thing was to explain the rules of coderetreat, the idea is to implement just Conway Game of Life, so since many of us were not familiar with the Game of Life, if was explained, as well as drawn and hang on the walls, so that you had present the 4 cases of the GoL
Then there were going to be 6 sessions, for each session you had to choose a different pair, each session lasted 45 minutes, after each session you had to delete the code, the main idea behind deleting code is not to attach to certain code, to be free to code something else that can be better. The first three sessions were going to be similar, the last three would introduce restrictions. Also after every session, we stood up in a circle and people could share what had they learned (good or bad practice), suggestions.
So the day went on, more or less the sessions were like this
- Warm up.I was pairing in Ruby
- We were both new to TDD, GoL so more than coding GoL, we shared different approaches and since she was more familiar with Java and me with Ruby, we also learned what differences where there due to the language
- The first two sessions started with the approach of defining a cell, we decided to start to model the infinitive board. We concluded that was not the best approach.
After the third session it was time for lunch, take a break, go for a walk. the atmosphere was nice, it was easy to talk with the participants, so there was time to relax. But before that, we had to write in post-its and in groups of 2-3 people what had we learned during the morning, the post-its would be sticked to the wall.
One hour later, started the second part of the code retreat.
- A restriction was introduced, our methods could not have return values. We got very confused about this, not really knowing how to handle it, used a bit of pen and paper, then decided to do it without restrictions and then figure out how to introduce them. I paired with a Java person.
- More restrictions were added, there was a list of 10 and the idea was to try to use as many restrictions as possible. We chose, no return values, no if, else, and something else that I’ve forgotten. This was another ruby session.
- Apart from the restrictions, we could add, not to use the mouse, do it in dojo format, we were 4 with one computer, language chosen Java.
So by the end of the day I was exhausted, still we had to write in groups of 2-3 people, what had we learned, what could be improve, what would we try to implement on our next day of work. Also there was a place to rate from -X to 10 the experience of coderetreat, most of the people thought it was worth an 8.
So yes, it was an amazing experience, my fears having a broken computer, not knowing enough about TDD, about GoL, were gone, in a code retreat just one thing can happen that you learn a lot, in pairs, with others.