Impressions About the Global Day of Coderetreat 2015

Last 14th November was the Global Day of Coderetreat 2015. That day 144 code retreats were held all over the world, gathering around 2.000 developers in 44 countries.

A code retreat is a practice event focused on the fundamentals of software development and design. It is meant to be an opportunity for developers to practice and improve their skills in a no pressure environment, away from the deadlines and the fear of failure in their daily jobs. Code retreats are run by facilitators, who act as guides throughout the day and think of different activities to keep the participants challenged.

They consist of 5 or 6 sessions. Each session lasts 45 minutes, and during that time participants will work in pairs on an implementation of Conway’s Game of Life, using Test-Driven Development (TDD) and writing code that follows the Four Rules of Simple Design. After each session the participants must delete their code, to stress the idea that it does not matter how close to finishing the implementation they were.

A short retrospective follows each session, and after that the participants switch pairs and a new session starts. Facilitators usually introduce new constraints in each session, to keep the participants challenged and to help them think about implementing a solution differently.

When we at Openbravo product team learned about code retreats we were interested immediately. Events like this one help developers to become Software Craftsmen. That will result in us writing better code, which in turn will lead to improving the quality of the product we build at Openbravo. We were very happy to find out that one was held in Logroño, very close to our headquarters in Pamplona.

Logroño’s code retreat took place at the ThinkTic facilities and it was organized by Rioja{dot net}. We were welcomed by Luis Sagasta and Asier Tarancon, the Rioja{dot net} co-founders. After a short introduction they gave the floor to Fernando Pérez and Alfredo Fernández, the code retreat facilitators. They told us a brief history of code retreats and shared the schedule and the goals for the day.

After that all participants introduced each other. About 60% of the attendees were software engineering students, the other 40% had more work experience, a good mix of veterans and new talent. The most common languages of choice where Java, Javascript and C#. Only a few of the attendees had any experience with TDD. For the first session, the facilitators suggested we tried ping pong pairing. In this technique, one person of the pair writes a test, and the other person writes the code needed to pass that test. After that the roles are reversed, and so on. In the retrospective that followed the first session the facilitators realized that most of the pairs struggled not with the Game of Life’s implementation but with TDD itself. They decided then that it was better not to introduce further constraints, so that people could really focus on improving their TDD skills.

The rest of the sessions, even though they did not introduce any additional constrain, were far from fruitless. We got to learn the triangulation pattern. I found it very useful, as without it I sometimes had tests that were green from the start, a big NO in TDD. In one of the retrospectives a pair shared their TDD approach, in which they included the code that made the tests pass inside the test class, because they said that TDD requires you to write the minimum amount of code to make the tests go green. Without knowing it they were actually working under the TDD as if you meant it constraint. It is a good exercise to challenge people who are already familiar with TDD, but the facilitators told us that in our daily work is better to have a system under test (SUT), that will contain the components that are being tested.

Working without constraints also incentivized us to think of different approaches to address the game. Should we start testing the board? Or the behaviour of a cell? Who should own the survival rules, the board, the cell, or a third party?

I had a fantastic time, it was both fun and educational. We found the code retreat to be such a rewarding initiative that we at Openbravo would like to bring it closer to Pamplona, and we are already working towards hosting one next year. If any of you are interested in taking part in this initiative, you can contact me at augusto.mauch@openbravo.com. Stay tuned!