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

More Related Content

More from Alexandru Bolboaca (20)

TDD As If You Meant It
TDD As If You Meant ItTDD As If You Meant It
TDD As If You Meant It
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Hidden loops
Hidden loopsHidden loops
Hidden loops
 
Removing structural duplication
Removing structural duplicationRemoving structural duplication
Removing structural duplication
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Why You Should Start Using Docker
Why You Should Start Using DockerWhy You Should Start Using Docker
Why You Should Start Using Docker
 
Pyramid of-developer-skills
Pyramid of-developer-skillsPyramid of-developer-skills
Pyramid of-developer-skills
 
Applied craftsmanship
Applied craftsmanshipApplied craftsmanship
Applied craftsmanship
 
Pyramid of-developer-skills
Pyramid of-developer-skillsPyramid of-developer-skills
Pyramid of-developer-skills
 
Stay focused
Stay focusedStay focused
Stay focused
 
Kanban intro
Kanban introKanban intro
Kanban intro
 
Unit testing-patterns
Unit testing-patternsUnit testing-patterns
Unit testing-patterns
 
Incremental design, simply explained
Incremental design, simply explainedIncremental design, simply explained
Incremental design, simply explained
 
Exploring design-alternatives-using-tdd
Exploring design-alternatives-using-tddExploring design-alternatives-using-tdd
Exploring design-alternatives-using-tdd
 
Feedback - The Lost Art of Agile
Feedback -  The Lost Art of AgileFeedback -  The Lost Art of Agile
Feedback - The Lost Art of Agile
 
Build a great Technical Team
Build a great Technical TeamBuild a great Technical Team
Build a great Technical Team
 
Deliver every two days
Deliver every two daysDeliver every two days
Deliver every two days
 
Introduction to software craftsmanship
Introduction to software craftsmanshipIntroduction to software craftsmanship
Introduction to software craftsmanship
 
Introduction to software craftsmanship
Introduction to software craftsmanshipIntroduction to software craftsmanship
Introduction to software craftsmanship
 
The agile road.key
The agile road.keyThe agile road.key
The agile road.key
 

Recently uploaded

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Code retreat Facilitation (Advanced methods)

  • 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
  • 3. Code Retreats are weird. . . and awesome! 3
  • 4. First code retreat outside US Figure 1: 8 July 2009 4
  • 5. Someone’s missing in this picture. . . Figure 2: Maria was probably the first host. She also co-facilitated 5
  • 6. But coderetreats have issues. . . 6
  • 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. Issue #1: Explain the concept better 8
  • 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
  • 12. Solution: Clarify responsibilities Figure 4: We could tell them 12
  • 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. Issue #2: Some people don’t delete the code 14
  • 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
  • 17. Issue #3: Participants leave before the end 17
  • 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
  • 23. Issue #4: Recurrent participants report getting bored with the problem 23
  • 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
  • 27. Putting it all together 27
  • 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
  • 38. Bonus #4: Experiment Figure 5: Coderetreats would be single language w/o 2009 experiments 34
  • 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
  • 41. The coderetreat book Figure 6: Code retreat book https://leanpub.com/coderetreat 37
  • 42. My blog Figure 7: On coderetreats and more 38
  • 44. Thank you! Q&A Figure 9: Your Questions? 40