A Systems Design Interview Primer For New Engineers

Jake Zhang
The Startup
Published in
10 min readJul 26, 2019

--

When I first got into programming, one of the biggest impediments to leveling up was my lack of understanding of software systems and how they worked. There were always some intriguing, big, and hairy tasks in the backlog that I wanted to tackle — but I didn’t have enough knowledge to even think through how my piece of a project could, or should, integrate with the rest.

It turns out this is a very common experience. A large part of the reason that large software companies ask new university graduates mostly algorithm questions is because they can’t give them systems design problems!

This article aims to be a primer focusing on systems design interview preparation, but can also be used to simply get better at systems design (a required skill) as a working developer.

What is Systems Design in Software?

When I speak of “systems design”, I’m talking about the process by which we as engineers make decisions regarding the elements of a complex application. These system elements — such as the data models and structures, overall architecture, modules and components, and the different interfaces of those components — have to be carefully contemplated to ensure speed, reliability, and stability down the line.

When one first starts their development career, it’s easy to gloss over these high level technical decisions. After all, you’re already trying to hold the fundamentals of syntax, modules, and perhaps

--

--