How one of the most experienced facilitators solved common issues with code retreats: newcomers confused about the format, participants leaving early, still liking Conway's Game of Life even after attending a lot of coderetreats.
And a few extra facilitation tips that you can try tomorrow.
1. Code Retreat Facilitation (Advanced)
Alex Bolboacă, @alexboly, alex.bolboaca@mozaicworks.com
September 2017
1
2. Code Retreats are weird. . . and awesome!
But coderetreats have issues. . .
Issue #1: Explain the concept better
Issue #2: Some people don’t delete the code
Issue #3: Participants leave before the end
Issue #4: Recurrent participants report getting bored with the
problem
Putting it all together
Bonus 2
7. A list
• First timers find the concept difficult to understand
• Some people don’t delete the code
• Some participants leave earlier, don’t stick till the end
• Recurrent participants report getting bored with the problem
Let’s fix these!
7
9. What is weird about coderetreats?
Facilitator != trainer
Facilitator != teacher
Facilitator != mentor
Yet the facilitator is in the front of the room, driving the
sessions!
9
10. What is a facilitator really?
Figure 3: Definition from Merriam-webster
https://www.merriam-webster.com/dictionary/facilitate
10
11. A coderetreat facilitator is. . .
Someone that facilitates experimentation and learning during a
coderetreat, by:
• preparing an appropriate space
• clarifying goals
• removing impediments
This looks a lot like coaching
11
13. What you learn is your responsibility
I once had a participant to a coderetreat who, at
each session retrospective told the group that
“python is the best language”. At the end, he
said he didn’t learn anything. My question for
him was “why did you stay then?”.
What you learn today is your responsibility. I will
not be your teacher or your trainer. I will do my
best to provide you with an environment that
helps you explore new ideas and get out of your
comfort zone.
13
15. How to approach this?
• General facilitator stance: encourage, avoid enforcing.
• Why? Internal motivation > External enforcing
• So what’s a good internal motivation?
• How about frustration?
15
16. Solution: mention their everyday frustration with bad code
Embrace the freedom of deleting the code
Think about the code you see every day at work.
You certainly want to delete part of it, but you
can’t. Well, today you can! So embrace this
freedom. You will see, it feels very good.
16
18. Why do they?
• I had this for a long time. Up to half of people were leaving
after 4th session
• It’s ok for a few to leave due to time constraints
• So why does it happen?
• My hypothesis: it’s an issue of engagement and responsibility
18
19. Solution: Make the goals visible
Step 1: write on a flipchart the list of topics we can explore: pair
programming, software design, test driven development, refactoring,
clean code, functional programming
Step 2: ask participants if they would be interested in other topics
and write them down as well
Step 3: ask participants to dot-vote the topics
Step 4: order topics based on number of votes
Step 5: select (or create new) sessions that fit the topics
Step 6: after each session, check the topic that was touched
19
20. Remarks
• Applying this technique has reduced the number of people
leaving early
• But it’s more difficult to facilitate - requires experience
• This changes the dynamic of the whole day
20
21. Recommendations if you want to try this
• Practice facilitating the dot voting session
• Picking the sessions based on participant’s needs requires a
lot of experience. If you try this, have 2-3 sessions prepared for
each topic
• First session should be something basic, because you won’t
have time to pick anything fancy
• Because the interest are different, give two options on every
session
• Try to have remote support, so that you can ask for a session if
you’re in trouble. Adi is my support
• If you don’t know what to pick for a certain topic, be honest
about it with the group
21
22. Examples of sessions
• Pair programming: basic ping-pong, silent pairing, “Yes, and
. . . ”
• Software design: focus on names, focus on removing
duplication, single responsibility, double session with changing
requirements
• Test driven development: basic ping-pong with TDD, TDD
as if you meant it, TDD with time limit
• Refactoring: focus on names, focus on removing duplication,
taking baby steps, brutal refactoring
• Clean code: anything from object calisthenics, immutability
• Functional programming: make everything immutable, only
pure functions
22
24. Why?
Possible reasons:
• they tried all the possible solutions (doubtful)
• they don’t like the problem for personal reasons
• they don’t understand that the problem doesn’t matter
• they can’t link the sessions with what they learn
24
25. Solution
1. Change the introduction to put less focus on the problem.
2. Allow people freedom in choosing the things they want to try
and their constraints.
25
26. Do what you always wanted, but didn’t have the time
Maybe you always wanted to try out a technique,
or another approach. But we never have the
time to do this at work. Today you’re lucky: try
anything you want. Coderetreats allow you to
try pair programming, test driven development
and the four elements of simple design. But if
you want to try another programming language,
or another paradigm, just let the others know,
find a pair and do it."
26
28. Introduction
In the introduction I introduce the following advice for participants:
How to get the most out of a coderetreat
1. Embrace the freedom of deleting the code
Read more: How to get the most out of a code retreat,
http://www.alexbolboaca.ro/coderetreat/how-to-get-the-most-out-
of-a-code-retreat
28
29. Introduction
In the introduction I introduce the following advice for participants:
How to get the most out of a coderetreat
1. Embrace the freedom of deleting the code
2. Do what you always wanted, but didn’t have the time
Read more: How to get the most out of a code retreat,
http://www.alexbolboaca.ro/coderetreat/how-to-get-the-most-out-
of-a-code-retreat
28
30. Introduction
In the introduction I introduce the following advice for participants:
How to get the most out of a coderetreat
1. Embrace the freedom of deleting the code
2. Do what you always wanted, but didn’t have the time
3. Get out of your comfort zone
Read more: How to get the most out of a code retreat,
http://www.alexbolboaca.ro/coderetreat/how-to-get-the-most-out-
of-a-code-retreat
28
31. Introduction
In the introduction I introduce the following advice for participants:
How to get the most out of a coderetreat
1. Embrace the freedom of deleting the code
2. Do what you always wanted, but didn’t have the time
3. Get out of your comfort zone
4. Pair with strangers in languages you don’t know
Read more: How to get the most out of a code retreat,
http://www.alexbolboaca.ro/coderetreat/how-to-get-the-most-out-
of-a-code-retreat
28
32. Introduction
In the introduction I introduce the following advice for participants:
How to get the most out of a coderetreat
1. Embrace the freedom of deleting the code
2. Do what you always wanted, but didn’t have the time
3. Get out of your comfort zone
4. Pair with strangers in languages you don’t know
5. What you learn is your responsibility
Read more: How to get the most out of a code retreat,
http://www.alexbolboaca.ro/coderetreat/how-to-get-the-most-out-
of-a-code-retreat
28
33. Facilitation
• Make the topics & the interests visible
• Pick sessions based on the interests
29
35. Bonus #1: Information radiators
I use two extra flipcharts:
• one where I write what people tell in the retrospectives that
they learned
• the second where I write interesting things I noticed
31
36. Bonus #2: Relax
Most of the facilitation fatigue comes from self-induced stress.
If you put participants in the right mindset and provide the right
space, you aren’t needed that much anymore.
Using the above techniques and practicing your introduction
reduced my stress by 70-80%.
32
37. Bonus #3: Closing sessions
It’s best for the closing session to be fun and relaxing. A few good
ones:
• Mute evil pairing
• Buffy session (or creativity over implementation): At the
beginning, there’s a vampire cell. Vampire cells turn other cells
nearby into vampires. In every generation, there is a slayer that
kills all vampire cells around it. Tell me a story in this universe
using Conway’s rules
• Write the worst code you can
33
39. My next experiment
Try out pacman as a coderetreat problem
Why pacman?
• Difficult to finish in 45’
• Easy to understand
• Large solution space
• Similar design problems as for Conway’s (except the infinite
grid)
• Additional difficulties (movement of the enemies)
• Existing sessions can be used
• Can start from multiple places
• ? Validated in practice
35