Please go to coderetreat.org
This recipe may evolve, but our collective desire is that if you diverge very much from this recipe, however useful that divergence may be, you do not call your divergent thread a CodeRetreat. The current recipe is working pretty well, and we want to learn as much as we can from this recipe before trying others.
At CodeRetreat, we retreat from the world to advance in our craft. We sharpen our saws, together. We retreat from production and business value to increase our production capacity, our quality, our velocity, our ability to produce business value. We retreat from immersion in deep technology weeds (Oh no! The JBoss ClassLoader is giving me CCE's!) to advance in our ability to learn and adopt to any technology well. We retreat from our fears, and embrace new practices, patterns, languages.
We retreat from our local ponds and swim in a larger pool. We connect with other passionate coders who we seldom get to code with. We make new connections and learn new lessons.
The unwritten Rule Zero, now actually written I suppose, is Have Fun While you Learn. All of this recipe tries to serve that goal.
CodeRetreats work best if everyone is working in the same language. CodeRetreats have been done in Java and Ruby so far, but feel free to try any language. Just please have everyone in the room use that same language, and publish that language choice early on, so that attendees can bring a good-enough level of expertise that the day is not spent by people teaching each other language fundamentals.
Get sponsors to provide breakfast and lunch, at least, that just show up on time for enough people. Otherwise your flow and focus will suffer terribly.
Most CodeRetreats have been on Saturdays; Sundays work fine too. More people in your area likely have more free time on weekend days than during the week. This makes it much easier for more people to attend. We typically serve continental breakfast around 8:30, serve lunch around 12:30, and end around 5. Sometimes a sponsor or host provides dinner; sometimes not. Often we all go out afterward for beers, sponsored or not. You choose.
The kata most CodeRetreats have used is "test-driving the four rules of Conway's Game of Life," and related Game of Life work. J.B. has created a template Eclipse project on github that will get you up to speed faster (also read J.B.'s comment below about using git, and about a commit-per-passing-test iteration experiment). This is a small enough problem space that repeatable kata are easily discovered. It is also a large enough problem space that very few pairs can finish it in 40 or so minutes. This tends to focus pairs on the test-driving, the design, the refactoring, and the craft generally, as opposed to "hurrying to get this thing done."
No-one at a CodeRetreat should be programming solo. Ask people to organize into pairs or triples, ideally. Sometimes you may need quads. But five or more programming together is usually not a good idea.
Iterations last 40 minutes (or so; feel free to experiment with 45 or 50 minutes; an hour seems too long, while 30 minutes is certainly too short). At the end of the 40 minutes, ask each pair/triple/team to stand up, do some stretches, then have them swap a pair partner with another pair/triple. To begin the next iteration, the pair/triple can go over the previous iteration's code (or not).
But, critically, the pair/triple must delete the previous iteration's code before starting over.
Deleting code and starting over each iteration is at the crux of the learning mechanism of CodeRetreat.
Try to prevent situations where two people are pairing and they have never test-driven before, never refactored before, never worked in the chosen language before, never seen Conway's Game of Life before, etc. As best you can, try to ensure that as you swap pairs, you distribute all kinds of expertise around the room evenly. This is not always possible, but always preferable.
There are many ways to test-drive Game of Life, many ways to evolve the design. Let pairs try new things for an iteration. Though we prefer to test-drive, should we insist that every pair do it every iteration? Well, I would prefer that TDD-novices always do, but sometimes TDD experts will publicly state their intention to not test-drive for an entire 40 minute iteration, and that's great, if they and we can all learn something from it,
Around 4PM, it can be great to try an entirely new experiment for the whole room. We have had publicly-performed kata by very experienced programmers. We have had a great whack of Java Game of Life code ported to Groovy. We have had mob programming. We have tried (in vain) to run a brief project to deliver an entire, working Game of Life application. There are many other interesting things to try, toward the end of the day, once people are pretty sick to death of 40-minute iterations, and deleting code.
Things go wrong or weird, for all manner of reasons. While people are eating or winding down, ask the crowd what is working, what is not, and what they might want to change. Harvest the wisdom of the local crowd to tweak the recipe, determine how to mix things up and otherwise adapt.
-------
I'll have more to share on CodeRetreat HowTo later, but this is enough to get anyone started. :)
Comment
Comment by Patrick Wilson-Welsh on January 18, 2010 at 1:04pm
Comment by Guðlaugur Egilsson on October 25, 2009 at 7:43pm
Comment by Arlo Belshee on October 22, 2009 at 2:14pm
Comment by Patrick Wilson-Welsh on October 21, 2009 at 9:38am
Comment by Patrick Wilson-Welsh on October 21, 2009 at 9:34am
Comment by Adrian Mowat on October 21, 2009 at 7:21am This site is now deprecated. The new official site for CodeRetreat is http://coderetreat.org/.
If you have a CodeRetreat to announce or manage, please use http://coderetreat.org/.
If you are a member here, please join over there. Apologies for the inconvenience.
© 2012 Created by Patrick Wilson-Welsh.
Powered by
.
You need to be a member of CodeRetreat (deprecated site) to add comments!
Join CodeRetreat (deprecated site)