Code retreat 2023 - a debriefing

Last updated Apr 15, 2024 Published Nov 19, 2023

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 programming and understand the game of life kata, no rules are added, and the only recommendation is to pair with someone who knows the same programming language.
  • iteration 2: TDD
    • This is the first iteration that TDD is used 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 who practice TDD.
  • iteration 3: Trying new things
    • In this iteration, it is recommended to try out a new programming language, and 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 and 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 where we 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. At 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 to only use the IDE shortcut to make his moves.

For me, the key message from his talk was: that refactoring can cure the code that lacks care and transform code bases to something maintainable. All that was supported by regression tests that were passing all the time for each move that he did. If you are curious 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), Trunk-Based Development (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 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.

Resources