This blog post was written by Leah Belin, a C# Developer at Homesnap. On Saturday. November 17, Leah hosted a Global Day of Code Retreat at Homesnap’s headquarters in Bethesda, MD.
Chuck Norris can divide by zero. Chuck Norris doesn’t need to debug code, he just looks at it and the bugs all run away. But the rest of us need to practice our code craft to bring our A-game to work every day, and this is the purpose of the Global Day of Code Retreat.
Since I started working, I’ve always been involved with helping different communities. The community I’m most active in is the tech meetup community. I’ve spoken at several meetups and over the past two summers, I’ve run technical book club discussions.
Since I got to Homesnap, I’ve been wondering how my involvement with the tech meetup community would integrate with the community-mindedness of Homesnap. And when two friends of mine from the meetup scene asked if Homesnap would be willing to host this year’s Global Day of Code Retreat, I got my answer.
What is the Global Day of Code Retreat?
The code retreat format was devised by retreat guru Corey Haines in 2009 as a way for developers to get away from the pressure of deadlines and production code.
The idea is that when the pressures are gone, developers will have the freedom to experiment, learn, and try to write the perfect code they can’t always achieve in real-world scenarios.
How the retreat was structured
Developers started the day getting familiar with the coding problem: mathematician John Conway’s Game of Life. It’s a notoriously complex zero-player game in which generations of cells live, die, and reproduce, creating mesmerizing patterns.
In this first session, programmers used paper, pencils, M&Ms, and colorful Post-Its to get their brains around the rules and work out how the game algorithms worked.
Session two introduced the concept of test-driven development and pair programming, with developers “ping-pong pairing” to accomplish their coding goals. Similar to a game of ping-pong, developers passed computers off to each other as the first one wrote a failing code test, then their partner wrote code to make the test pass, then wrote a failing test themselves before passing the computer back to their partner.
One participant got very excited when his partner introduced him to a live code-sharing program he hadn’t known about, in which both partners were able to write code while working at their own laptops.
After a relaxing lunch which included lots of networking and mini basketball, the developers returned for three more afternoon coding sessions.
The afternoon sessions all put restrictions on the developers, dictating certain rules they had to follow while coding so that they would think deeply about coding practices and patterns.
The last session of the day was a “Mob Programming” session. A bit of very bad Game of Life code was presented on the big screen. One at a time, each developer took to the keyboard and changed bits of code under the instructions of the rest of the group, slowly making the code better.
By the end of the session, the group had reduced a 200 code method to less than 50 lines, added full unit testing coverage, and made the code much more readable.
A long but exciting day
It was an exhausting, intense day of coding. But in the closing circle, all participants eagerly shared what they had learned and what ideas they wanted to incorporate into their programming come Monday.
One of the things I love about working at Homesnap is how involved in the community everyone is. From throwing birthday parties for children at local shelters, to feeding hundreds of homeless people around DC, to hosting a group of programmers from throughout the community — Homesnap is a company that cares about people. And I’m glad to be a part of it.