Code retreat 2023 - a debrief
The content here is under the Attribution 4.0 International (CC BY 4.0) license
For the second consecutive year, I participated in a code retreat day with my colleagues, not only as a coding member but also as an organizer. My responsibilities included facilitating iterations and ensuring the smooth running of the event. As anticipated, the participants arrived punctually, and we commenced the day with a welcoming area and breakfast.
We began the day with a brief introduction session, followed by an engaging ice-breaker activity. These activities fostered connections among the participants and gathered insights into their preferred tech stacks. This allowed everyone to identify potential pairing partners.
The day was structured into various activities, and we remained together throughout. We engaged in five coding iterations, each lasting 45 minutes and featuring unique challenges. The iterations we designed for this year were as follows:
- iteration 1: no rules
- in this first part we get together to pair program and understand the game of life kata, no rules are added, the only recommendation is to pair with someone that has knowledge of the same programming language.
- iteration 2: TDD
- This is the first iteration that we specifically add TDD for solving the kata, as well as switching the pairs. In this iteration, for some of the attendees, it is the first contact point with TDD and with people that practice TDD.
- iteration 3: Trying new things
- In this iteration it is recommended to try out a new programming language, a new approach to the kata (such as doing it using outside-in TDD).
- iteration 4:
- This iteration is all about getting object calisthenics into practice, combining them with the TDD flow that we followed in the previous iterations.
- iteration 5:
In the last iteration we also play around [Test && Commit Revert](https://www.infoq.com/articles/test-commit-revert/). This is one of the stages that we also add some time limiter to make things more fun, we suggest a mark of 3 minutes. Every 3 minutes a commit with tests in green should be made, otherwise a revert.
Between iterations we do breaks and we also stop for lunch after iteration 3, this is a nice opportunity to interact with each other.
In the end of the day we also had a slot for a special talk held by Daniel Ramos about refactoring, he walked us through the gilded rose kata with the objective of only using the IDE shortcut to make his moves.
For me, the key message from his talk was: refactoring can cure the code that lacks care and transform code bases to something that is maintainable. All that supported by regression tests that were passing all the time for each move that he did.
If you are courious about the content, the slides are available here.
The code retreat experience
The daily routine of a developer often doesn’t allow much room for experimentation. Even when new technologies emerge, such as new frameworks, libraries, or cloud service providers, it’s not always feasible to try them out on the job. Consequently, developers often resort to self-directed learning, experimenting on their own through trial and error.
Code retreats provide developers with a unique opportunity to explore new techniques, focusing on practices that enhance technical excellence and address challenging concepts that might be difficult to master independently. These practices include Test-Driven Development (TDD), Test-Based Design (TBD), the Four Rules of Simple Design, and many others. The most significant difference lies in the learning experience itself. Surrounded by fellow learners and experienced mentors, participants embark on a collaborative journey of knowledge and skill acquisition.
The primary benefits of attending a code retreat stem from the sharing of experiences and the forging of new connections. For those passionate about coding, each iteration will swiftly pass by, and as the day progresses, it’s remarkable to witness the transformation in problem-solving approaches using Conway’s Game of Life Kata. Initially, pairs typically begin with a full grid, evaluating the status of each cell. However, by the end of the day, their designs evolve to start with individual cells and expand from there.
The lasting impression left by a day of coding and learning is the satisfaction gained from connecting with fellow programmers, both seasoned veterans and aspiring newcomers. Sharing this time together fosters a sense of camaraderie while simultaneously enhancing technical skills through collaborative coding.
If you want to know more about the code retreat and how it came to be, have a look at the book written by Corey Haines, he summarises his experience watching 1000 pairs doing the game of life kata.