Cybergizer - Ruby on Rails Development

How to host a Ruby Coderetreat Workshop for Game of Life challenge at a regular Ruby Meetup?

Sergy Sergyenko, CEO @ Cybergizer
Coderetreat is a full day practice workshop, which could be also shorten to 4-hours-long, intensive practice event and it would perfectly fit to the format of a regular Ruby Meetup. The Coderetreat event has a standard format, even though there are different forms and flavors. We usually use Pair-Programming and Test Driven-Development to implement Conway’s Game of Life and delete your code at the end of each session.

Benefits that Coderetreat can bring to your team:

  • Practice TDD, Pair-Programming, and other eXtreme Programming techniques the team might use in the future.
  • Knowing IDEs, keyboard shortcuts, testing frameworks, and libraries better.
  • Work with folks you don’t work with daily.
  • Egoless programming - removing your code at the end of each session is a great way to practice it.
  • A nice break from your daily business-driven work, technical debt, and “getting things done” - you focus more on the road than a goal.

How to organize a Ruby Coderetreat workshop?

First you need to get some experience with participating in Coderetreats. The best option is to join next running Global Day of Coderetreat . Then you can run an internal-only session to a smaller group of people and limit it to 2-3 hours long. After that it would be easy to scale it to the public event for any regular Ruby Meetup.

Before you start preparation work or just before joining your Coderetreat for the first time, checkout The Workshop, Hosting Guide, Facilitation Guide and Constraints articles all contain great hints on how to organize, prepare sessions, etc.

You need to plan your schedule upfront, so this one could be a good hint for 4 hrs long meetup.

Schedule for Coderetreat at a Ruby Meetup

18:00 – 18:30
18:00 – 18:30
Meetup opening
It' is important to setup a space for learning and exploration. Remember, attendees arrive at eventing time, a lot of them had 8 hours of a day-job in software development behind them, along with all the stress of commercial software development. Your task as a facilitator is to get everyone into a learning mindset, away from the obligations of developing software to order.
18:30 – 18:15
18:30 – 18:15

Make sure participants know they shouldn’t try to finish the problem and why that is important

Let participants know that at the end of the session you will ask everyone to delete their code and stand up. This allows them to experiment and practice in a way they can’t at work.

Also quick intros into the context of a group and a challenge:

  • Everyone said a couple of words about themselves.
  • Goals of Coderetreat.
  • Pair-Programming explained.
  • TDD explanation and contrasted with higher-level tests.
  • Game of Life explained.
18:15 – 19:00
18:15 – 19:00
Session 1 - no restrictions, just giving it a try.

The first session should be very simple. This is an opportunity for people to make sure they have their environments setup for TDD.

Allow pairs to get a feel for the problem domain. Not everyone has seen Conway’s Game of Life before, so this session will allow them to wrap their head around the task. After the first session, it can sometimes be useful to discuss the idea of deleting the code. Some people might have a bit of resistance to the idea. Gently explain that those are the rules.

19:00 – 19:15
19:00 – 19:15
Retrospective 1

People exchange their insights and try to get to know each other a bit:

  • Let the group discover things on their own.
  • Ask people who haven’t contributed much what they think (or some other specific question).
  • After the first session it might be good to ask about deleting their code: Who found it difficult to delete their code? Why was it difficult?
19:15 – 20:00
19:15 – 20:00
Session 2 - Evil Coder - TDD Ping - Pong
The Driver is antagonistic: They will implement the code that makes the test pass, but may introduce as much complexity into the code as they wish or choose an obscure implementation strategy. This helps guide expressive test intent. (Evil Coder combined with Mute Ping-Pong is a very advanced activity, but can be extremely fun for experienced coders.)
20:00 - 20:15
20:00 - 20:15
 Retrospective 2
Sharing thoughts, especially about TDD in real life projects.
Discuss idea what if all code must only be written in the test. And the only way to create production code is through refactoring (via Extract Method/Class/Field/Variable, etc).
20:15 - 20:30
20:15 - 20:30
Short Break - Coffee and stretching legs
It is important to not serve any carb-heavy food (hence the infamous No Pizza Rule). Salads or small bowls are usually quite appreciated and don’t turn the session right after a break into a napping session.
20:30 - 21:15
20:30 - 21:15

Session 3 - Programming Language Constraints

Explain to teams that the last session they can choose and go with any self-imposed limits. Below are some constraints that can be introduced, chosen based on the experience of the individual pairs.

  • No if statements
  • No loops
  • Small Methods (<5 lines, 1-line?)
  • No language primitives
  • TDD As If You Meant It
21:15 - 21:30
21:15 - 21:30

The Closing Circle

Prior to the closing circle, tell them the following three questions and then give them a break to think about these three questions.

Then in the closing circle ask each participant to answer each of the questions:

  • What, if anything, did you learn today?
  • What, if anything, surprised you today?
  • What, if anything, will you do differently in the future?

If the group is large, you might not want to ask/answer all three questions to keep it short.

Need more details about How to host a Ruby Coderetreat Workshop?
ask Sergy: