Yesterday was the second Code Retreat. Thanks to LeanDog for the use of their facilities. We didn't quite hit 40 in attendance, but we came close. With participants like Chris Judd, James Shingler, Corey Haines and J.B. Rainsberger, we had some real ninjas present. I had the fortune to pair with Corey and J.B. as well as several others. All of the pairing experiences were fantastic. I learned something new with each iteration of the kata. I couldn't have asked for more.
The format was pretty simple. We paired (or tripled) for 40 minutes with 10 minute breaks. Using TDD and ping-pong or carousel, we attempted to create a program for Conway's Game of Life. At the end of each 40 minute session, we threw away the code, changed partners, and started all over again.
For many, this sounds like an exercise in torture. It is nearly impossible to write a solution for Conway's Game of Life in under 40 minutes. So how did we expect to achieve anything for the day?
I came to genuinely understand the purpose of the day early into the second round. I was in a triple the first round and we'd made it pretty far. We were satisfied with our approach and were confident we were on the right track. One of our members swapped out, so I was in a pair with a gentleman I had already completed a round with. Dumping the code was painful. All that progress lost. We decided to quickly rebuild what we'd previously developed and move forward with our solution. While he was writing a test, Corey Haines joined our team. I was explaining our approach to Corey. He remarked how different it was from the approach his prior team had taken. We were coding as we spoke. Before we knew it, we'd taken yet another approach to the problem. One neither of us had previously considered.
This was the purpose of the day. We weren't there to use Java. We weren't there to practice a few agile techniques. We certainly weren't there to write the Game of Life. We were there to sharpen the saw. To share. To learn. To grow. This was everything about the journey and nothing about the destination.
There was no right approach. There was no wrong approach. There was only approach. Working together, sharing ideas, joking, and honing our skills.
You may not be comfortable with Java (or Ruby or C# or ... ). You may not know much about TDD. You may have never paired before. None of these things matter. If you are a professional developer who understands that what you do transcends a language or tool set, then Code Retreat is certainly for you. Wether you are new to the profession or have 30+ years of code behind you, there is something to be gained from sharing with others.
If you knew about this one and didn't make it, you missed a fantastic moment. Be sure to make the next one.