I still remember my first system design interview. I’d spent weeks memorizing architectures from blog posts, drawing perfect diagrams of Cassandra clusters and message queues. When the interviewer said, “Design a URL shortener,” I immediately launched into a monologue about hashing algorithms and base62 encoding. I didn’t ask a single question. About ten minutes in, he stopped me. “Who are your users?” he asked. I froze. I had no idea. I’d designed a system for nobody.

That failure stung, but it reshaped how I prepare for these interviews. The core mistake I made—and I see so many engineers make—is treating a design interview like a trivia test. You can’t just recite the textbook architecture for TinyURL or Twitter and expect to pass. The interviewer wants to see how you think, not what you’ve memorized.

After that disaster, I scrapped my note cards. I bought a big whiteboard and called up a friend who’d recently landed at a FAANG company. Every Sunday, we’d pick a random problem and spend forty-five minutes on Skype, him playing the interviewer while I stumbled through designs. He’d throw curveballs: “What if the read-to-write ratio is 1000:1?” or “How do you handle hot links?” At first, I’d panic and jump straight to caching layers. But he kept pushing me to start simpler. “Just a single server and a database,” he’d say. “Now tell me why that breaks.”

The shift was subtle but profound. Instead of treating the interview as a performance, I started treating it as a conversation. I learned to spend the first five minutes asking questions: what scale are we designing for, is latency more important than consistency, are we optimizing for reads or writes. I’d sketch a primitive box diagram and then iterate, layering in constraints as they came. I stopped caring about impressing anyone with buzzwords and focused on articulating trade-offs.

One thing that really helped was recording myself. I know, it sounds uncomfortable, but hearing my own rambling explanations made me realize how often I’d use jargon without really understanding it. I once caught myself saying “we’ll shard on user ID” without explaining why that might cause hot partitions for power users. Listening back, I could hear the gaps. I’d redo the design, forcing myself to explain each decision like I was talking to a new team member.

There’s also an emotional side to this that nobody talks about. Design interviews are exhausting because they’re so open-ended. You can’t cram for them. You have to build a kind of intellectual stamina, the ability to juggle constraints without losing the thread. After a couple of months of practice, I noticed I was actually enjoying the process—the puzzle of it, the back-and-forth. When I walked into my fourth interview, for a role I really wanted, I wasn’t nervous. I was curious. The problem was “design a ride-sharing service,” and instead of parroting Uber’s architecture, I asked, “Are we starting in one city or globally?” That one question set the whole tone.

I got the offer. Looking back, the preparation that mattered wasn’t memorizing system diagrams. It was learning to be comfortable with ambiguity, to think out loud, and to treat the interviewer like a collaborator rather than a judge. If you’re prepping now, find someone to practice with—a friend, a colleague, even a rubber duck—and just start talking. Forget the perfect answer. There isn’t one.