Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Code retreat Facilitation (Advanced methods)

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.

Code retreat Facilitation (Advanced methods)

  1. 1. Code Retreat Facilitation (Advanced) Alex Bolboacă, @alexboly, alex.bolboaca@mozaicworks.com September 2017 1
  2. 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
  3. 3. Code Retreats are weird. . . and awesome! 3
  4. 4. First code retreat outside US Figure 1: 8 July 2009 4
  5. 5. Someone’s missing in this picture. . . Figure 2: Maria was probably the first host. She also co-facilitated 5
  6. 6. But coderetreats have issues. . . 6
  7. 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
  8. 8. Issue #1: Explain the concept better 8
  9. 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. 10. What is a facilitator really? Figure 3: Definition from Merriam-webster https://www.merriam-webster.com/dictionary/facilitate 10
  11. 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
  12. 12. Solution: Clarify responsibilities Figure 4: We could tell them 12
  13. 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
  14. 14. Issue #2: Some people don’t delete the code 14
  15. 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. 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
  17. 17. Issue #3: Participants leave before the end 17
  18. 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. 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. 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. 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. 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
  23. 23. Issue #4: Recurrent participants report getting bored with the problem 23
  24. 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. 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. 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
  27. 27. Putting it all together 27
  28. 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. 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. 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. 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. 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. 33. Facilitation • Make the topics & the interests visible • Pick sessions based on the interests 29
  34. 34. Bonus 30
  35. 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. 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. 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
  38. 38. Bonus #4: Experiment Figure 5: Coderetreats would be single language w/o 2009 experiments 34
  39. 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
  40. 40. Closing 36
  41. 41. The coderetreat book Figure 6: Code retreat book https://leanpub.com/coderetreat 37
  42. 42. My blog Figure 7: On coderetreats and more 38
  43. 43. Contact me Alex Bolboacă @alexboly alex.bolboaca@mozaicworks.com 39
  44. 44. Thank you! Q&A Figure 9: Your Questions? 40

×