Drawing parallels between our agile practices and music is a common thing. The metaphor is obvious and can be used in many cases. I will therefore add my contribution to this edifice by drawing parallels between the practices of coding dojo, coding retreat, etc. from XP (which some will call craftsmanship to give it new vigor) with the rules and etiquette of an old time session (old time music), one of my hobbies. The latter can be a source of inspiration for the former. Indeed, it was while discussing with Thierry (@thierrycros) about my old time practices the day before the global code retreat (December 3rd, 2011) that certain truths crystallized.

In an old time session, a “tune” (a song) lasts between 10 and 20 minutes…that’s long. This music is also very repetitive (a kind of trance). But as a result, you learn the piece while others are playing it. It’s a skill-building through practice within the group (we range between 6 and 20 people in a session, sometimes more…). If you don’t know a piece, for the first 5 minutes you’ll listen. The next 5 minutes you try to play the basics of the piece. With a bit of talent you can start to enrich your performance in the following minutes. By the end of the piece, you know it, and you’re ready to pass it on to others another day. This is close to the idea of apprenticeship (“network of transmission of knowledge and identities through the craft”, even if this name might put some people off) carried by craftsmanship or XP. In any case, these gatherings of people that blend learning and pleasure, whether it’s an old time session or a code retreat, seem very similar to me (and there must be many other examples…but well, my hobby is old time…).
old time sessions have been practiced since the 18th century.
So let’s see if our rules (of “old timey”) for sessions could inspire you for your code retreats (I don’t code enough to include myself):
(there are many old time session rules but they all resemble each other more or less, so I based myself on those -10- from the site “old time seattle”).
- Everyone, regardless of musical ability, is invited and encouraged to join the jam circle, but please try to come practiced & prepared.
- Keep your eye out - make room for new players so they can enter the circle at any time and feel welcome to do so.
- Too many of the same instruments? Take turns by leaving the circle after playing a few tunes and encourage a sideliner to take your place. Sometimes it’s possible to make a second circle, check with the jam leader.
- If you are unfamiliar with a tune, DON’T PLAY AND JUST LISTEN a few times through, then play along quietly until you’re sure you’ve got it.
- Pay attention to your volume, make certain the person leading the tune can be heard by everyone. Likewise, if you are leading a tune, try to play loudly.
- Make sure you’re in tune. Use an electronic tuner & check yourself frequently.
- When leading a tune, announce the key before starting each tune or song. And announce the chords if the tune is more obscure. If the player next to you does not know the chords and you do: offer to tell them quietly.
- Jams are a great learning experience, but are not meant to be freebie music lessons. If you’re looking for a lot of pointers, feel free to ask around to find others that offer private lessons, or ask for recommended recordings to listen to at home.
- Dancer etiquette: Step-dancers are encouraged to come to jams! Please help out the musicians by waiting to dance until the tune is played a few times through the form and is being well-grasped by the majority of the musicians. Also, coordinate taking turns if there are multiple dancers, as too many feet gets awfully cacophonic (you can take turns on the same tune).
- If the jam is at a business, keep the business happy! Buy a beverage/snack & tip the staff (alcoholic-free drinks are available at bars if you don’t drink alcohol), invite your friends to come listen, & try to play your best as the better the jam sound the more people will listen and gain an interest and support what you’re doing!
Personally, I see many echoes with code retreats or others: learning by/with the group, respect for people and “precedence”, openness to others and welcoming, “team building”, etc. We could have fun extrapolating these rules to code retreats:

- Everyone is invited and encouraged to participate in the code retreat regardless of their skill level, but it’s appropriate to practice and train a bit beforehand.
- Keep your eye out and leave room for latecomers or new arrivals.
- Is one language too prevalent? We set it aside for a few iterations.
- I’m not familiar with a language? I observe first and I start practicing slowly only after a few moments.
- Be careful to let everyone express themselves and not monopolize the conversation.
- Your code compiles well, check electronically and regularly.
- If your exercise is complex, announce some leads and guide people who are lost.
- Code retreats are a great learning experience but not free lessons. Don’t hesitate to ask some people for private coding lessons or lists of books and references.
- More functional profiles are encouraged to join the “code retreat” but they must not overwhelm it. Code remains the central element.
- If the code retreat takes place at work, liven it up by bringing drinks & snacks.
There you have it, to your fiddles, java, banjos, ruby, double basses, python, guitars, c#, and keyboards.