Saturday the 22nd of October was Global Day of Code Retreat. This year, reinteractive brought Code Retreat to Adelaide.
Code Retreat is an all-day intensive coding practice, focusing on the fundamentals of software development and design. It is a non-denominational event and coders from all disciplines and all experience levels are welcome.
It consists of a series of 45-minute pairing sessions, during which time we implement as much of Conway's Game of Life as possible.
With each successive round, we switch pairs. Also, with each successive round, we introduce a constraint. The idea is for developers to explore new ways to approach the same problem. In doing so, we can expand our skills as developers.
And finally, the most challenging part of all: at the end of each round we delete our code. Yes, you heard right: that code we slaved so hard over and felt so proud of is deleted! Every time. There is a reason for this craziness. It allows us to start afresh each time. We have a clean slate and are free to choose a different approach. It also removes any pressure to write the perfect code. Regardless of what we produced in the previous session, it is gone and we can begin again. Although confronting to begin with, it actually becomes quite liberating as the day progresses.
We began the day by simply coding the exercise without any constraints. This allowed us time to understand the problem without any distractions.
We then moved onto Ping Pong, which is where one of the pair writes the first test and the other person writes the code to make it pass. Then roles are reversed: the second person writes the next test and the first person writes the code to make it pass. And so on...
We deliberately chose Baby Steps as the third exercise because it was the last session before lunch. It is a valuable practice but mentally exhausting. Here, each pair has to write a test and have it passing and committed to git within three minutes. If the timer goes off before the commit has been made, it must be discarded and they start again. Once that passing test has been committed, the next three-minute period is for refactoring. The purpose here is to learn to break your work into the smallest steps possible and commit more frequently.
We took an extended lunch break and enjoyed a delicious Ploughmans Platter courtesy of Red Star Catering. As much as everyone loves pizza, it is nice to try something different and this was a winner. You can't see it in the photo but there is a huge chunk of brie hiding underneath the salad leaves. That's all I need in order to be happy! :-)
One of our attendees had run a workshop on the finer points of TDD at RubyConf this year. We took the opportunity to learn a few tips and techniques from him during the break.
After lunch we did an exercise where conditional statements were forbidden. This forces developers to think outside the box and find alternative ways to solve a problem.
As a final session for the day we allowed participants to choose their own constraint. Some people chose Missing Tool and forbade the use of their mouse in favour of keyboard only. Others repeated previous exercises. And one pair took the opportunity to work in Elm, a language neither of them had any experience with.
All in all, it was a very successful day. We had a wonderfully diverse range of participants, both in languages and in experience levels. We had experienced senior developers, juniors, some developers who had only ever worked solo and were new to both pairing and TDD, and even a few motivated university students. Everyone got something out of the day and I like to think they went home a better developer because of it.
I look forward to the 2017 Global Day of Code Retreat. If you would like to host one in your city, contact me at firstname.lastname@example.org and I'll do my best to make it happen!