But those that do, stick to it rigidly.
That’s great for something that’s a known quantity. If you’re taking a math test, you can simply memorize the formulas that you learned.
But with system design, you need to be flexible.
Otherwise, when your interviewer makes the smallest change to the problem, it completely throws off everything you were planning for your solution.
When they ask you to explain why you chose to use a NoSQL database and you don’t have a clear answer, they know that you don’t really know what you’re talking about.
And not only do you need to be flexible, but you need to know where to flex too.
Where should you stand your ground and use the tech you’re most familiar with? Where should you just do what the interviewer says to do?
Where can you control the direction of the interview to guide towards your areas of expertise?
That said, you can be unlimitedly flexy, but it doesn’t help if you don’t know what your interviewer is asking for and you end up giving the exemplary answer to the wrong question…
That’s why I developed a system.
Two years ago, I decided that I needed to actually figure out how people could solve system design problems once and for all. I’d gotten so many questions about it. This was no longer optional.
So I started digging.
I interviewed engineering managers who conducted system design interviews.
I interviewed recruiters.
I watched Youtube video after Youtube video.
I even paid thousands to a research assistant to help me compile all the data.
And today, I’m so excited to share with you the final result: