The Code of Life
Last weekend an enthusiastic group of coders from the Ithaca area gathered at GORGES for a special event, as part of the Global Day of Coderetreat. Getting up early on a Saturday to work on code is not every developer's idea of a good time, but in this case the sacrifice of REM sleep was amply rewarded by a fun, sociable and thought-provoking daylong session.
The coderetreat phenomenon has only been going for a few years, but it has exploded into a worldwide phenomenon. This year an estimated 160 sessions were held simultaneously on December 8, in cities on every continent (except Antarctica, but who's counting?).
The idea of coderetreat is to get developers together to practice their craft - "practice" as in "practice the violin." Musicians and other creative professionals spend a lot of time practicing to improve their skills, but professional software development usually takes place in an environment full of deadlines and deliverables, which can make it difficult to experiment, explore, and learn effectively.
The coderetreat format removes these day-to-day pressures so that developers can take chances, try new ideas, and see how far they get. Pairs of coders work together in 45-minute sessions to try to solve a problem, but to stress the "no pressure" aspect, they are required to delete their code at the end of the session. This feels weird at first, but it becomes liberating.
Another way the format gets coders away from the day-to-day is by giving them a problem that they could probably not solve completely even if they tried. Teams are asked to create simulations of Conway's Game of Life - a generative process defined on a grid in which very simple rules can give rise to fascinating self-reproducing patterns. In each session the pairs are asked to try the problem using different approaches or constraints, and the whole group shares their findings afterwards.
Coderetreat is also about promoting the use of test-driven development, a process that makes it easier to build quality code by revealing when things break in the process of refactoring. Good code is code that can be changed and improved over time, and TDD helps to make this change painless. Participants were encouraged to use TDD techniques as part of the exercise, in hopes that it will become a part of their everyday toolkit.
Thanks to David Furber for organizing the event, Travis Vachon for facilitating, and to Singlebrook Technology, Think Topography and Incandescent Software for being local sponsors along with GORGES. I also enjoyed meeting a bunch of developers from these and other firms, and hope that this will become a regular event!