Herein follows a belated transcription of my notes for GDCR 2011.
Global Day of Code Retreat 2011
Five iterations noted. I switched pairs every time, and we changed languages. This used Corey Haines’ format (GDCR 2011 was his global party), with Conway’s Game of Life as the ruleset, TDD and pairing, throwing away code after each iteration. (I saved some of the code on my machine, but it’s probably not too interesting; I didn’t make use of it on successive iterations).
Iteration #1 Theme: Anything Goes. Partner: Ken. Language: Java.
Retrospective #1: Slow getting off the ground.
Retrospective #2: Created a “Test” button, used a browser document as the development environment. Comments from another group: In Scala, the type checker did a lot of the work.
Iteration #3 Theme: Absolute best code. Partner: Ian. Language: C#.
Retrospective #3: Used dynamic objects and continuous test plug-in in Visual Studio. Cleaned up tests. Question from moderator: “what was clean?” It was okay letting go of (1) getting it done; (2) hesitations regarding quality. The rules corresponded to the grid. The core logic corresponded to the web framework.
Iteration #4 Theme: Ping Pong TDD (write failing test, change partners, fix system to pass test, write failing test…), simplest implementation. Partner: Mark. Language: Ruby.
Iteration #5 Theme: Avoid conditionals in code. Partner: Aidan. Language: Java.
Used enumerated types whose instances had methods. Treated neighborhoods as different classes, SUSTAIN, BIRTH, DEATH. Defer the conditional to the neighborhood creation. Generally people used state machines or matching rules to avoid explicit conditionals.
All the iterations were short enough in time that nobody quite had a working Game of Life implementation.