If the system design interview has always been your achilles heel, this article is for you. It definitely used to be mine. Unlike coding interviews which are fairly unambiguous, there isn’t much material on preparing for the design interviews. Google searches on how to prepare inevitably take you to two main sources — the System Design Primer & Grokking the System Design interview. Like most others, I simply relied on these two sources for my preparation. However, no matter how many times I’d read these two, I just couldn’t nail the design interviews (although I did scrape through a couple). While these two sources have some merit & they should play a role in your system design preparation, they are inadequate.
I’m finally at a point where system design interviews don’t cause knots in my belly. There is some nervousness, of course, but also excitement derived from confidence. I can pass roughly 75% of my system design interviews at the T6 (staff engineer) level. I figured it out through a combination of trial & error and thoughtful deliberation.
Let me preface this by saying that acing the design interview will take time & deliberate practice. You just can’t cram your way through. No amount of grokking will let you ace this one (although it might allow you to clear the L4 bar).
Francis Bacon said “Some books are to be tasted, others to be swallowed, and some few to be chewed and digested.”
Translation: some books are to be read only in parts; others to be read, but not curiously; and some few are to be read wholly, and with diligence and attention. For the system design interview, you’ll need to put your molars to good use. There’s going to be plenty of chewing and lots of digesting. You’ll need to read & re-read 100s of pages. You’ll need to watch & re-watch dozens of videos. You’ll need to take notes, revise your notes & become a scholar. You’ll need to understand concepts so deeply that you can recite them in your sleep.
I’ve only gotten to where I am today by failing several system design interviews. It’s hard not to feel disheartened by rejections but rejections are learning moments. I’m a strong proponent of failing-fast and I view failures as opportunities to refine my process. I’ve obsessed over my failed system design interviews for days after- replaying the interview over and over in my head — sifting through my memory for things that I could have done better. Failures have helped me internalize what not to do (that…