<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sophia Bennett</title>
    <description>The latest articles on DEV Community by Sophia Bennett (@sophiabennettdev).</description>
    <link>https://dev.to/sophiabennettdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3984745%2Fb0f9cbf8-a2b0-478d-b7f3-f1c66a15abea.webp</url>
      <title>DEV Community: Sophia Bennett</title>
      <link>https://dev.to/sophiabennettdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sophiabennettdev"/>
    <language>en</language>
    <item>
      <title>I Built a Notification System That Handles 10M Messages a Day, Here's What I Learned About System Design Interviews</title>
      <dc:creator>Sophia Bennett</dc:creator>
      <pubDate>Fri, 19 Jun 2026 19:45:13 +0000</pubDate>
      <link>https://dev.to/sophiabennettdev/i-built-a-notification-system-that-handles-10m-messages-a-day-heres-what-i-learned-about-system-4g26</link>
      <guid>https://dev.to/sophiabennettdev/i-built-a-notification-system-that-handles-10m-messages-a-day-heres-what-i-learned-about-system-4g26</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjbbsxaseseq5727jo7rc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjbbsxaseseq5727jo7rc.png" alt=" " width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last week I sat down to design a notification system from scratch. Push notifications, SMS, email, the whole stack, supporting 10 million daily alerts with sub 200ms latency and zero data loss tolerance. Sounds like a typical Tuesday at a big tech interview, right?&lt;/p&gt;

&lt;p&gt;Except this time I wasn't whiteboarding alone in front of a panel hoping I remembered to mention idempotency. I was actually wiring up the architecture, watching costs tick up per hour, and getting real feedback on whether my design would survive contact with reality.&lt;/p&gt;

&lt;p&gt;Here's the thing about system design interview prep that nobody tells you early enough: reading "Designing Data-Intensive Applications" and watching YouTube videos about CAP theorem will teach you concepts, but it won't teach you the actual skill being tested, which is decision making under constraints.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With Most System Design Practice
&lt;/h2&gt;

&lt;p&gt;Most people prepare for system design interviews in one of two ways. They either memorize a handful of "famous" designs (design Twitter, design Uber, design a URL shortener) and hope the interviewer asks something close enough, or they pair up with a friend for a mock interview and spend half the session arguing about whether the friend's feedback is even correct.&lt;/p&gt;

&lt;p&gt;Neither approach builds the muscle you actually need: thinking through tradeoffs in real time, justifying component choices, and reacting when requirements shift.&lt;/p&gt;

&lt;p&gt;When I was prepping for interviews, the gap I kept hitting wasn't conceptual. I knew what a message queue was. I knew what a dead letter queue was for. What I didn't have was reps. Actual practice building these systems end to end, with constraints that forced real decisions instead of textbook answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Changed My Prep
&lt;/h2&gt;

&lt;p&gt;I started treating system design practice the way I'd treat LeetCode grinding, except instead of solving the same two-pointer problem for the fortieth time, I was assembling architectures piece by piece and seeing immediate consequences.&lt;/p&gt;

&lt;p&gt;For the notification system challenge, the requirements were specific and unforgiving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support push, SMS, and email delivery&lt;/li&gt;
&lt;li&gt;Handle retries on failure&lt;/li&gt;
&lt;li&gt;Process 10 million daily alerts&lt;/li&gt;
&lt;li&gt;Keep latency under 200ms&lt;/li&gt;
&lt;li&gt;Guarantee zero data loss&lt;/li&gt;
&lt;li&gt;Everything has to be asynchronous&lt;/li&gt;
&lt;li&gt;Stay under a fixed hourly budget&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That budget constraint changes everything. Suddenly "just add more servers" isn't a free answer. You start asking yourself questions interviewers actually want to hear: do I need three separate notification services for each channel, or can one service handle routing logic and delegate to channel-specific workers? Where does the queue sit so a slow SMS provider doesn't block email delivery? What happens to a notification that fails three times, does it disappear or does it land somewhere you can inspect and replay?&lt;/p&gt;

