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

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
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
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 

Recently uploaded (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
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...
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 

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