Most Tech Interview Prep is GARBAGE. (From a Principal Engineer at Amazon)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
for the love of god stop spending all of your precious interview study time on coding problems if you've been studying for a tech interview you've probably been prepping for software engineering interviews the wrong way especially if you want to land a senior principal or staff engineering role at a fan company in this video i'll explain why most interview prep resources especially on youtube are garbage and what you should do to effectively prepare for a technical interview if you want to land a senior role meta here i'm a principal engineer at amazon where i've spent the entirety of my almost 15-year career i've conducted over 800 technical interviews i've also trained hundreds of software engineers on how to conduct tech interviews you can disagree with my opinions but you can't say i don't know what i'm talking about my advice is based on my experience and i believe that it holds true for most large companies especially fang companies okay so why is most advice about software engineering interviews garbage the reason simple it's all geared toward junior and entry level positions the emphasis on coding data structures and algorithms is warranted if you've just graduated from college or even completed a boot camp even then grinding leak code questions or god forbid you spend good money on interview prep courses this is so much about the point of tech interviews what do you mean let's get meta you have to understand why tech interviews exist in their current form there's simply not enough time to know if you're a good fit for the role in level they have to make as good use of what little time they have because they're about to make a big decision let's think about it from their perspective they need a good software engineer and if they're a big company they need an army of software engineers stakes are high if they hire a bad one it will take them six months to know that it's not working out then it'll take at least six months if not a year to manage them out all the while they're paying high salaries benefits they have to pay for the rent in the office and the computer they're writing bad code on if you factor in the cost of recruiting this higher is gonna cost on the order of five hundred thousand to a million dollars all of this on top of opportunity costs there are also knock-on effects bad hires bring the software quality down cause more problems that cost money to solve they lower team morale and if it's a small company it might even make the difference as to whether they survive no business has 12 to 18 months to waste on the other hand a good hire does the exact opposite not only do they write amazing code they solve business problems before they happen and increase quality not only of the existing software but they install mechanisms that increase future quality they grow other engineers on the team and replicate themselves also because they have experience they know a lot of other good engineers if it's an awesome place to work they'll recruit other top performers to come to the team okay fine stakes are high the second part is that even though tech interviews take all day there's not enough time to do a proper assessment that's why internships are the best path for getting an entry-level job it's a two-month job interview for senior and principal roles the maximum you have is six hours to determine if a person is a good fit for the roll-in level that's just not enough time at amazon some teams don't expect new hires even at a senior level to make meaningful design contributions for six months much less six hours therefore there are two pillars to modern interview theory first since actual code design and leadership evaluation takes too long the only reasonable approach is to rely on proxies for the same second these proxy should be very difficult to imitate i don't apply data structures and algorithms daily but i do know about them and i also know how to code that's why people ask data structures and algorithms questions if you don't know how to code there's no chance you could fake it so it's a proxy that allows companies to effectively screen people out if you're interviewing for a senior principal role coding is necessary but not sufficient companies are looking for people that can contribute meaningfully to projects that take many people potentially years to complete for fan companies these are usually big systems and they're looking for people that are engineering leaders the best proxies for system design and leadership are stories about people that have prior experience building big systems and leading teams of engineers so the way to think about this is that there are three levels to the software engineering interview video game you won't get an offer unless you beat all three levels level one is coding software engineers code if you don't know how to code you don't know why n squared algorithms are bad you don't know that stack overflow isn't just a website the proxy has done its work this is the level most interview prep focuses on focusing on beating the first level over and over again is a waste of your precious time level two is system design i'm defining a system as a set of software components that work together to achieve an outcome that takes the coordination of many people to design implement test and maintain the reason system design questions are asked is because they need people to make positive and significant contributions to their existing systems you can't get good at system design questions by approaching them like coding problems building a big bridge takes years and the collective efforts of many many people you can design and create a scaled version of the bridge but until you've built a few you won't know what to look out for what things could be real problems if you take shortcuts and where you can save time by doing things more efficiently here's a secret system design questions on the surface look like situational questions but in reality they are veiled behavioral questions let me explain the difference between situational and behavioral problems situational questions take the form of what would you do in this situation all coding questions are situational take the example of balancing a binary tree when you ask this coding problem you're saying hey candidate you want a job here pretend you needed to balance a binary tree or you got fired how exactly would you do that the other type of question you'll see in an interview is behavioral they take the form of tell me about a time you were in this situation and tell me exactly what you did the distinction between situational and behavioral questions is really important situational questions are the best proxy for the ability to code during an interview behavioral questions are the best proxy for system design and leadership asking a coding question as a behavioral one sounds really odd tell me about a time you needed to balance a binary tree similarly companies avoid asking leadership questions in a situational manner because it's easy to answer these sorts of questions abstractly which means that it would be easy to imitate tell me what you would do if you disagreed strongly with your team is a much different question then tell me about a time you disagreed strongly with your team so back to my secret system design questions sound like situational questions but in reality they're veiled behavioral questions when the interviewer asks you about how you would design the facebook feed it sounds like a situational question but in reality the interviewer is probing you on whether you have built systems like this in the past you might sketch out a system that solves this problem on a small scale but the inevitable follow-ups will be what would you do if this needed to scale to millions or billions of people how would you ensure uptime and resiliency how do you make sure it's lightning fast even though there's so much data worldwide these questions are easiest to answer if you have the experience if you don't it will be exceedingly apparent if you want to know how to get good at system design or find this type of content useful let me know in the comments below or by smashing that subscribe button so level one is code level two is system design and the final level is leadership why is the last level leadership you ask the reason is because senior and principal engineers are responsible for the tech teams but do not have direct reports like a manager leadership without authority is really hard to do it requires that you have the technical drops to contribute meaningfully to big projects handle problems and headaches that pop up make sure that the software quality is high that the software architectures the system of systems will scale to the product or business but you can't order people around the set of skills is exceedingly rare and that's why fang companies pay the big bucks for senior engineers behavioral questions have a wonderful property that makes them particularly good proxies you can ask the same question to junior senior and principal engineers their answers will both tell you whether they are a good fit for the company but also based on the scope of their answers they also tell you indirectly what level the candidate is it doesn't matter if people are really strong coders or system designers if they have small potato answers to leadership questions they will be either down leveled or passed on let's play a game i'll start to answer the same question in different ways tell me if it's a good answer and what level they should be tell me about a time you strongly disagreed with your team let me tell you about the tabs versus spaces war of 2019 i configured all of our builds to fail if the formatting didn't comply with my personal formatting template i wanted to refactor some code so that it was easier to test we had a bunch of bugs that were due to poor software quality my team disagreed not because they didn't like tests but because we had crazy tight deadlines so i really like emacs we were having operational issues with the big kitchen sink api so i proposed that we moved to an asynchronous processing model it would make our lives so much better in the long run but my team didn't like it because it would be a lot of work and they didn't think it was commensurate with the operational issues we were facing we made an acquisition of a company and my vp wanted to create an aws service out of it my team wanted to position the web service with underlying abstractions that catered more towards developers who were okay with handling low-level details but i wanted to create a service that packaged the functionality in higher level apis that made it easy for developers of a certain type of application to move quickly so how should you prepare the first step is to allocate your study time proportionally based on expectations at that level the three aspects of interviews are all important but in different amounts for junior entry-level interviews i recommend prepping 90 coding and 10 behavioral questions if you're coming straight out of school or a boot camp if you have some but not a lot of industry experience i would adjust this to 75 coding and 25 behavioral you won't be expected to know much about system design and the expectation is that you don't have a lot of experience to draw from for behavioral questions if you have some experience but aren't targeting a senior engineering role i recommend forty percent coding twenty percent design and forty percent behavioral leadership note at that these levels while coding is still a significant percentage design and behavioral questions are more than half of what you should be preparing for for senior engineers the percentage i recommend is 30 code 30 design and forty percent leadership and for principal engineers i recommend twenty percent code forty percent design and forty percent leadership preparation to be clear i'm not saying don't do coding problems no fang company will hire you if you can't code my point is that it's not smart to overemphasize the coding aspect because assuming you do well enough with the code the focus will immediately shift to figuring out how senior you actually are here's the best piece of advice i can give you for behavioral questions the most effective way to answer behavioral questions is to tell a good story why because stories allow you to communicate multiple dimensions of information efficiently the best stories have good character development built in have a beginning middle and end and are therefore memorable and can communicate many points and best of all since you already know that interviews are about employing proxies stories about how you led your team through difficult situations make the job of the interviewer much easier their cognitive load is lessened because you've done their work for them it's the secret that will take your interview performance from good to exceptional it's critical you create a stable of stories that demonstrate that you have the experience that the company needs you can't communicate that you've been operating at a senior level the outcome will be the same as if you completely bomb the coding interviews you'll be rejected so please for the love of god don't spend all of your time grinding lead code questions if you want to know what it takes to grow into a senior staff or principal engineer hit that subscribe button for more content that will help guide you through that journey i really enjoy making this content and i would love to go on this journey together have an awesome day you
Info
Channel: A Life Engineered
Views: 821,758
Rating: undefined out of 5
Keywords:
Id: 0Z9RW_hhUT4
Channel Id: undefined
Length: 12min 57sec (777 seconds)
Published: Mon Feb 22 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.