Back in September 2019 we decided to host a Global Day of Coderetreat event. Since we’re a remote first digital education company, this event would also be conducted remotely. The event would be globally available and would include people inside and outside of TES.
A few questions you may have 🤷🏽♀️
What is a Coderetreat?
Originated at the Codemash Conference in January 2009 by Gary Bernhardt, Patrick Welsh, Nayan Hajratwala and Corey Haines. The Global Day of Coderetreat is a full day of intense practice focused on the fundamentals of software development and design. The aim is for developers to improve their coding skills by putting focus on basic principles, thinking “outside the box”, pair-programming for knowledge sharing and removing the pressure of “get things done”. Participants work on a coding kata called Conway’s Game of Life. They code in pairs in several rounds of only 45 minutes. In each session they need to follow different limitations like writing code without using conditionals. After each session the participants must delete their code and join a retrospective with the whole group. For the next round they swap to work with a different person and possibly a different programming language.
“Global”? Is it really a world wide event?
Yes it is, this year 147 events took place all around the world with 36 hours of coding rippling through time zones which you can checkout on the coderetreat website here. It’s been over 10 years since Coderetreat started and it has successfully connected people across the world through code.
Now the FUN part, how did we organising this event?
To manage this project we created a Slack channel and ZenHub board as one does when ready to drive impact. The Coderetreat website has some great resources for event organisers. We also found a blog post with lessons learnt from someone who had organised a remote code retreat before, which was very useful for us. Our organising team was made up of engineers whose names all suspiciously start with the letter ‘R’ - Rabea Gleissner, Rachel Davies and myself, Ruddy Riba. In the next couple of weeks this is what we aimed to achieve;
1. Invites and registration
Since the event is for both people inside and outside of TES, we needed a generic platform to enable people to register for the event. We chose Eventbrite and created a sign-up sheet to gather information from participants such as their IDE preference, favourite language and so forth. We also requested email addresses to contact participants with any information that they needed to know prior to the event.
2. Day lineup and content
We used Google Slides to put together content about the event, covering things like who we are, how the day was going to go and explaining each of the limitations for each session.
3. Technology to be used
We created a list of tools to be used on the day and shared it with the participants ahead of time, so they could install and familiarise themselve with them, such as:
- Zoom for pairing and video conference session with the whole group,
- Visual Studio Live Share to promote more seamless code sharing and pairing,
- Google Sheet to monitor which pair is pairing and on which Zoom room,
- Slack for communication throughout the day.
4. Promoting the event
We took to the TES blog to explain the event and what will be happening on the day. We added the Eventbrite link on the blog so people can sign up. We also posted on our personal Twitter pages as well as the tes_engineering Twitter page. We took it a step further by reaching out to our local meetups to also promote the event.
5. Trial run
Since this event would be available to anyone in any part of the world, we wanted to test that we had properly prepared for the event. So we asked our colleagues at TES really nicely to spare 3 hours of their day to help us fine-tune our preparation. We went through our introduction slides and then paired them randomly for 2 sessions of the game. After each session we asked for feedback in a retrospective. We then later discussed the feedback and made the relevant improvements.
On the day 🥳
At 9am GMT the Zoom conference was up and we were ready for kickoff. We had participants from Denmark, Spain, Kenya, UK to name a few, each with experience in different languages and different skill levels. We went through the slides containing information such as the principles of a coderetreat, Conway’s Game of Life problem and the lineup of the rest of the day.
We made a round of introductions, which I think added a really nice personal touch. The format was to share 5 things:
- your name,
- your location,
- preferred programming language,
- work experience,
- your favourite food - mine is … 🍰!!
We used an online tool to randomly generate the pairs for each session. We then added these names to a Google spreadsheet along with the link to the Zoom room that they were using.
The facilitators used these links to jump into the call to provide any support or updates. Slack was our ‘virtual’ communal space, participants would ask questions there, any Zoom links for the next session would be shared there, notification of remaining time on each session was also announced there.
We managed to run all five sessions on the day. The first session had no constraint to allow the participants to fully understand the problem and tools they feel comfortable using. We then introduced “TDD ping pong” as a constraint, then the next one was “no conditionals”, followed by “1 line method body” and the last one was “pure functions”.
- Visual Studio Live Share is a great tool to facilitate remote pairing, more on remote pairing
- Adding the end time of the session on the google sheet creates visibility,
- Sending technical requirements to participants days before the event helps them to better prepare themselves,
- Zoom and Slack or similar technologies are good communication tools before/during and after event,
- Try add 5 minutes break before starting each session to give time for participants to make coffee or fetch water,
- At lunch time, try take a full hour (possibly more) to allow everyone time to refresh, and No! people don’t like eating by their computer looking at strangers,
- Deleting your code before starting the next session is as painful as getting an eyelash stuck in your eye,
- Always make sure you have good connection, all the above mentioned tools like Zoom are taxing to your network,
- 3 facilitators for a group of 10-15 participants is good coverage to handle all the tasks of the day such as announcements, check-ins, answering questions, retrospectives and social media,
- In all our sessions TDD was encouraged to ensure that participants see the impact of thinking in a test first manner,
- 45 minutes sessions go by very quickly,
- Enjoy learning from others while at the same time training yourself to think about a problem in a different way,
- Always be kind!!!
A special thank you to TES for the support and encouragement, to all our colleagues who helped us in achieving this event through the trial run and effective feedback you are awesome!