I recently finished reading Elixir in Action as a part of a book club. While runnning this book club, I learned a lot about what our group felt worked and what didn't work. I know that lots of people run books clubs both at work and outside of work so here are my tips.
1. Find people who have similar schedules
This book club met once a week, virtually, for an hour, during the weekday. For me personally, meeting during the workday was important because I don't have much outside time. This also meant that this group was also comprised of people who preferred to meet during weekday office hours, an important point to realize for book clubs that are looking to have more diverse participants. Another book club meets virtually on Sundays for an hour. A book club does not (and maybe should not) be a lot of people so find a core group of folks that can meet together based on what works in their lives... and the book club doesn't need to be with only work people. One of the things our book club really liked was that if one person had to skip because work was challenging that week, it didn't mean that bookclub couldn't happen. Additionally, having a book club with people who work at different places and in different codebases, led to really interesting discussions and a greater ability to learn from each other's experiences.
2. Meet once a week and have point people
At the start of book club, each person claimed a chapter or two. In order to participate in book club you had to claim a chapter. Claiming a chapter meant that you were "presentng" at the beginning of the meeting. This didn't have to be anything intense, simply a 5-10 minute chat that summarizes the chapter and goes over the main highlights. This way, if someone didnt have a chance to read that week, they could still attend and could still discuss, ask questions, and participate. That person would also facilitate the discussion which often focused around just discussing the different parts of the chapter, looking at code exercises, or talking about what parts we liked or disliked.
3. Every section/few weeks, add in a week dedicated to code sharing/code challenges
One of the main issues that we found was that people did not often have enough time to both complete the code exercises in the book and read the chapter. For Elixir in Action in particular, the book is broken up into three sections. At the end, we realized that it would have been helpful to add a "code" week at the end of each section which would have enabled us to actually write the exercises and share them with one another.
4. Keep the momentum going but allow yourselves 1 or 2 catchup weeks
Book clubs can be long. If you do 1 chapter a week, you're often looking at a 3-4 month book club for most books. It can be really challenging to keep that momentum going through vacations, holidays, busy times at work, etc. It's important to continue to take the pulse of your book club and determine when you might want to skip a week. We did this twice when we realized no one had had a chance to read the chapter except for the chapter point person. Instead of trying to force a conversation, we just postponed the chapter to the following week and used that allotted time to catch up on reading.
5. Try to set reminders and communicate in between meetings
Our book club had a private slack channel which was great for setting up pairing sessions if someone wanted to pair on an exercise, or share links and resources that came up during our meeting. Additionally, for reminder, the easiest thing to do was to set up 2 reminders. One reminder was the day before book club and the other was 2 hours before.
6. Take notes
Each week, the note-taker was the person who would be "presenting" the following week. This note-taker then put up a pull request in our book club github repo. This is helpful to look back on but was also helpful if someone had to miss a week of bookclub. They could easily catch up on what they missed.
Book clubs can be great but they can also be really challenging to run successfully, especially with certain books that might not have as much fodder for discussion. What do you find that works? Or if you still haven't hit on something, feel free to try these tips out.