On November 17 2018, SEEK hosted the Global Day of Code Retreat (CDCR) for the Melbourne developer community. The GDCR is an event held all around the world, designed for developers to meet up to practice and improve their craft. Our event was one of the 133 registered events around the world.
As a participant in SEEK’s internal code retreat (held earlier in the year), I jumped at the opportunity to co-organise the event with several fellow SEEKers and our co-facilitators Tomasz from REA and Luke from ThoughtWorks. This was my first time running a public event and I soon realised how much time and effort that is poured in to ensure that everything runs smoothly on the day.
How we organised Melbourne’s GDCR
Organisation of the event occurred almost exclusively over Zoom and Slack. I didn’t even meet our external co-facilitators in person until the morning of. We broke down the tasks into cards, put them on our Trello board, and over 50 cards later we were ready to start organising!
One of the first steps was to register our event on the GDCR website and start spreading the word around the Melbourne developer community. After all, what good is an event with no participants? We spread the word with colleagues and friends and before we knew it the event had sold out and had a sizeable wait list. Success!
As the date drew closer, we needed to engage our participants and remind those that had signed up well over a month prior that GDCR was coming up. We sent out calendar invites to all the participants and asked those who could no longer attend to let us know, to assist us with numbers and to let a fellow dev who was on the waitlist get a ticket. The response rate to our comms was low and we ultimately released all the waitlisted tickets as we expected a few no-shows on the day.
On the day, many helpers arrived early to assist in arranging the rooms and hanging out signs both inside the office and on the street to assist participants. Most importantly, we ensured that every table had access to power as there was a long day of coding ahead of us. Breakfast was delivered and we were ready for people to roll in!
On the day
Attendance was great — we had 28 participants in total, with 13 of them being women. It was shy of the 40 that had responded but it was still enough to ensure a diverse group of developers.
The goal here is to practice, not to finish
We kicked off the day (after some breakfast and much-needed coffee) by familiarising the participants with Pairing, TDD and Conway’s Game of Life. We didn’t have the constraints pre-chosen for the day, as we wanted to see how the group was working and what constraints would prove to be most interesting. This is what we ended up running:
- Ping Pong TDD — working in pairs where Person A only writes tests & Person B only tries to get the tests to pass.
- No Naked Primitives — wrap primitive types (booleans, integers, etc.) in types to practice avoiding primitive obsession code smell.
- Baby Steps — write one test and an implementation to make the test pass in 4 minutes.
- Pure Functions — write functions where the return value is only determined by its input values, without observable side effects.
- Mute Ping Pong — No talking to your partner (and no, you can’t write comments in your code to communicate with your partner, either).
You can get more details about each of each of these constraints from our slide deck that we ran on the day.
As the day continued, I reached out to other organisers in neighbouring time zones to arrange a video chat. We managed to get in touch with Marcus who organised the Auckland GDCR. We asked them to tell all our participants to delete their code and stand up. Throughout the day, we managed to connect to events in Osaka, Shanghai and a couple more that were starting just as we finished.
Lunch was running a bit late, but we remained agile and pushed on with the next constraint until food had arrived. Afternoon tea followed, with social drinks being held after we finished the closing circle.
Learnings from our participants
Terence Duong and Ashish Kumar were two of the SEEKers that attended the GDCR. It was their first code retreat and they learnt a lot from their experiences participating. Here are some of their learnings and thoughts from the day:
- It gave us an opportunity to try and learn new things without pressure — even when using a language I was ‘familiar’ with, got to learn a whole load of new tricks that I had never seen before.
- It really demonstrates the value in pair programming.
- There are so many different ways to look at and tackle a problem and with each different view of the problem there are so many ways to solve it.
- It was an opportunity to understand how different people think and learn how to work with different ideas.
- It was great to work with people from different backgrounds and at different stages in their careers. We learnt a lot from seeing the way people approach problems.
- It demonstrated the importance of TDD and thinking long term while building applications. Without TDD, it would be easier to get stuff done in the short term but would be much more difficult to maintain as the project gets bigger in size. With TDD, you can be assured that any change you make to core functionality will work fine if all tests pass.
As always there are things we can do better next time.
If you read the previous post about our internal code retreat, you might recognise this lesson. We emailed out links to a github repo full of kata bootstraps to participants a few days before the event, but some participants spent a significant portion of the first round setting up a testing environment and others did not have a version control system set up on their computers for subsequent sessions. This could be improved for future code retreats by familiarising ourselves with testing frameworks for the most common languages so we can quickly assist participants who are new to TDD.
Retros — What went well, what didn’t, what could be improved?
Standing up in-front of a group of people to talk can be a bit intimidating for some people. We could encourage more people to get involved in the retros by providing a way for participants to provide more anonymous feedback on each session, such as Slido which we use for SEEK’s all-staff meetings.
Getting a better grasp on numbers
We initially had two rooms set up to run two different sessions concurrently, as we planned to host the full 40 people that had responded. This also made catering difficult as we didn’t want to be significantly under or over-catered. One possible solution would be for participants to pay a deposit when booking, which they would then receive back on arrival. We sent out a quick survey to those that didn’t end up attending to learn more about why they didn’t make it on the day.
Our Global Day of Code Retreat event in Melbourne was an overwhelming success. I learnt a lot about how much goes into organising such events and have a real appreciation for those who do this regularly for meetups and other community events — on top of their day jobs! I also learnt quite a few things from participants on the day which will influence how I approach the problems on my next code retreat.