Quote I've seen a lot: "Leetcode every day keeps unemployment away"
Seems the best way to avoid long term unemployment in this day and age is to be "coding interview ready" constantly.
My best friend at a FAANG always tells me he dreads having to look for a job ever again - whether voluntarily or involuntarily, as he is in no way shape or form ready for coding interviews.
A lot of the companies I've seen actually hiring these days are doing more legit work-sample problems than Leetcode tasks.
Coinbase and Stripe both have programming tasks that are clearly condensed versions of the actual work you'll be doing there. Google does too if you get a good interviewer, though it can vary a lot between interviewers. Snap, Lyft, and Facebook were all leetcode exercises - but they're ones that have been hurting more from the coronavirus recession.
Leetcode is popular now because there're a bunch of tools (CoderPad/Karat for interviews and Leetcode/HackerRank for practice) that make it easy. I'm already seeing the pendulum start to swing the other way though - many of the best companies are building hiring processes tailored to their own business because they get a competitive advantage from doing so, both because they get more signal on prospective applicants and because it means interviewing does not become a transferrable skill that you can use to get multiple competing offers.
I've encountered takehome problems more often these days, but they've always been in addition to leetcode interviews, not instead of.
As one example, a "mid-tier" company gave me homework to do, which I spent a lot of time and effort to do a good job. The team apparently was impressed - supposedly I had one of the best solutions, and I got to the onsite. Then the onsite had two leetcode rounds, one of which I struggled with. I got rejected. I don't know the exact reasons of course, but considering I felt the rest of the interview seemed to go great, I suspect it's the leetcode problem I failed to get the superoptimal solutino for that killed me.
Nowadays my policy is to just reject any company that gives me homework to do as part of their interview loop. More often than not it's a waste of time. The exception would be companies like FAANG or other "top" companies. I'd definitely still do homework for Coinbase or Stripe.
Some company I've never heard of or some non-tech company? Nope. At least studying leetcode scales horizontally across many companies.
The problem with realistic work-sample problems is that most of the difficulty in real life programming comes from complexity which cannot be replicated in a 1 hour technical interview. You can't really test someone on their ability to add a feature to a 10 million line code base that interacts with 50 different other modules in an interview setting. A 1 hour technical interview is going be either realistic but trivial and useless for differentiating candidates, or difficult through contrived means (like leetcode).
How long ago? I interviewed 2 days ago and everything was work-sample. It sounded like this was a recent (last couple months) change; one of my interviewers had never given the particular problem before.
(Similarly, the Coinbase interviewer said that if I had interviewed a year ago it would've been leetcode but they've redone their process significantly since.)
> My best friend at a FAANG always tells me he dreads having to look for a job ever again - whether voluntarily or involuntarily, as he is in no way shape or form ready for coding interviews.
I resonate to this, coding interviews significantly annoy me. I'm a significantly better developer than I was 5 years ago, but I would have passed so many interviews 5 years ago that now I wouldn't remember where to begin, and that's because I studied relentlessly for interviews. My second to last semester of college I focused so much more on studying for interviews than my own classes, that I had the spreadsheets to make sure I would just get my C's just to ensure I could nail interviews. I did well in almost all of my interviews, and my grades completely stopped mattering.
Right now, if I practiced leetcode daily, I'd think it would interfere with my work. I don't want to do it on my free time as I actually enjoy a work/life balance.
I love my job, I'll study when I have to, but until that day comes I'm going to focus on becoming the best engineer I can be and continue bringing value where I'm at.
Tech interviews need to change - they just reward people who studied for the points, not a true representation of who would be a great engineer for their company/team. Similar to how high school overwhelmingly rewards "passing the test" more than active learning.
I feel like there should be a decent correlation between being willing to put in effort into interviewing to progress in your career and being willing to put in effort into doing your job to progress in your career, so it makes sense for companies to select on the former trait. Also, if someone refuses to spend a few dozen hours practicing leetcode to get a 6 figure pay rise then either there is something seriously wrong with their work ethic or they like to pick stupid hills to die on. Red flag?
I don't understand why people complain about leetcode so much when it's such a low bar to clear. A lot of people want $400k/year jobs at Goldman, but Goldman won't hire you unless you went to Harvard or Wharton. Shouldn't people be glad that they work in an industry where the only barrier standing between them and a $400k/year Facebook job is a few hours of interview practice?
Here’s how it really goes, as someone that fails Leetcode tests and interviews software engineers . Sometimes you are just in a high-demanding position, taking classes on the side to make your engineering better IRL, or you have a family. Grinding Leetcode just has a bad return regarding improving skills . I usually just end up focusing on being better in different ways. The candidates I interview seem to have Leetcode figured out anyway and it’s starting to become a bad tell. I’m having much more luck sniffing out good people with systems design questions.
I am thankful that there is a "meritocratic" way of getting into these top companies. But I don't agree grinding leetcode is the way to measure such merit. I definitely don't agree that it's "just a few (or even a few dozen) hours" to prepare or that it's a low bar.
That said, I've come to terms with leetcode and coding interviews in general. If I ran a company or if I was a hiring manager with clout, I'd never hire people in such a way. But that's the current state of the game, and short of becoming the 99% shareholder of Google overnight, there is nothing I nor most people can do to change a thing. So might as well play the game and try to win it, instead of just whining about it.
The irony is, I enjoy solving leetcode problems now. It's actually become my hobby - since all my free time outside of family is consumed by studying for interviews. But I don't enjoy whiteboarding hyperoptimal leetcode solutions under 45-minute interview pressure.
> But I don't agree grinding leetcode is the way to measure such merit.
I think it's a much better way of measuring merit than people give it credit for. It measures a mix of problem solving ability and work ethic (it's not purely about innate skill, you can get much better at it through practice so it's also a test of whether you're willing to work for career advancement), both of which are probably things you want to hire for. You can also easily ratchet the difficulty of these things up or down depending on how selective you want to be when hiring. People complain about how "unrealistic" leetcode problems are but there's no intrinsic reason why the interview has to exactly replicate the job, it just has to be correlated with traits that are useful for the job.
But what about...actually doing good at your job? Yes, you can BS about your actual job and accomplishments, hence why coding interviews supposedly exist. I acknowledge that.
But then - why do anything more than the bare minimum at your job to get by while devoting the rest of your time (including any downtime during your job's working hours) to study leetcode for interviews instead? At least until you get into an "endgame company" - FAANG or otherwise, where you feel comfortable staying a while.
Disclaimer: I actually do this to a certain extent - and I am not proud of it. In fact I am downright ashamed of it and angry at myself. It completely goes against my ethos of being the best engineer and best professional I can be. Which is how I worked when I was younger and more naive. But excelling above and beyond at my real, actual, work, will not get me anywhere, at least where I am now. I want to get into such an "endgame company" so that I can do my best work again.
> But then - why do anything more than the bare minimum at your job to get by while devoting the rest of your time (including any downtime during your job's working hours) to study leetcode for interviews instead? At least until you get into an "endgame company" - FAANG or otherwise, where you feel comfortable staying a while.
That sounds pretty healthy to me. If other companies want you to do work instead of leetcode, they should pay competitively.
> Also, if someone refuses to spend a few dozen hours practicing leetcode to get a 6 figure pay rise then either there is something seriously wrong with their work ethic or they like to pick stupid hills to die on. Red flag?
I have only once in the course of my 18-year career received a six-figure (barely) pay raise. It was one of the few occasions where I did not need to cram dozens of hours of Leetcode.
> the only barrier standing between them and a $400k/year Facebook job is a few hours of interview practice
There is a hell of a lot more than a few hours of practice standing between a candidate and a $400k job at Facebook. A $200k job, sure.
Also, you went from "a few dozen" to "a few" here.
Yeah, I'll play the game if I have to (I feel fairly safe in my job because I'm good at it).
> being willing to put in effort into interviewing to progress in your career and being willing to put in effort into doing your job to progress in your career,
I don't think many of the skills I've picked up in my career apply to interviews. I think they would be great skills that carry over to other companies, but I'd have to exclusively practice leetcode to feel comfortable with interviews. That's a problem in my book, because I have a lot more to offer than "Yeah, I can do leetcode problems all day."
I don't know--I think I'd rather do some very hard thing once in my life (like graduate from Wharton or pass a bar exam) and have that be the ticket to ride, rather than have to grind Leetcode perpetually to stay on the train.
I can't imagine a lawyer having to grind LeetLaw for months every time he wanted to do a job change.
What if you couldn't get into that elite law or business school for whatever reason? Your door to the elite law firm could be closed, permanently.
The lawyer probably doesn't have to refresh the fundamentals of law and grind legal cases constantly, but then again, the lawyer in the small unimpressive law firm likely has no chance, ever, to get into a top law firm.
The line of business .NET developer at some unimpressive non-tech company can grind leetcode and get into top companies.
I hate the means to which makes this possible (grind leetcode) but I would pick the option of having upward mobility any day.
I think you're right and I sincerely think that this gets easier with time. Practice makes perfect and subjecting yourself to the process on the regular makes it less stressful when you actually need it to go well for you. In an unforgiving sense, I simply believe this is part of the job. I'm not saying it's right, but it is what it is.
Personally, I interview at another company every 6-12 months. It's not so often as to be a significant burden, but it is frequent enough to be a reality check if I'm getting rusty or if employers are starting to expect more of me (because my seniority is increasing). Recruiters are so busy trying to find bodies you're unlikely to burn any bridges by just going through the motions to see if you're a fit. Hell, I have an ongoing relationship with a Google recruiter that I talk to every other year or so just to see what's up--I've never worked for Google, but I have interviewed there a few times, a few times with success and others without it. Worst case, they don't give you an offer and you walk away with an understanding of what your weaknesses are. Best case, you get an offer and maybe it's a better one, you now have a better job.
I don't know - I've encountered leetcode interviews all over the place these days.
The only exception might be more recent front end interviews, which seem to do "code X in JS" questions more. But ironically the more prestigious companies like FAANG seem to do this more, while the lower tier companies are still leetcode for front end engineers.
I usually work many years at the same job. I think its worth talking to agents and applying for jobs each year even if you wont move, its a good way to keep track of the market and realize where you're behind, before you need to look.
Seems the best way to avoid long term unemployment in this day and age is to be "coding interview ready" constantly.
My best friend at a FAANG always tells me he dreads having to look for a job ever again - whether voluntarily or involuntarily, as he is in no way shape or form ready for coding interviews.