{
  "$type": "site.standard.document",
  "canonicalUrl": "https://jacob.blog/notes/book-club",
  "description": "Notes from a moderately-successful book club I ran for Designing Data-Intensive Applications.",
  "path": "/notes/book-club",
  "publishedAt": "2026-05-02T00:00:00.000Z",
  "site": "at://did:plc:ckthoyuvsmkp254fyuinyzb2/site.standard.publication/3mndm6tiamb26",
  "tags": [
    "learning",
    "teams",
    "software-engineering"
  ],
  "textContent": "> [!info] This whole “how to run a book club” came from a DM from Michael Margolis on 2025-10-17 when we were planning a book club at Medium for _Designing Data-Intensive Applications_.\n\nBe clear about the PURPOSE. AKA “Start with Why”\n\nWhy are you doing a book club at all? WIIFM (the participant, and the org)?\n\n> To level up how we, as engineers, design, debug, and reason about large-scale systems. Not just to build them, but to build them to be efficient, sustainable, and easy to reason about.\n>\n> DDIA gives us a shared language for thinking about tradeoffs: consistency vs. availability, latency vs. durability, fanout vs. cost, local correctness vs. global truth.\n>\n>  The goal isn’t to memorize theory, it’s to connect the dots between the systems we already have (medium2, Conduit, EMR, DynamoDB, Recs, whatever, i’m just spitting out buzzwords), the design decisions that got us here, and how to level that up.\n\nSet a clear, non-threatening schedule, that respects everyone’s time.\n\nBiweekly is good. 30-60 minutes. 1-2 chapters per session.\n\nTry to keep it to 6-8 sessions. Attendance will drop the further you go.\n\nDefine what the sessions are\n\nGet prescriptive about what makes a good session. I’ve run meetings with this format and liked it:\n\n1. 5m: Ice breaker / share-out: What was one a-ha moment, observation, or thing that triggered you when you compare what you read to what we have in production?\n2. 30m: breakouts (it’s hard to have a meaningful discussion with 8+ people) around some set of possible prompts. They should ALWAYS include the final “… cool story bro, and HMW apply this at Medium? Do you see any anti-patterns or opportunities anywhere? What might the impact be if we DID change this? What would the tradeoffs be?” <-- that gets them focused and gets them working on collective problem solving towards a shared purpose\n3. 10m: Come back together, and each group does a shareout of what they learned, ideas they came up with, and interesting tradeoff discussions\n4. 5m: closer: Reflection (opposite of ice breaker) - what’s one thing i learned, what’s one takeaway or idea i think i may use in my work going forward, what’s one idea i want to take to my team, what’s one thing i learned that I wish I knew before?\n\t\t1. “What’s something that struck you from these chapters?” (keep it more general)\n\nHave a note taker that can capture and synthesize and share this out (_anonymously_, so folks feel safe to be ignorant)\n\nShare all this out ahead of time\n\nAs part of the purpose, I like to lay out more of the why at a meta-level, so people can read the book with these things in mind.\n\nMy actual intro message for DDIA was:\n\n> Hello friends 👋 Welcome to the book club for _Designing Data-Intensive Applications_!\n>\n> Why are we doing this book club?\n> Our primary goal is to level up how we--as engineers--design, debug, and reason about the systems we build and maintain at Medium. _Designing Data-Intensive Applications_ gives us shared language for thinking about tradeoffs (consistency vs. availability, latency vs. durability, cost vs. correctness, etc.) and reasoning through complex problems.\n>\n> The goal of this book club is not to memorize theory. It’s to connect the dots between the systems we already have, the design decisions that got us here, and how we need to go about leveling that up.\n>\n> By the time we’re done with this book, my hope is that you’d agree with these statements:\n>\n> - I have a stronger mental model how how data _should_ move through Medium, and what it _should_ cost\n> - I have a deeper intuition for understanding and debugging complex systems\n> - I have a better design vocabulary and larger toolbox of design patterns and practices, and I can better design systems and better communicate these designs\n> - I am more cost-aware of the tradeoffs of my designs, and can better reason about how to explore various tradeoffs and communicate these tradeoffs\n> - I feel an increased sense of ownership and stewardship of the design, performance, and cost of our systems\n> \n> This channel and the calls we’ll be on are a place we should all feel comfortable asking questions. It can sometimes be intimidating to raise your hand and admit that you don’t understand a concept, or how that concept applies to us here. Let’s change that! Decisions, tradeoffs, design is easy to learn and hard to master. Let’s help each other--and the org--level up.\n>\n> What’s the schedule?\n>\n> DDIA is 12 chapters. We’ll read this book in 12 weeks, and we’ll meet every other week for an hour to discuss what we’ve read. In between our meetings we can (should!) still chat about what we’re learning and how it applies to our actual systems right here in this channel.\n>\n> We’re starting on November 3 (which gives you just enough time to order a fresh copy)! But no meeting that week, just reading. I’ll set up some calls at times that seem to work with most people here, but we can (should!) use this channel for discussions outside of the calls.",
  "title": "Run a better book club"
}