This past Saturday we held the first in what I’m hoping many CodeRetreats. What is CodeRetreat you ask? CodeRetreat started as a discussion between Nayan Hajratwala, Patrick Wilson-Welsh, and Corey Haines at CodeMash 2009 just a few short weeks ago about creating a meetup where developers could come together and practice good software craftsmanship with the guidance of a few select tomes of good software craftsmanship such as Bob Martin’s Clean Code. Many of us are stuck wading through legacy code day to day in our normal 9 to 5 jobs and don’t get the opportunity to hone our skills and that is exactly what the CodeRetreat is about. That and the opportunity to get to pair with great minds like Ron Jeffries, Chet Hendrickson, Bill Wake, Corey Haines, and J.B. Rainsberger, to name a few.So I set out early (5:45 am) on a very balmy Saturday morning for Ann Arbor for the CodeRetreat. Upon arriving we ate some very tasty pastries and bagels for breakfast and began to lay out the plan for the day. A few days earlier it had been decided that we would work on Conway’s Game of Life as a problem domain for the CodeRetreat, coding in Java during the morning, and then switching over to Ruby in the afternoon.
In the morning I got the opportunity to sit with Corey Haines and a C++ developer (whose name escapes me right now) who was trying to learn Java for a new job. Though we didn’t get very far into the problem domain we did have some very good discussions around testing and how in this case and in most we should be testing the behavior of the class rather than trying to assert on the state it contains, as well as how much to test.
After lunch it was now time to dive into doing some Ruby, which is what I was looking forward to. I’m starting to do more and more Ruby on the side, and this was definitlely stepping out of my comfort zone to try and improve my Ruby-fu. We were first treated to a Kata performed by Corey Haines, just a short demonstration of the process of spec, write code, spec, write code, etc. I could tell that many folks in the room could appreciate the lesson, but would not be able to duplicate it themselves, which I believe is something we’re going to try to improve for the next CodeRetreat.
Next it was time to start pairing on implementing some of the Game of Life in Ruby. Chet Hendrickson had the great idea of setting some random time to work on the codebase and then when that time was up, we throw away the code and start over. Brilliant in the fact that now we were able to “act in spite of fear” as Patrick had spoken about in the morning. For the first round I paired with Nayan and somebody else, who again I’m horrible with names so I can’t remember who it was. We did manage to get some working specs done in the time we had, but I feel like we spent too much time trying to decide how we were going to implement it. Next I got the opportunity to pair with J.B. Rainsberger and a couple of other guys.
When it was all said and done, we had our retrospective and adjourned to the bar across the street. The discussions continued into the night ending with Patrick, J.B., Corey, Dan Davis, Nayan and myself trying to solve the worlds problems. I am looking forward to the next CodeRetreat which will hopefully be next month sometime in Cleveland, OH and the possibility that Corey may swing through Grand Rapids, MI on his pair programming tour and get the opportunity to sit and pair with him again on some Ruby stuff that I’ve been working on.





spot on. I agree it was a great event and I look forward to what I hope will be many, many more.
In the first ruby “tripling”, it was you, me and Josh Hoepner.