Global Day of Code Retreat 2014
Global Day of Code Retreat is an annual world-wide event that lets programmers hone their skills with deliberate practice. The format is the same each year. Over the course of a day, coders implement Conway's Game of Life several times with pair programming and TDD, and a new nefarious constraint to keep it interesting.
141 cities participated this year. We broke twice to Skype with locations in other time zones. Our first call was with London, halfway through their day. The second call was with Utah, near the end of our day. ( It reminded me a bit of lighting the beacons of Gondor, code leaping from location to location with violins swelling in the background. Anyone else? No? Moving on...)
Saturday morning found me out early and wondering why I signed up. I rarely pair program, and I'm self conscious about showing my code. Don't I write code all week? I was more civil after breakfast and a couple cups of tea courtesy of Zipcar, who generously hosted the Boston event.
Code Retreat is different from work in several ways, and these create room for experimenting. First, there was no expectation that we complete the implementation in 45 minutes. Without a deadline, there's no penalty for slowing down or refactoring. We deleted all code after each round. There was no target to meet, and no chance for attachment.
Coding with strangers changes the dynamics of pairing. Pairing with coworkers takes place in a broader relationship. There's a little background energy devoted to maintaining good relations and ensuring we're both moving toward our goals. Pairing with a stranger for 45 minutes was penny ante poker. No big deal if we didn't agree about semicolons or had a different solution. If I code terribly, who cares? We'll never see each other again, and we're not going to maintain the code. You'd think that would lead to bickering. In practice everyone got along fine and coded well. Nobody invoked Vegas Rules.
We finished six rounds. The Boston facilitators chose these constraints:
- a vanilla warmup round to get used to the game,
- ping pong,
- no conditionals,
- no naked primitives,
- TDD like you mean it, and
- tell don't ask.
The constraints took some creativity to work around. It was interesting to see how other people think, how they compose code, and what tools they use.
I worked in three languages and four editors. One of the biggest surprises was being able to contribute and debug in the language I don't know well. My partner did the driving, but most of the time was spent strategizing.
Some of the most satisfying moments in my profession is collaborating hands-on with really smart people. I throw out an idea, my partner twists it, and we've made something better than each of us alone. I don't get to indulge in it as often as I wish. Code Retreat let me spend a day on the good parts.