Yesterday I participated in my first Coderetreat at 757 Creative Space in Norfolk, VA. This happened to be the Global day of Coderetreat (which was organized by coderetreat.org) and now I am wondering why I didn’t go to a Coderetreat sooner. The Coderetreat was facilitated by Ryan Castillo from the 757Ruby users group and sponsored by some great companies: Bootstrap Hero and xTuple sponsored all of the good eats (which are essential to keep the code flowing!) and there were quite a few other great sponsors as well.
What is a code retreat?
If you haven’t been to a Coderetreat – it basically a day of honing your software development skills to become a better developer. If you are serious about your profession as a software developer – these types of training opportunities are ones you should attend. In our day’s retreat, we focused on the skills of TDD and Pair Programming. Both of these techniques are part of Extreme Programming.
The idea for Coderetreat was spawned at the January, 2009, Codemash Conference by Gary Bernhardt, Patrick Welsh, Nayan Hajratwala and Corey Haines.
The day’s activities
The only project used for the day is to code a version of Conway’s Game of Life. Now, I knew a little about the Game of Life and that it was typically central to a Coderetreat, but I purposefully did not look up any info on coding it, because I didn’t want it to take away from the discovery experience. Programmers are typically paired for 45 minutes and each pair has to delete all code and destroy all notes at the end of their iteration.
Ryan did a great job of getting everyone introduced and oriented. Once we had all of the intros under our belt, we paired up and started on our first iteration of the Game of Life.
Along came the curve-balls
Then came the curve-balls: requirements changing during the iterations, ping-pong coding (switching the person typing and observing between writing functions), blind coding (the 2 programmers couldn’t talk, and one wrote the tests – the other the code to pass the test) and timed coding from test to implementation.
Each of these “curve-balls” built on the other and exposed some of the typical flaws in the way most people write software as well as the things that can be done to fix it. After each 45 minute iteration we held a sort of “after action review” to see what each person had learned from the iteration. These iterations brought out the importance of writing clear function/method/variable names, writing your tests first, and doing the simplest thing possible to pass the test, then moving to the next item. It is amazing to see how quickly this technique of TDD can flush out an excellent design for any software project.
The day ended in a wrap-up review of all of the items during the day from iteration – to see what we had learned, what were surprised by, and what we would change. Everyone seemed to have picked up something constructive from the experience – so the Coderetreat was in my opinion a big success.
I look forward to the next Coderetreat!