tremlab.io / blog / system-design

Your First System Design Interview

renee balmert - september 23, 2020

Charlie Conspiracy meme from It's Always Sunny in Philadelphia
You wanna talk about stress?

Tech interviews have never been easy. And even if you have diligently prepped for typical code challenges, you might be caught off guard by a System Design interview. System Design, or Architecture, interviews are more common for senior or lead roles, but are becoming more prevalent in the general interview process. So, if you find that the next step in your job hunt process is a System Design interview — don’t panic! I just finished my first one and some focused prep is all you should need. In this blog I’m going to share EVERYTHING I studied to ace my first system design interview.

Hithchiker's Guide to the Galaxy weird mascot
and bring your towel!

BACKGROUND: IMO there are some pros and cons to this kind of interview. I love that it focuses on practical, real-world problems that software companies have to face on a regular basis. Even though it’s kinda big and intimidating, I personally have alot more fun knowing I’m learning something that is 1000% useful. On the flip side, I am generally exasperated with the whole tech interview process that requires an engineer to stop the actual work they do and are good at, and specifically set aside time to study the things that will help them perform well in a tech interview. If you are not a senior engineer, or team lead, or SRE,… this kind of interview probably falls under that umbrella. If you take the time to learn some important buzz words and concepts, you will do MUCH better in these interviews than if you simply show up with your practical work experience as an engineer. (I hate that this is so.) But -- understanding how your code is actually delivered to users, protected from DDOS, can expand to process more traffic over time -- is VERY valuable to any engineer.

So -- this is how you power up for your very first system design interview, even if you have NEVER had to grapple with these topics in your day-to-day work as a (perfectly fabulous!) software engineer.

💰 - some (small) payment involved. I am not affiliated with any of these resources, I just think they are cool.
🎁 - free resource

Git Cute Podcast 🎁

This is a short ‘n sweet overview. But, even cooler is that the podcast’s host is open to meeting 💰with you to talk one on one to answer specific questions. (I booked an hour and LOVED it.)

Ladybug Podcast 🎁

A longer dive into the same topic. Give it a listen and then checkout all the lovely resources that they have collected for you.

Ch 9 of Cracking the Coding Interview 💰

You might already have a copy of this book if you are prepping for a tech interview anyway, but you may not know there’s a whole chapter just for system design! Definitely worth reading and re-reading. This resource was recommended by Git Cute Podcast.

Interview Cake 💰

You, again, may already have heard of this resource in your general prep for a technical interview, but they also have a section dedicated to system design. This is a great way to test the knowledge you’ve accumulated above, on practical problems with progressive nudges along the way. They often have a promotional rate, but it’s a good chunk of change at its full price. I wouldn’t buy it just for the system design content, but if you are generally prepping for tech interviews it’s well worth the cost!

Jackson Gabbard’s YouTube 🎁

“Intro to Architecture and Systems Design Interviews” - A much longer exploration, and a great listen. He walks through a specific example and shows how you can take the lead in the conversation.

System Design Cheatsheet 🎁

This is an amazing resource that not only covers many of the basic principles but, as the title suggest, summarizes all the key points you might want to touch on. I printed out some of the checklists to have on hand during my interview. And it has some helpful visualizations of what a system might look like. This is extremely helpful as you may need to draw out a diagram of your own system throughout your interview. Also note the list of further resources offered. This resource was recommended by Git Cute Podcast.

How Stack Overflow Caches 🎁

If you want to do a deeper dive on the concept of caching, this is a rich, detailed exploration of how Stack Overflow looks at the challenge. This resource was recommended by the Ladybug Podcast.

Scaling Ruby on Rails 🎁

I happen to be interviewing in rails, so I found this blog helpful. If you know the stack associated with the role you are interviewing for, I would recommend poking around for content specific to your stack, in case there are some specific concerns you should be aware of.

Architecture for Everyone 🎁

Found this one after the fact, but another great intro!

I can say for a fact, after going through all these materials, I was over-prepared. 🤦🏼‍♀️ After a few of them, you'll notice that the same ideas are covered again and again with slightly different perspectives. So, you don't need to digest all of them, but I'm listing them here as we each have different ways we like to absorb new concepts (reading, videos, practice problems, talking it through, etc.) And I'll just reiterate the overall theme of don't panic, don't be intimidated. It's certainly not easy work, but it is sensible, creative and collaborative. Which is more than I can say for most tech interview formats.

Of course, your own problem-solving and communication skills, which you’ve been honing as an engineer, will be needed. In system design, there is no one “right” solution for you to discover, it’s just a series of decisions with tradeoffs offs to be weighed. (Is it more important that users get the fastest possible response from our servers, or that we rein in our monthly AWS invoice?) So, these studies cannot magically imbue you with impeccable design insight, but — they absolutely will help bridge the gap between your typical SWE skills and broader system design concepts.

If you find any other cool resources, please share them in the twitter thread!

Beyonce as Rosie the Riveter
May all your designs be grand.