I recently completed an interview cycle and switched to a high TC job at a top tech company. In part 1, I shared my 5 offers and tips: https://www.teamblind.com/post/M2VcYAsS In part 2, I shared a prep guide and interview tips: https://www.teamblind.com/post/NHYYGwXw?cid=20647121 As I prepped and interviewed over 4 months, I formed my own opinions of the state of interviews in the tech industry. People on Blind love to decry LeetCode practices and the intense prep required. They shout "Google started this terrible practice and now every company does it!" Is it actually awful? Is the tech industry truly unfair? I share my thoughts. I use an objective and pragmatic view. Like choosing between real solutions on the job, there are advantages and disadvantages to every interview style. Perfect interview solutions do not exist. None are inherently 'correct' or 'wrong'. It's about tradeoffs. I list the ones I see below. LEETCODE INTERVIEWS Disadvantages: + Very long and challenging amounts of prep required. + Being good at Leetcode provides only small signal as to whether the candidate is a quality coder at work. + Leetcode interviews are unrealistic. Leetcode skills and knowledge usually do not map to the skills and knowledge needed on the actual job. + Very high value engineers can be rejected due to lack of Leetcode skills/prep. False negative potential is high. Advantages: + The amount of time spent prepping compared to the income it provides is very cheap. Look at other industries, small business owners, and people with side hustles. Plenty of examples of people who work extra hours every day for years, yet the income produced is a fraction of what we get in tech after a few months of grinding. + Leetcode provides a standardized way to prep for across many companies. Prep 'once', and you are ready for interviews at many, many tech companies. + Leetcode prepares you for both LeetCode and non-Leetcode interviews. Leetcode builds coding speed and data structure knowledge, which helps with non-Leetcode coding interviews too. + From a company's perspective, Leetcode interviews are a good forcing function so that candidates have strong computer science fundamentals. With just a handful of hours (several coding rounds, interview evaluation, etc.), you know a passing candidate likely has all the computer science fundamentals under their belt. SYSTEM DESIGN INTERVIEWS Disadvantages: + Long and challenging amounts of prep required. System design is even more challenging than LeetCode prep. The prep topics are unbounded, the questions are ambiguous, you don't know when your solution is 'done', you don't have a way to clearly validate your solution, and you don't know if your approach is what the system design interviewer would like to see. + Very unrealistic compared to real design at work. In interviews, you gather requirements in minutes, slap many components on a screen at rapid speed, skip over important details, and always have a greenfield start. The real world is very different. Advantages: + From a company perspective, it is a good way to validate a candidate has at least basic understanding of software systems and they know some basic building blocks and patterns. Candidates must demonstrate a breadth of knowledge areas: Data stores, data models & schemas, request/response interactions, data structures, defining features, how components interact together to create feature verticals, data flow, etc. + Provides opportunities for a candidate to display genuine wisdom, experience, and expertise. + Great way to learn about some of the candidate's critical skills: Technical communication, dealing with ambiguity, logical reasoning through unforeseen problems. BEHAVIORAL & PROJECT DEEP DIVE INTERVIEWS: These are the best interviews to sniff out someone's actual experience, or lack of. A great interviewer will ask the right questions. Your answers provide tremendous insight into the level of seniority you have (or don't have). Rather than list advantages and disadvantages, I'll leave it at that. Another way to look at all of this is from an alternate solution viewpoint. Can you think of alternative interview styles? What are the advantages and disadvantages? Some popular ones are day-long coding onsites or take home assignments. More realistic, yes. But interviews are very lengthy for both candidate and evaluator. Many other tradeoffs everywhere. In conclusion, the state of interviews is reasonable. The current style of system design and Leetcode interviews are unrealistic compared to real work, but they are good forcing functions to ensure candidates have a strong foundation of computer science and software knowledge. Using a time-versus-value lens, the lucrative income which a few months of challenging preparation provide is _extremely_ fair. YOE: 6 TC: 450k #tech #interviews #offers #career #industry #leetcode #systemdesign #behavioralinterview
Loved your last 2 posts and totally agree. No industry is perfect but tech has fewer explicit barriers than other industries. The fact that you can just (“just”) grind LC and get a great job is pretty unique. It’s also worth the investment when you can 2x your TC. Some of my friends say they’re not willing to grind LC and yet stagnate in jobs they hate. I really don’t get it, why not push through for a few months and change the trajectory of your career?
This is a good take on it. Made me think of it a bit differently. I think an issue I have with LC is when the problem requires thinking of some trick to solve the problem. I feel the LC should be something a normal dev can come up with without having an aha moment.
Yes - those are not the norm though, thankfully. There are the unreasonable coding interviews that crop up here and there, but in my view, if you get hit by one of those, accept the loss and move on. Too many good companies to get hung up on a bad interviewer
Sir you are a dime. I'm not an engineer but I enjoyed reading this and know how much value it provides.
Thank you for your series of posts!
I’m glad you enjoyed them!