Saturday 16th of November, 2019
7AM on a beautiful sunny morning in the city of Melbourne… ahh, the weekend. What a perfect time for software developers to gather, mingle and get stuck into a whole day of coding.
This year on its 10th anniversary, the annual Global Day of Coderetreat was held at the Telstra Purple office with the support of many local sponsors — SEEK, OFS and REA. We were one of 154 global events held this year, a steady increase from 133 in 2018.
Practice and improve your craft
Coderetreat: a day-long, intensive practice event, focusing on the fundamentals of software development and design, away from the pressure of ‘getting things done’
Coderetreats are a great way to practice and improve the way you solve problems rather than always focusing on trying to get your next task done. The idea is that you are given a problem which is simple to understand, but should not be able to be completed in 45 minutes. Combining this with some finely engineered constraints throughout the day encourages developers to sharpen up basic skills and find new ways to think outside the box. Improving these abilities will, in turn, result in a reduction of the cost of change in the future.
After months of planning, meetings, Trello-ing and running around, it was finally showtime. The committee arrived nice and early at 7AM to add some finishing touches to the venue, continuing from the long night before. Doors officially opened at 8AM, but there was already a lot of passion burning early on with some participants eagerly surprising us at 7:30AM. Morning fuel was provided in the form of yoghurt, fruit salad, croissants, bacon and egg muffins, homemade vegan carrot cakes (thanks Kelly!) and of course a coffee run.
With 24 energised participants all fuelled up, we were ready to get going! We started the day with a quick run-through of the coderetreat goals, pair programming, TDD and a reminder of Kent Beck’s 4 rules of simple design. The task for the day was to implement Conway’s Game of Life over a series of sessions with a variety of “activities” (constraints).
The day consisted of six 1 hour blocks, each running for 45 minutes and leaving 10–15 minutes for a quick retro and break. At the end of every 45 minute coding block, we asked all participants to delete all of their code. Ouch! Sometimes you just need to remove emotional ties with your 45 minutes of pride and joy to focus on the goal — learning. After each session we got everyone to run the mini-retros and asked participants to share their insights and learnings.
Watching participants gradually become less emotional about deleting code was a fascinating sight to see. I remember the first time I participated and happily threw a juvenile tantrum whenever asked to delete my code. Towards the end of the day it is great to see the transformation from participants trying to solve the problem (day-to-day job mentality), to experimenting, learning and trying different crazy ideas. Energy continued to buzz throughout the day with a lot of new ideas and high fives along the way. Great success!
This time around we ran these 6 fun activities for the GDCR:
- Session 1: No constraints — to allow participants to get familiar with Conway’s Game of Life.
- Session 2: Driver-Navigator / Ping Pong Pairing — to introduce the concept of pair programming, the roles of drivers and navigators alongside applying it practically by following the Ping Pong Pairing activity.
- Session 3: Mute Ping Pong — to increase the difficulty of Ping Pong Pairing and force more self-descriptive code by restricting participants’ ability to speak. This is always a challenge that our participants really h̵a̵t̵e̵ love so much!
- Session 4: Void Methods — to explore a controversial concept where all methods have side effects.
- Session 5: Pure Functions — to explore the opposite concept with functions that do not have side effects.
- Session 6: No Naked Primitives — to explore the idea of hiding all primitives behind classes which helps reduce code smell, increases encapsulation and improves understandability.
What did participants say about the day?
We asked for comments via a feedback wall (a post-event survey) and had a chat with some participants too. Here is what they had to say:
It was a great opportunity for me to meet devs with various skill levels and get a different perspective of how each one of them approach the same problem.
The constraints are fun as it forces you to either get creative or really make yourself clear.
Good food and good people!
I got to learn how other developers approach a coding problem and was able to attempt to solve it in many different ways.
Meeting new people and getting their thoughts on how they would solve a problem was great. It was amazing to see the diversity of thought and how people approach the same problem in different ways.
Committee lessons learnt
There are a lot of learnings for our guests throughout the day but also a lot for the organising committee to take in too.
Quick start boostrap repo
Having a quick start boilerplate repo with different languages and testing frameworks was extremely helpful to reduce early morning friction. We used a kata bootstrap repo by the swkBerlin group on the day.
Diversifying attendee skill levels
This time around, we had a lot more inexperienced devs attending the event. It was amazing to see such proactivity from newer members in the industry. One of the amazing benefits of the event is for devs of all skill levels to mingle and get different perspectives from each other. Next year we will aim to market more towards higher level developers to increase the spread.
Some of our earlier retros went overtime as a result of trying to get everyone to voice their thoughts in a short 10 minute window. Most of our retros were of almost the same flavour and it felt disengaging later in the day. Having a catalog of different retro styles could be useful to keep our guests buzzing at the end of each session.
Incentivising showing up
Last year, we had a slight issue with many sign-ups and having a large no-show rate on the day. This affected the event with allocating space, food wastage, among other things. This year, we decided to incentivise participants to show up by making it a ticketed event. They were promised a refund if they showed up on the day. This proved much more effective than having free sign-ups and our no-show percentage was much lower this time around. We decided to donate all money from no-show guests to Coder Dojo.
It was a long, intensive day of coding, eating and emotional roller-coasters as we all worked towards sharpening the old tools in the shed. Surprisingly, we were all buzzing at the end of the day and many still stayed after to enjoy the company of others, chit chat about their personal software engineering adventures over a few drinks and to finish off the mountains of food left over. I hope everyone got the opportunity to be challenged, learned something new, met some new people on the day or just enjoyed themselves coding on a weekend!
Interested in more Coderetreats?
Learn more about Coderetreats, their history, how to host or facilitate one and where to find the next event near you.
The next Global Day of Coderetreat will be announced on the website. Keep an eye on it, check to see if there will be a #gdcr event in your area and follow @coderetreat on Twitter or join the Software Crafters slack team.
To read more about Coderetreats, check out this blog post about an internal Coderetreat at SEEK by Victoria Schiffer.
Or have a look at this blog post about last year’s GDCR in Melbourne written by Ren Koh.
A massive thank you to my team for making the day such an amazing success!
- Asmine Hammadou for being a fantastic venue host, running around all day buzzing our guests in and out and ensuring we were all fed and well hydrated.
- Kanika Mehra and Ubaid Showkat for doing an amazing job as facilitators and helpers on the day.
- Kelly Benson, Nancy Do, Helen Giapitzakis, Seamus Kearney, Thoai Nguyen and Jacqui Shadforth for giving a hand to our guests on the day, helping to locate tasty food, caffeine, organising sponsorships to pay for food and caffeine, getting some sweet swag, creating amazing stickers, promoting the event, helping me with moral support to keep my sanity while organising this event and so, so much more…
- Finally a thank you to our local sponsors Telstra Purple for the event space, SEEK, OFS and REA for an incredible amount of food and caffeine and just helping to make the day a reality.