System Design Interviews are a SCAM

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
so you have a system design interview coming up and you have spent countless hours listening to youtube gurus talk about consistency availability sharing and whatnot and maybe you are feeling a little more confident about your preparation i hate to break it to you but system design interviews are a scam you see in last five years i did my fair share of tech interviews if there is one thing i'm more confident about than solving a twosome problem it's that system design interviews are nothing but an acting performance and i'm saying it despite tracking many of these interviews myself today i'll share how i reach this conclusion in the process i'll also give you three useful tips on how to deliver an oscar-worthy performance in system design interviews let's do this imagine you are in a system design interview you are asked to design a facebook like news feed the interviewer wants you to list out all the functional and non-functional requirements before they are finished asking the question then they expect you to talk about different services needed to generate the news feed once that's done you are expected to talk about your choice of database database schema and how to shard this database for scale and if you somehow get that far we are asked whether we should have a pull mechanism or a push mechanism to generate the news feed by some miracle you are able to argue for one of these the answer is always a hybrid approach all this happens in under 45 minutes let's be real here no real world systems are designed in 45 minutes unless of course it's craigslist facebook news feed was launched in 2006 and it took them more than a year to come up with the like button it took them another two years to go from a reverse chronological news feed to a more personalized news feed hundreds of iterations and about 15 years later we have this thing that we call news feed the architecture of systems behind news feed was designed by hundreds if not thousands of engineers and it took them many many years to arrive at this optimized architecture that caters to millions of users and to expect an entry or a mid-level engineer to design a facebook news feed in 45 minutes is nothing but absurd whenever i make this point i'm often told that interviewers don't expect you to know everything and they just want you to talk about a certain aspect of the design well my answer to that is they do this one interviewer might want to talk about this one aspect of the problem but then there is this other one who expects me to be an expert in totally different domain to add to that in most cases being an expert in one specific thing is much harder than knowing a little bit about different things to prove that let me ask you to design a very simple highly available key value database in 45 minutes well good luck with that because it took a group of exceptional engineers at amazon 15 years to design dynamodb which does exactly that so if you are expecting someone to build a news feed or dynamodb in 45 minutes all you are testing is whether the person has seen a similar problem before and this is where i want to give you the first very important tip and that is about where to find problems that are similar to interview questions in my opinion the best place to practice some system design interview questions is this course called grocking the system design interviews in this course you can learn some basic concepts like data partitioning consistent hashing and web sockets this course will also walk you through design of some real world systems like instagram you'll learn how to design different micro services which database to use how to shard this data and how to make the system more available and resilient other than instagram this course will also cover some other popular apps like facebook messenger youtube and uber since this is a paid course i also want to give you a free alternative for that i recommend this youtube channel called code curly on top of covering basics this channel also has videos explaining architecture of some popular apps like twitter amazon and whatsapp another reason i think system design interviews are broken is the fact that most mid or senior level engineers never get a chance to design systems like the ones that are asked in these interviews i have worked at multiple big companies now and i have never met a single senior engineer who ever got an opportunity to design a system that is similar towards us in the interviews don't get me wrong i am sure there is a small percentage of engineers who has done it but i can assure you that they are not the majority all the engineers i have worked with are really smart and i have no doubt that they are capable of designing any kind of systems but the opportunities simply are not there so why in the world would you test all these engineers on the skills that they don't need for their job i understand why fangs or other big companies would do it they have so many people applying for a very small number of shops so they can afford to be more selective hiring in these companies is fairly generic and people change their teams all the time so more the number of skills the better it is what i fail to understand is why these smaller companies follow suit by doing this these companies end up losing a lot of perfectly capable candidates so unless are hiring for a greenfield project or a startup that is growing at a very fast pace doing system design interviews for entry to mid-level software engineer positions makes no sense another reason why system design interviews don't work is because system design interviews are very subjective like they tell you before the interview there is no right answer well they lie there's only one right answer to that question what is that answer you might ask well it's the one answer that the interviewer came prepared with i know this because i have given more than a dozen system design interviews myself and even after trying really hard i have never been able to steer an interview away from the solution they came prepared with except maybe one time your solutions are crap you might say that's within the realm of possibilities i hear you in that case i would expect the interviews to give me some logical reason for not picking my design but i hardly got any to be honest i don't think it's interviewers fault as i already said designing highly scalable systems is very hard and most engineers never get an opportunity to build systems like that so when forced to do these highly vague system design interviews it's my hunch that most interviews pick some known architecture memorize the solution and ask it in the interview i might be wrong about this one so if you're an interviewer and you came up with your own solution for the problem you ask in the interview let me know in the comments as i already said the only right solution is the one your interviewer knows that's why i want to give you the second very important tip that is never design anything in the interview before checking in with your interviewer in a system design solution there are so many different aspects that you can discuss you can talk about capacity calculations api design database choice database schema sharding and whatnot it's impossible to do everything in a short 45 minute interview but you want to make sure that you cover all the important things that are there in interviews solution so check in with your interviewer at every step to see what they are interested in and design those components for example most people advise you to do capacity estimates before starting on the solution that's the part where you do some calculations based on the number of daily active users and amount of data they upload using these numbers you estimate the amount of resources you'll need for the service in most cases you never end up using those numbers i always ask my interviewer if they want me to do the capacity estimates or should i just start designing different components and we can discuss how we would scale them more often than not the interviews are interested in the logical reasoning rather than the actual numbers so listen to your interviewer very carefully last major issue with system design interviews is that different people have their own interpretation of system design let me give you some examples from my own interview experiences in a system design interview at one of the most popular tech companies i was given a text file containing logs from their service and asked to write code to extract some information using these logs at another company i was asked to design a parking lot which is essentially an object oriented design question lastly in a very popular startup i was asked to do an api design without ever talking about databases or anything related to scalability so when someone says system design interview don't just assume that it means the same thing as you think and that's why i want to give you this final tip which is the most important tip don't ever start working on the solution without clarifying every aspect of the problem statement even if you think you got the question repeat what you understood in detail to your interviewer and ask for their confirmation remember the interview i told you about where i was given a text file containing logs i only got to know about the log file at the 40 minute mark in the interview at which point it was already too late so ask as many clarifying questions as needed before starting on your solution but this video would not be complete without telling you how to fix these interviews what if i tell you that there is a tech company which has already found a way to fix system design interviews that company is square for those of you who don't know square is a fintech company that provides services like point of sale payments and banking when i got invited to their on-site interview i received a surprising email from them they gave me the system design interview question a couple of weeks before the interview when i asked them why they did so their answer was very simple no systems can be designed in 45 minutes and we want to give you enough time to prepare they told me that in the actual interview they would like to discuss the design tradeoffs i made to arrive at the final solution and that's when i learned that system design interviews are not really broken it's the way we do them that needs to be fixed if you're having a hard time cracking coding interviews watch this video at the top if you want to know how i became a software engineer at google without a cs degree you can watch this one on the bottom i'll see in the next one [Music]
Info
Channel: Sahil & Sarra
Views: 104,283
Rating: undefined out of 5
Keywords: system design interview, system design interview questions, system design interviews, gaurav sen, gaurav sen system design, software engineering, software engineer interview, distributed systems interview questions, distributed system design interview questions
Id: rKgtPABz9AY
Channel Id: undefined
Length: 8min 55sec (535 seconds)
Published: Sat Apr 09 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.