Picture taken in the same at Global Day of Coderetreat 2014, in Bucharest
The event was setup to be a challenge for any facilitator. About half the attendees were for the first time at a coderetreat, while the other half were recurrent participants, at their 3rd, 5th or 6th event. I was ready to put to the test my experience (more than 30 coderetreats facilitated), my fame as the first European facilitator (with Maria Diaconu) and my new facilitation style. Based on the feedback, it was great.
Here’s what happened:
The first minutes of a coderetreat are used for setting the stage. It’s important to put everyone in the mood for learning and experimenting. I’ve noticed three things help:
- Personal stories – how Maria and I organized the first European code retreat and how we defined with Corey Haines the format everyone knows today
- The 5 tips for getting the best out of a coderetreat. This is especially useful for separating the facilitator’s responsibility – creating the best possible learning environment – from the attendee’s responsibility – learning and experimenting.
- Asking attendees why they came and what they would like to practice. I started from the list of common requests, added a few suggested by the attendees and then asked everyone to dot-vote those who are interesting for them.
This is the result:
Unlike typical coderetreat facilitation, I choose the sessions based on the ordered list of things people want to try. In this case, we did the following:
- First session was “learn more about the problem”, since half of the attendees were new
- Software Design: double session focused on changeable design; first session you know the requirements will change but don’t know how; second session try to incorporate in your design the new requirements.
- Pair programming: a choice between the typical “Ping-pong” and the communication exercise “Yes, and…”
- TDD: a session I made up on the spot, based on my experience with our TDD Workshop. The feedback was good because it helped people structure the way they think about the problem and makes it easier to start with TDD.
- A fun session at the end: choice between evil pairing, silent evil pairing, blind pairing, write the worst code you can, mob programming (suggested from the audience) or whatever else you want.
The other request from the attendees, trying out new languages, happened naturally during the event. At the end, we covered the most requested topics. This doesn’t account for the natural learning that happened due to the interaction between programmers; I imagine some knowledge on clean code was exchanged between pairing partners.
The Sessions Retrospectives
After the first retrospective, Peter and I realized that we were taking too long for discussions during the break. I decided to change the way we do retrospectives so that they were more efficient. Instead of asking vague questions like “what did you try?”, I started asking more specific open questions. For example, after the double session focused on design, the question was: “Whenever you do design, you make decisions based on assumptions. These assumptions will later stop your code from changing faster. What were the assumptions you made in the first sessions and were broken in the second?”.
The Information Radiators
Throughout the coderetreat, I used four different flipcharts in four different parts of the room to display various ideas:
- The current session & initial vote
- Things to try
- Things people have tried and told us
- Short statements about what we learned during the event
At different points in time during the retrospectives, they helped me point out useful things for attendees.
The Final Retrospective
We ended the coderetreat with the closing circle, using the typical questions: “What did you learn?”, “What surprised you?”, “What will you start doing differently on Monday?”. The only twist was that we had already gathered a few things during the day, and they allowed us to set the stage.
The feedback was great, there were no complaints about the facilitation or venue, so everything seems to have worked smoothly. I was especially proud of two pieces of feedback (quoting from memory, please correct me if you said it):
“This was my 6th coderetreat. It was for the first time I wake up and thought ‘I will not learn anything new today’. I was wrong. Thank you for facilitating”
“I have never seen such facilitation and I loved everything about it: how we decided together what to learn, the information spread throughout the room and the constraints. It was the best coderetreat I attended.”
And A Big Surprise
For the first time since I facilitate coderetreats, a CEO joined the event for a few hours because he’s very interested in adopting professional software engineering in the company. I think this is a powerful message for all software craftsmen out there: our efforts for professionalism got to the ears of C-level managers. We have a real chance at changing this industry for the better.
I left Global Day of Coderetreat 2014 Vienna very energized and happy. Five years ago, Maria Diaconu and I facilitated the first Coderetreat in Europe. Since then, I never stopped improving my facilitation style, trying out new sessions and adapting to what participants really need.
It was a great journey, during which I learned a lot of things and, hopefully, helped others learn. Every participant that leaves a coderetreat tired but happy is another victory on the path to professional software engineering. I believe this is something we have to do. It’s great to see that every year facilitators, participants, sponsors and hosts get together behind the belief that we can do software better and that it’s our responsibility as professionals and as the industry to improve.
In the end, many thanks to:
- The initiators of the event: Corey Haines, Gary Bernhardt, Patrick Welsh and Nayan Hajratwala
- Corey Haines, who promoted the event all over the world and started Global Day of Coderetreat
- Adi Bolboaca, Jim Hurne, Elena Yankova and Martin Klose who tirelessly organized Global Day of Coderetreat this year
- all facilitators
- all participants
- all hosts
- all Global Day of Coderetreat sponsors, be them global, local or remote
for keeping this event a wonderful celebration of professional software development.
See you soon at a coderetreat!