On September 22nd Andreas Simon (@ndrssmn) and I (@janernsting) hosted the very first coderetreat in Münster, Germany. After quite some preparations for the event, we were very happy to welcome all participants on Saturday morning. Since they all decided to spend their free time with us, we prepared some breakfast, including rolls, coffee, and tea.
Andreas set off the coderetreat by employing the artists metaphor and contrasted it to the typical day-to-day routine of a programmer. We used that thought to convey the general idea of a coderetreat and explained the rough time schedule (overall six sessions each 45 minutes programming and 15 minutes debriefing). Moreover, we introduced the Game of Life rules on a flip chart, which was inspired by Martin Klose’s layout.
Next we wanted everyone to getting to know one another by asking the following questions:
- Who has attended a coderetreat before?
- Which programming language(s) do you use?
- How proficient do you feel in TDD?
Instead of letting participants answer these questions verbally, we had people locating themselves on a continuum. Since everyone was afoot at that point, we asked participants to group in pairs for the first session.
In the first session we let participants familiarise themselves with the problem at hand. As there was an odd number of participants, we would alternate our role as facilitators to being a participant. That way all pairs were equally balanced in twos.
Because we noticed pairs would implement unit tests in the first session, we introduced the Four Rules of Simple Design for the second session. In retrospect, we should have familiarised ourselves with the individual rules slightly more. For our next coderetreat, we will definitely catch up with a detailed blog post—such as the one by J. B. Rainsberger—to be prepared even better. Even though people appeared to get the hang of the Four Rules of Simple Design, they did not quite stick as we expected. Most of all, we spotted a greater deal of primitive obsession.
We therefore asked our participants to continue the application of the four rules in the third session. In addition, we asked them explicitly to avoid primitives.
After those first three session, we happily picked up our lunch from a nearby caterer. The yummy lunch was made up of quiche, salads, and bread. Considering the intensity of a coderetreat, going for a light, mostly vegetarian lunch was a good option, because the all-familiar soup coma did not turn out too bad. Before we finished lunch, we checked to see who has to leave when as to give everyone the opportunity to seek pairs the way they like.
Because the soup coma was impacting all of us, we decided to go for a fourth session with evil silent ping-pong. At that point I left the coderetreat to fetch additional milk for coffee. When I returned, I was absolutely baffled by the astounding level of focus. It was amazing to see the pairs centered around their code.
The fifth session focused on object calisthenics. Pairs did have a rough time trying to strike a balance. We noticed again—as we did as participants before—that this is the most challenging set of constraints on a conventional coderetreat. It was especially interesting to see pairs violate any of the rules without noticing. We learned that even the four-eyes principle of pair programming might not prevent problems with the code. Instead, classical code reviews might still provide value here.
For the sixth session we gave pairs the opportunity to choose constraints on their own. However, by dramatically cutting the wire of a (broken) mouse we proposed doing a keyboard-only session in order to learn shortcuts of their development tools. Since it was the last session, and some of the participants already had to leave earlier the remaining participants asked us to get involved once again.
We concluded the coderetreat by doing an overall retrospective and asked participants to answer three questions:
- How do you feel?
- What did you learn?
- What are going to apply on Monday?
The amount of feedback the participants provided was tremendous and affirmative. It included motions such as surprised, enriched, tired, or pleased. Everyone learned something new. Especially silent ping-pong received some positive feedback; two participants even planned to use it on Monday.
Given that this was our first coderetreat, Andreas and I are very happy with its outcome and the positive feedback we received. Everyone is more than satisfied with the outcome of the coderetreat.