&lt;p&gt;I ended up landing on an API Gateway routing to dedicated notification services per channel, an MSK-backed queue decoupling ingestion from delivery, separate delivery workers per channel so failures don't cascade, and a dead letter queue catching anything that exhausts its retries. Monitoring and a logging layer sat underneath the whole thing because "zero data loss" is a claim you need to be able to prove, not just assert.&lt;/p&gt;

&lt;p&gt;None of that is exotic. But getting there by actually building it, watching the cost meter, and getting nudged when something looked off was a completely different learning experience than reading a blog post about the same architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Building Beats Watching
&lt;/h2&gt;

&lt;p&gt;There's a specific moment in system design prep where things click, and it's not when you finish a course or finish a book. It's when you make a wrong call, see why it's wrong, and fix it yourself.&lt;/p&gt;

&lt;p&gt;If you design a notification system and only use one shared queue for both push and SMS, and SMS providers are notoriously slow and flaky, you'll bottleneck your push notifications behind retry storms from SMS failures. You can read that warning in an article. Or you can build it, watch your design choke, and never forget the lesson again.&lt;/p&gt;

&lt;p&gt;That's the difference between system design courses that hand you diagrams to memorize and a system design lab where you're the one placing components, connecting them, and dealing with the fallout of bad choices.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Way to Practice
&lt;/h2&gt;

&lt;p&gt;If you're prepping for interviews right now, here's what I'd actually recommend instead of just rereading the same five blog posts about designing a chat app:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Treat constraints as the real test.&lt;/strong&gt; Latency targets, budget caps, data guarantees, these aren't flavor text. They're the actual interview question. Anyone can draw boxes and arrows. The skill is justifying why this box and not that one, given the numbers you were handed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practice failure scenarios, not just happy paths.&lt;/strong&gt; What happens when your queue backs up. What happens when one delivery channel goes down. What happens when you hit 10x traffic. If your practice sessions never break, you're not really practicing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get feedback that's specific to your design, not generic.&lt;/strong&gt; A mock interview with a friend who's also prepping is fine, but it's not the same as something that flags "hey, your retry logic here introduces a single point of failure" while you're actually building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repeat with variation.&lt;/strong&gt; Don't design the same notification system five times. Design a URL shortener, then a rate limiter, then a chat system, then come back to messaging systems with a different constraint set. The patterns start showing up, and so does your confidence.&lt;/p&gt;

&lt;p&gt;I've been using &lt;a href="https://scaledojo.dev" rel="noopener noreferrer"&gt;Scaledojo&lt;/a&gt; for exactly this kind of structured practice, it's basically a sandbox where you assemble real architectures against specific design challenges, see live cost and latency tradeoffs as you build, and get nudged when a connection or component choice doesn't hold up. It scratches the itch of "I want to actually build this, not just talk about building it," which for me was the missing piece between knowing system design concepts and being able to perform under interview pressure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Takeaway
&lt;/h2&gt;

&lt;p&gt;System design interviews aren't testing whether you've memorized the architecture for Twitter. They're testing whether you can take ambiguous requirements, apply real constraints, and make defensible engineering decisions out loud, in real time, while someone watches.&lt;/p&gt;

&lt;p&gt;The only way to get good at that is to do it, over and over, with feedback loops tight enough that you actually learn from each rep instead of just feeling busy.&lt;/p&gt;

&lt;p&gt;So if your prep so far has mostly been reading and watching, try flipping it around. Pick a system, set real constraints on yourself, build it, break it, and fix it. Your future interviewer will be able to tell the difference between someone who memorized a diagram and someone who's actually done the work.&lt;/p&gt;

&lt;p&gt;What's the hardest system design question you've run into in an interview? I'd genuinely like to know, drop it in the comments.&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>architecture</category>
      <category>designsystem</category>
      <category>design</category>
    </item>
    <item>
      <title>THE LIE NOBODY TELLS YOU ABOUT SYSTEM DESIGN INTERVIEWS</title>
      <dc:creator>Sophia Bennett</dc:creator>
      <pubDate>Mon, 15 Jun 2026 18:33:24 +0000</pubDate>
      <link>https://dev.to/sophiabennettdev/the-lie-nobody-tells-you-about-system-design-interviews-22bn</link>
      <guid>https://dev.to/sophiabennettdev/the-lie-nobody-tells-you-about-system-design-interviews-22bn</guid>
      <description>&lt;p&gt;Every article about system design interviews tells you the same thing.&lt;/p&gt;

