How To Book Club, by Nadia Odunayo


Hello and welcome to the Ruby Book Club! We’re delighted you could join us.

We’re picking up where we left off in ‘99 Bottles of OOP' — looking at the rules for refactoring code effectively.

But the real agenda is observing the book club itself. What keeps people engaged in the process? When discussion stalls, what tricks can we use to keep it going? By examining these questions, we’ll learn how to run our own book clubs and finally start learning from our books.

As always, it’s OK if you haven’t done the reading. At the Ruby Book Club, we make sure that everyone is on the same page!


This talk will be an interactive role-playing session. I’ll serve as the host of a weekly Ruby book club, and the audience will act as book club participants.

We’ll explore a section of Sandi Metz and Katrina Owen’s ‘99 Bottles of OOP’.Throughout the talk, I’ll switch out of character in order to observe lessons and ideas for being part of a successful technical book club. Some examples of the lessons are below under the ‘Book Club Lessons’ heading.

I’ll ask for audience participation throughout the talk, with specific approaches to be discussed. I’d like to experiment with Ernie Miller’s Venture presentation tool, which allows people to answer questions from their phone or laptop. Here’s a demonstration:

I’ll work with the conference organisers and my speaking mentor to develop an interaction model that flows. I’ll also plan for scenarios where the audience are not keen to participate; these will include having plants in the audience or having a version of the talk that doesn’t require anyone to answer questions.

Here is a proposed outline for a talk that explores sections 3.6-3.8 of Sandi Metz and Katrina Owen’s ‘99 Bottles of OOP’:


  • I’ll introduce my character and explain why we’ve all convened today.
  • I’ll also briefly introduce the book and its discussion of systematic refactoring and flocking rules.

Book Club Lessons

  • Keep numbers small so it’s easier to coordinate, ideally no more than 4 people.
  • Ensure that participants have similar, non-conflicting reasons for wanting to be in the book club.
  • Work out a meeting schedule and location that is likely to work for everyone long-term. A weekly one-hour meeting is enough to maintain momentum without undue burden.

Book time

  • We’ll explore the current state of our codebase; it’ll be a first pass of the 99 Bottles kata.
  • We then introduce a feature request — we’ll explore potential starting points and consider whether they’re suitable.
  • Next, we’ll talk about ‘flocking rules’ and how we might apply them to our codebase.

Book Club Lessons

  • Set a time limit on the reading/preparation, not a number of chapters, e.g. 1 hour of reading each week.
  • Use the first few weeks to calibrate to the speed of the slowest reader.
  • Establish accommodations for people who haven’t done the reading: are there a set of published notes available?
  • Work through the week’s reading from beginning to end, summarising key points and checking if people have questions or things they want to discuss further. If nobody has anything to say, move on. This ensures a well-flowing, productive discussion.
  • Encourage people to share their personal experiences to give colour to the discussion

Wrap up

  • We’ll examine the resulting codebase and consider next steps.
  • We’ll recap how to use code smells to identify starting points for refactoring and how making our code follow the open/closed principle can help us to unearth the right abstractions.
  • My character also pleads with the crowd to return for next week’s session, going over some of the benefits of discussing a book in this format, rather than attempting to read it alone.

Book Club Lessons

  • Ask everyone how they felt the discussion went at the end of each session
  • Take note of any actions points for next time
  • Use techniques from non-violent communication to allow you all to give critical feedback
    • For example, what to do if one person is dominating the discussion, or if someone is not contributing at all. Also, what do you do when a member consistently has not done the reading?
  • Discuss ways that you can implement what you’ve learnt in the most recent session at work and on side-projects over the coming week

Broader conclusions (weaved in throughout and at the end)

Being part of a book club is an incredibly effective way to learn about new technical concepts.

Establishing a reliable schedule for reading and discussion keeps the exercise fun and helps you cover a lot of material.

Book clubs help you to focus on small chunks each week, with the discussion format providing additional review that aids long-term learning.


As developers, we’re always on the quest to be better. We also buy a lot of books that we never read. This talk will inspire the audience to dust off the books they’ve had for years, get together with friends and colleagues, and finally start learning.

I’ve used this interactive talk format before, and I think it could be effective here. Actual participation sparks richer learning. Through experiencing a mock book club, the audience will observe real book club dynamics and learn how to make them fun and productive.


Nadia co-founded Ignition Works in order to find fun and sustainable ways to build worthwhile software products. She has taught good engineering practices through pair programming at Pivotal Labs and Pivotal Cloud Foundry. She originally learnt to code at Makers Academy and she runs the Ruby Book Club podcast in her spare time.

Edit proposal


RubyConf AU 2017 - Rejected [Edit]

Add submission