h1

Code Retreat Chicago

September 21, 2009

I participated in Code Retreat Chicago this past Saturday. Code Retreats are gatherings of developers who want to practice coding and learn while pairing with others on a given problem.  There have been other Code Retreat events, and this one was organized by Corey Haines and generously hosted by ThoughtWorks.  The format could be summarized as follows:

  1. Find a pair to work with.
  2. Work on a solution to the problem for 45 minutes.
  3. Discuss anything interesting from the 45 minute session with the entire group.
  4. Delete the code you wrote.
  5. Repeat 5 or 6 times

The secret sauce to this format is the selection of a problem that can’t be completely solved during a 45 minute session, and the mandate that all code be deleted after each session.  This frees everyone from any pressure to finish and permits experimentation with different approaches to the problem or development techniques.

The problem we worked on was Conway’s Game of Life.  It was really interesting to see the progression of the groups each session.  Most groups spent the first session exploring how the rules affect each cell in the game.  In retrospect, this wasn’t the best way to define the externally visible behavior of the system, but I think it was the natural place to start to begin to understand the problem domain.

As more sessions were completed, most groups seemed to begin focusing on the behavior of a container or world in which the cells live, and later testing for specific inputs and outputs to a generation or cycle of the game container.  I don’t know if that’s just a natural way to approach this problem, or if the cross-pollination resulting from group discussion and pair swapping led to a collective group thought process.

This Code Retreat was done in Ruby, whereas previous retreats had used Java.  Corey said that Ruby seemed to allow people to get further into the problem.  I’m relatively new to Ruby and still primarily use Java during the day, and I do think Ruby made it easier to bang out some quick ideas than would have been possible in Java.

My experience at Code Retreat reinforced my impression that pairing with others is a great way to learn a lot quickly.  Whether it was a TextMate shortcut, RSpec syntax, a Ruby library class, or a different way of thinking about the design, I learned something from every person I paired with.  And even though I’m pretty new to the Ruby toolset, I think there were a few times I showed my pair something they didn’t know, too.

That said, a Code Retreat is probably not a good way to learn a language, so you should have some baseline ability to use a Code Retreat’s language of choice before attending.

Thanks to Corey and ThoughtWorks for making all this learning possible.  I’d definitely like to attend future retreats and recommend them to anyone looking to practice their coding skills.

Corey took some pictures of the day’s festivities.

Leave a Comment