&lt;p&gt;"Learn the components. Understand trade-offs. Practice on paper."&lt;/p&gt;

&lt;p&gt;And so you do. You read ByteByteGo. You finish Grokking. You watch Alex Xu's videos. You feel ready.&lt;/p&gt;

&lt;p&gt;Then you walk into the interview and freeze.&lt;/p&gt;

&lt;p&gt;Not because you don't know the concepts. You know them cold. You freeze because knowing system design and actually building a system design are two completely different skills and nobody told you that before you sat down across from a Google engineer.&lt;/p&gt;

&lt;p&gt;Reading about how a rate limiter works is like reading about how to swim. At some point you have to get in the water.&lt;/p&gt;

&lt;p&gt;Here is the uncomfortable truth: most engineers preparing for system design interviews are doing the equivalent of reading swimming manuals and calling it practice. They can describe a CDN. They cannot design a content delivery architecture under time pressure with someone watching.&lt;/p&gt;

&lt;p&gt;The gap is not knowledge. The gap is execution.&lt;/p&gt;

&lt;p&gt;Why this matters more than you think&lt;/p&gt;

&lt;p&gt;I spoke to a senior engineer who failed his Meta system design round three times. He had read every book. He had the components memorized. He failed because when the interviewer asked him to walk through a Twitter feed design, he had never actually done it. He had only read about it.&lt;/p&gt;

&lt;p&gt;On his fourth attempt, after three months of building real architectures interactively, he passed. Not because he learned something new. Because he had trained the muscle, not just the brain.&lt;/p&gt;

&lt;p&gt;That is the difference between knowing and doing.&lt;/p&gt;

&lt;p&gt;What you should actually be practicing&lt;/p&gt;

&lt;p&gt;Sit down with a blank canvas. No notes. Design a URL shortener from scratch. Not in your head. On paper, on a whiteboard, on whatever you have. Draw the components. Connect them. Decide where the database goes. Pick your caching strategy. Justify every single choice out loud as if someone is listening.&lt;/p&gt;

&lt;p&gt;Do that once a week for two months and you will interview differently than 95% of the candidates in the room.&lt;/p&gt;

&lt;p&gt;The engineers who clear FAANG system design rounds are not smarter than you. They have just built more architectures than you. That is a fixable problem.&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>career</category>
      <category>discuss</category>
      <category>distributedsystems</category>
    </item>
    <item>
      <title>Finally Joined DEV Community!</title>
      <dc:creator>Sophia Bennett</dc:creator>
      <pubDate>Mon, 15 Jun 2026 05:43:12 +0000</pubDate>
      <link>https://dev.to/sophiabennettdev/finally-joined-dev-community-54hf</link>
      <guid>https://dev.to/sophiabennettdev/finally-joined-dev-community-54hf</guid>
      <description>&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;I've been building software for about 14 years now, mostly working on enterprise applications, distributed systems, and cloud-based platforms. Over the years I've had the opportunity to work with some great teams and products, but I've mostly been a reader rather than someone who shares publicly.&lt;/p&gt;

&lt;p&gt;I'm joining DEV because I think it's time to change that.&lt;/p&gt;

&lt;p&gt;A lot of my career has been spent solving the kinds of problems that don't make it into tutorials legacy systems, scaling challenges, production incidents at odd hours, difficult migrations, and all the trade-offs that come with building software in the real world.&lt;/p&gt;

&lt;p&gt;I'm hoping to share some of those experiences, along with lessons learned (sometimes the hard way), and connect with other engineers who enjoy talking about architecture, engineering culture, and building reliable systems.&lt;/p&gt;

&lt;p&gt;Looking forward to learning from the community and contributing where I can.&lt;/p&gt;

&lt;p&gt;What was the biggest lesson you learned after your first few years in the industry?&lt;/p&gt;

</description>
      <category>career</category>
      <category>softwareengineering</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
