“You spend a whole Saturday…programming?"
"Um, don’t you do that for work?"
"And then you start a project you can’t possibly finish, predictably fail to finish, then scrap everything and start again?"
These are the types of questions you get when you tell someone you’re participating in the Global Day of Coderetreat, which I was lucky and smart enough to do on November 15th this year on LeanDog’s awesome floating office. I came together with around 19 other curious coders, ranging from development lifers, who’d written their first programs on punch cards, to complete newbs who were simply curious about what the heck was going on.
So here are some extended answers:
Yes, we spent the whole day programming.
The entire point of Coderetreat is to attack Conway’s Game of Life again and again. This is a seemingly simple game, where a “cell” lives or dies from turn to turn based on the number of living or dead neighbors it had. However, once you start trying to program the game, you find out it isn’t so simple anyway. What does it mean for a cell to be alive or dead? Can it be neither? How many cells are there? How can you find their neighbors to determine their state? How do you take a turn? Where’s the aspirin?
Yes, it’s what I do for work.
But I’m lucky— I love what I do. I got into programming because I love the challenge of trying to solve a seemingly intractable problem, and do it in the coolest way possible (to use the technical term). That’s another goal of Coderetreat— don’t just make code, make GOOD code. When we’re at work, we often have to rush to get something out the door. It works. And the code is nice. I mean, it’s fine. But it’s not necessarily great…or at least as great as I’d love it to be. So at Coderetreat, you work and work and make the code as great as you possibly can. No clients. No releases. Just the goal of writing great code.
Yep, we start over…and over…and over.
Each time we attack the Game, we are given 45 minutes, and you partner up with someone with whom you have not yet worked. Additionally, you get another challenge added to the already difficult challenge. Not only do you have to write The Game of Life…you have to do it with two-line methods. Or you have to do it ping-pong style, where your partner writes the tests you have to pass, and you have to pass it…until it switches. Or you have to work together in silence. And each time, you start from scratch, rewriting, attacking the problem from a new angle, with a new partner.
The True Glory of Coderetreat
That’s the true glory of Coderetreat, in my mind— everything’s new, for a problem that’s been around for nearly 50 years. You meet new people. You can try writing in a new language (people were coding in languages as diverse as C#, Swift, Ruby, and Java). You can try experimenting with new ways to attack the problem— do I make a cell first? What about the board? Are neighbors an inherent quality of the cells, or imposed by the game’s universe? Each round makes you revisit the answers you were pretty darn sure about last round.
As you can see, the questions people ask aren’t the ones I enjoy — it’s the bigger questions, the more fun questions that bring me back to Coderetreat. The ones that make it so next year on a Friday I’ll answer the same questions about why I’m getting up with the sun on Saturday: “Yes, it’s a whole day of programming, and yes, that’s what I do for work, and yes…”