The Problem
The first time I studied for a system design round, I spent $100 on a subscription to a reputable study guide. It took me a couple of months to get through the whole thing since I was studying after work. I read through it in detail and was pleased with how well I understood all the concepts.
After finishing the content, I went onto the practice system design problems. Thirty seconds into attempting the first problem and I realized I had basically forgotten everything I spent the past several months reading. Why? Because of the forgetting curve (read on to see what I mean).
I was ultimately successful in getting a job offer after this study cycle, but was left with a stark realization: the biggest risk to unemployment is simply not being able to recall knowledge during the interview process. That is literally it.
Let’s start with Online Assessments. Before letting you speak to a human, most companies will make you take an online coding assessment which is time-limited and screen recorded (to ensure you don’t cheat). Sometimes you get to choose a programming language of choice, but sometimes you do not. Beyond leetcode pattern recognition, the assessment is a pure evaluation of whether you have the correct functions and language syntax memorized to implement the problem. If you forget too much syntax or too many language features, you really don’t have enough time to search it up - you’ll run out of time, fail the assessment, and get disqualified from the interview process. This is all not to mention how screwed you are if the assessment forces you to use a language that you’re not familiar with. Such situations leave you with no hope.
Let’s say you get past the online assessment. Next up is usually a knowledge and behavioral round with a hiring manager, who’s goal is to get a sense of your technical depth and breadth of experience. Let me put it simply. If you mark yourself as proficient in a language, but then fail to answer simple questions regarding the features and functionality of that language, you are done. It doesn’t matter if you have a decade of experience implementing critical systems in this language. If you can’t remember the knowledge during the interview, you’re most likely disqualified.
Usually the last two steps involve live technical rounds and system design. The technical rounds are akin to the online assessment in that you can’t go in forgetting too many language features. Usually an interviewer lets you look up syntax, but you’ll run out of time and look inexperienced if you have to do it more than once.
The system design round is where you either flex your depth of knowledge, or hide in surface-level explanations that leave the interviewer thinking you’re a first-year college student. The challenge with system design is that going beyond high-level diagrams requires being able to recall highly specific knowledge under pressure. Interviewers like when you create the database models and explain the queries for your system. Do you remember how to do that? Database indexes, foreign keys, isolation levels, filtered indexes - without this knowledge on the tip of your tongue, you blank and can’t go deep. Ultimately, every decision you make during a system design round is only made possible by the corresponding pieces of knowledge you have engrained. If you forget what you studied, you’ll stumble every step of the way.
The Solution
Thus, I rest my case - I think you get the message. The good news is that everyone is so focused on complaining, if you do even 10% of what you need to do, you’ll blow them out of the water.
Companies want to see that you know technical concepts before they pay you hundreds of thousands of dollars. It’s pretty obvious when you put it that way, but some people can’t get over it. Like, would you want your heart surgeon looking back at the textbook during surgery? No, obviously not. But software engineers think they’re somehow exempt from retaining information.
The solution rests in the heart of the problem. Humans experience what’s called the forgetting curve. Growth Engineering published a great article on it if you want to learn more: https://www.growthengineering.co.uk/forgetting-curve/
Simply, humans forget learned information as time goes on.
The way you combat the forgetting curve is through repeated, spaced repetition sessions that make you actively recall the information. As you can see, the function’s slope increases drastically after a couple of recall sessions.
The reason I keep talking about Medical Doctors is because they use spatial repetition with Anki to pass the MCAT and Medical School. This goes to show that spatial repetition is a proven approach which is invaluably effective.
Thus, Mastering SWE not only has a voluminous knowledge base in a format that makes you actively recall. It also includes a spacial repetition algorithm that shows you the knowledge at the exact right time to minimize the forgetting curve. All you do is log on every day to do a short session, and the algorithm shows you exactly what you need to review.
The result is that you pull up to interviews and incinerate your competition. People are horribly bad at retaining technical information. Most candidates stay vague and high-level to avoid going deep, and interviewers see it every time.
Have the right information engrained, and you’ll fly through the interview without trouble.