Poll: Is the leetcode grind necessary to land a high paying remote job?
297 points| throwawaynay | 4 years ago
I've worked for 4 different companies, for European salaries, without doing any leetcode type interviews(I ditched any company that was doing it), it was either take home tests about real problems, technical questions, or sometimes just trust in my abilities given my previous experiences.
I've never really trained for leetcode(or not consciously at least, I did do a bit of algorithms/data structures of course), mostly because I know that I would panic and perform poorly in this kind of interview, so I don't really see the point of practicing for that.(it's not really about whether or not I can solve a hard leetcode problem, it's about if I want to do it live in front of a recruiter, it make me anxious just to think about that and I don't want to inflict that on myself), I'd much rather have a hard take home test than an easy leetcode interview.
+If I have to spend a few hundreds hours of hard work on something I'd much rather work on an useful and potentially profitable side-project, rather than on pointless problems already solved thousand/millions of times.
Do you think grinding leetcode is an absolute necessity to land a good job at a company hiring worldwide remotely? I'd be aiming for salaries around 80-100k$. In my country the only companies paying that are FAANGs.
Thanks for your answers
[+] [-] cebert|4 years ago|reply
I’ve been a software engineer and now architect for 15 years. Studying leetcode like problems won’t help me at my current job or a future employer once I get past their interview processes. What leetcode does do is make it difficult for minority candidates, those with external obligations, or those with families to get into firms. For example, I work 50+ hours a week with two kids and a parent with cancer. I work hard at work and have a lot of external obligations. I don’t have time or to study leecode problems.
[+] [-] snth|4 years ago|reply
[+] [-] Dave3of5|4 years ago|reply
The companies making you do this though likely don't want someone like me. They want someone young who will burn themselves out working 80 hours a week for them.
So I guess it's a good filter for me as well.
[+] [-] qwytw|4 years ago|reply
[+] [-] rmah|4 years ago|reply
Our firm has every candidate take a quiz of five coding problems. Two of which are quite easy and the remainder a bit more difficult but none of them even approaching "leetcode" levels of difficulty. Even so, let's just say that most candidates don't do very well.
[+] [-] gameswithgo|4 years ago|reply
However I have seen the "leetcode" process defeat discrimination at least once in my career, when HR was assuming a black guy was not qualified but he was able to prove himself on the white board.
There are plenty of good critiques about the whiteboard process, many of which I agree with, but this critique is silly.
[+] [-] indymike|4 years ago|reply
Perhaps. I've been building software for over 30 years and I still find that I learn a lot when I practice and push myself to work quickly and efficiently.
> If you haven’t seen a particular problem before or had time to research it, it’s unrealistic to expect a candidate to solve it in twenty minutes in a high pressure situation.
Someone just slipped a bug into production. We now have $12,399 per minute in transactions that will not be processed. CEO needs a report for a board meeting in 20 minutes. Junior dev didn't show up and four team members were waiting for the commit he was supposed to have in yesterday. Dealing with high pressure problem solving is really every day, and practicing against the clock is a great way to learn to be calm and focused when it matters.
> For example, I work 50+ hours a week with two kids and a parent with cancer.
So sorry that you are dealing with cancer in your family's life. Cancer sucks.
[+] [-] 300bps|4 years ago|reply
Then they go to Harlem to ask people what they think of those comments.
https://youtu.be/yW2LpFkVfYk
As for your claims themselves, In 3 months I studied 350 hours to pass the hardest test in finance while I was married, had three young children and worked full time. Nobody has time to do the things required to advance your career. You have to make the time.
For years, I also recruited and mentored students from an inner city bootcamp near me where the students spend 80-90 hours per week for 12 weeks learning software engineering. The vast majority of students are minority and there is fierce competition to hire graduates by local companies.
[+] [-] cageface|4 years ago|reply
[+] [-] dokem|4 years ago|reply
[+] [-] _Understated_|4 years ago|reply
I read that to mean that the tests are geared towards white candidates! Is that really what you mean? Coz I can't wrap my head around that!
[+] [-] rightbyte|4 years ago|reply
I guess 'poor [edit: low on money] candidates' would be more precise.
[+] [-] murph-almighty|4 years ago|reply
I think this partially explains the phenomenon of external candidates at Google entering Google at the college-hire tier when they may have been repeatedly promoted at their prior employer. Of course the comp is usually more so it's not a big deal...
[+] [-] indymike|4 years ago|reply
So, I gave a few interviewees a code test, and they failed miserably. Mind you, nothing hard - it was a test can I give you a simple function to write, and can you 1) declare a function or class that accepts the right inputs, 3) does what the spec asks, and 3) has the correct output format. The test took 10 minutes to an hour, and was totally open book. The result was pretty staggering. 2/3 of developers would fail the test, and not for esoteric reasons. They would fail because they used the wrong boolean operator, make simple type-casting mistakes, or fail to return data in the correct type (i.e. return a string and instead return a bool or an int). When they failed, it wouldn't be just one thing, it would be two or three mistakes.
So, now I code test everyone, and it has nothing to do with your salary. If we expect you to program in your job, we will verify that you can actually string together 10-15 lines of code. I've only had a handfull of applicants call the test leetcode (I think it's a lot simpler than that), but the reality is there are just a lot of people who can't really code out there.
[+] [-] Draiken|4 years ago|reply
We hire with a similar setup, but we try to keep the test extremely simple and close to reality. Something they would likely encounter on their day-to-day.
The majority of the developers fail at it. Senior, mid-level, juniors, etc. It doesn't matter. Which always surprises me. People who claim to have 5-6 years of experience can't even refactor some code. Or they can refactor and can't explain why they'd do it. It's bizarre.
But I would never classify this as leetcode because these are common tasks that any developer should be able to solve and not purely algorithmic questions that will rarely (if ever) be used in real life.
[+] [-] seanbarry|4 years ago|reply
- multiple "senior" data scientists who cannot write a function definition in python
- a "senior full stack engineer" with 5+ years of web dev experience who took 20 mins to change the width of a div in a web app
- many "mid/senior level" full stack engineers who don't know the difference between sync/async, or have any clue about how the JS event loop works
There are so many candidates out there who have what looks like impressive CVs, but can hardly string a program together.
[+] [-] phphphphp|4 years ago|reply
There is of course a possibility that someone has rehearsed their interview happy path down to the word and they can easily describe complex technical concepts without understanding them because they're quoting a script, but an interview that can be gamed in such a way may highlight a problem with the interview.
If most of your interviewees are failing to write basic code, the issue probably isn't the applicants.
[+] [-] jrochkind1|4 years ago|reply
[+] [-] throwaway2037|4 years ago|reply
Deeper question: Did you think about why some people are able to "show me things you've built, tell me how this function you built works", but fail miserably on a straight-forward coding test?
Sometimes, during an interview, it seems obvious the person is very intelligent, but having a bad day. Some part of interviews is pure performance to me.
[+] [-] haspok|4 years ago|reply
Here in Europe this sometimes happens (candidates can't code at all), but _very_ rarely, maybe 1 out of 100? Especially as you move eastwards, the base coding abilities start to improve massively for the average candidate - in the UK, if you are stupid you can easily get by on the social welfare system, in Eastern Europe, if you are stupid, you starve. As simple as.
There was a time I used to ask Fizzbuzz-style warmup questions on interviews, but then I stopped because the signal it gave was pretty much useless. The only positive case I can remember was when a tester applied for a dev position.
[+] [-] rr808|4 years ago|reply
[+] [-] wnolens|4 years ago|reply
I'm generally more a fan of keeping skill-based examination too, but making it very easy and language agnostic. Harder than FizzBuzz of course, but nowhere close to dynamic programming.
Ideally, if a candidate has never seen it before, a basic tree traversal is enough. But since 100% of people have practiced that before interviewing, I invent a problem by ripping out a little piece from the codebase I'm working on. It usually amounts to.. Show me some clear control flow, factor that code into a subroutine, iterate over a collection and call that subroutine, contemplate the performance characteristics in a discussion (not bigO complexity, more so consider the I/O device..caching..)
[+] [-] nopenopenopeno|4 years ago|reply
[+] [-] hiq|4 years ago|reply
I recently got that question after a homework with about 200 lines of python written. If I had failed at this question, the company would have concluded that I had somebody else do the homework for me, so I understood where they came from with this.
[+] [-] unknown|4 years ago|reply
[deleted]
[+] [-] gverrilla|4 years ago|reply
[+] [-] AlwaysRock|4 years ago|reply
I cant say its perfect... But they have a really great Clojure team and everyone else seems to have a difficult time hiring for it. They IPO'ed last year too...
[+] [-] chrisweekly|4 years ago|reply
reality is there are just a lot of people who can't really code -- IN THE ARTIFICIAL CONTEXT OF AN INTERVIEW - out there.
FIFY.
[+] [-] evanspa|4 years ago|reply
I guess where I'm going with this is, maybe change your thinking about leetcode? Don't think of it as a necessary evil in order to land a high paying job that you dread doing each night; look at it as a fun little hobby, with the nice side-effect that you're keeping your data structure knowledge, algorithms and general problem solving skills sharp.
[+] [-] torginus|4 years ago|reply
The counter arguments often mentioned against Leetcode I often hear:
- You are often asked stuff that took PhDs years to figure out: This usually shows up only in Hard questions, and badly designed ones at that. In my experience, Medium ones are usually solvable with solid algorithmic knowledge. It is also usually that maximum difficulty people encounter during their work.
- It discriminates against women/minorities: I don't live in a very diverse country, so I don't know anything about the minorities part, but in my career, I've encountered plenty of women who were as good or better than men in solving algorithmic issues. It does filter people, because it's designed to filter people, but I've never found it discriminatory along gender lines.
- It discriminates against poor people: You're a programmer, you are not poor. Even if you were, the few weeks of time investment it requires is usually offset by the higher salary you can ask for. Think of it as an investment in your future. Or if you are not a programmer, the amount of skills you need to learn to get your first programming job is usually far excess of just learning leetcode.
[+] [-] Nextgrid|4 years ago|reply
Beyond that is a bit tricky. It's not impossible, and you can land a high-paying job at a startup or established non-tech company (established tech outside of FAANG is usually terrible pay-wise) through your network or recruiters, but the workload might be higher.
The advantage of FAANG is that beyond the initial LeetCode grind and the relative mundaneness/uselessness of the work (are you really passionate about littering the world with even more advertising?), it being such a huge company means that once past the initial grind you can lay back and still enjoy a very good paycheck for lower effort than in a smaller company which actually produces useful output beyond advertising.
[+] [-] me_me_mu_mu|4 years ago|reply
Leetcode is literally gatekeeping to boost the egos of people whose entire identity is that they work at a FAANG. You have probably met such people - I remember these types from high school and college who could memorize a bunch of shit and regurgitate it. Beyond that, I've found maybe 25% of them are good team mates/leaders. They go home, update their bios to read "Stanford CS, Ex-Apple, ex-Meta, now Noogler", and hang out with other similar types.
I've been on interview panels before, and while I prefer administrating the systems design interview, I've also had to administer coding. The way it goes is like this - half have this stuff memorized because they took a FAANG interviewing bootcamp or spent 6 hours a day for 3 months grinding leetcode. The other half are split into another half - one half that struggles but manages to do decently with guidance, and another half that just fails outright due to nerves, lack of knowledge, etc.
Here's the weird, anecdotal experience though - of the people who absolutely kill the coding interviews, maybe half will do well in systems design. They struggle at explaining concepts on the fly, or cannot come up with reasonable solutions. Maybe it is a lack of imagination, because I really do think a lot of people just memorize and get ahead. Then they hit a ceiling, or fly just at the max ceiling while boasting "ex-Facebook, ex-Apple, etc."
[+] [-] quanto|4 years ago|reply
That said, I have seen that even those firms without rigorous leetcode rounds have mini-leetcode questions during onsite that are the easiest of the easy leetcode problems; e.g. find the sum of an array of ints, find a duplicate item in an array, etc. So, I don't think you can avoid these questions completely, but at the same time, summing up an array seems like a fair sanity check for dev applicants. I saw one programmer (PhD!) from a Top-3 school in Europe that could not find a maximum value in an array. So, yes, some sanity checks, but I don't think this is what you are concerned about.
All those examples I mentioned above pay above (some well above) 150k USD TC.
[+] [-] golondon|4 years ago|reply
There are eng offices of soon to be IPO'd startups such as Stripe or Intercom in London, those don't ask something you don't do in your day to day job, however comp at this stage would be base + maybe bonus + stock options. You can never know when that stock option will turn into something, so in a way it's even worse than lottery, at least in lottery you know the date to check if you get rich or not.
There have been few IPOs from London startups like Deliveroo, but I would say they perform pretty badly and things are not going well for people who relied on the return from there.
So, I would say Yes to this. Unfortunately.
[+] [-] Nihilartikel|4 years ago|reply
Leetcode probably has value - but the real value isn't in your scores. The scores are a heuristic grade for algorithm capability maybe. And it makes sense that hiring parties would take it into consideration. The real value lies in what you learn from completing the challenges. I don't think there's much value in being able to 'invert the binary tree' or implement a hash table from scratch. Nobody should do that professionally unless they're trying to push ahead the state of the art in that field.
BUT knowing about algorithm X,Y,or Z, and its performance characteristics and having that in your toolbox to solve real world problems is the difference between an engineer that spins their wheels for a week before solving a problem badly, and one that doesn't break a sweat making a correct and performant solution. A portfolio of algorithms and their strengths in you're 'inmem cache' is crucial if you want to move to roles more advanced than hocking json blobs between the frontend and DB.
I consult and typically find myself working on problems that the in-house team hasn't been able to work out, and very often I walk in on messes of nested loops and O(n^3) functions, when all it would have taken is judicious use of a Heap here, a Dict there (it's surprising how often a linear search over a list rather than a O(1) hashtable is used in some circles), or maybe a Trie or two. These aren't esoteric academic things, they are the abstract building blocks needed to solve real problems.
So, I digress, but: use LeetCode, work on open source, build challenging things and hang with a crowd that knows more than you and watch what they do closely.
Seek to grow your power and capability, not your credentials. If you grow as a developer then the credentials will come automatically. And if a potential employer can't tell the difference between a stone-cold competent programmer and somebody who just has a lot of acronyms on their CV, then they probably don't have much to teach you anyway.
[+] [-] andrew_|4 years ago|reply
The result in a 40% increase in total comp and having worked for some very high quality folks and with extremely pleasant folks. My job satisfaction has never been higher.
[+] [-] jermeh|4 years ago|reply
I do not believe that "grinding leetcode" is at all necessary. However, familiarizing yourself with online "IDEs" and the skill of solving (relatively simple) problems quickly while communicating your thought process is necessary.
That being said, I would do a handful of Leetcode-type questions on your own time. Don't aim to solve as many as possible or even bother to hit the hardest questions. Most questions I received were actually pretty simple algorithms that any dev could handle. IMO it's more important to be comfortable in the environment, and be able to communicate well to your interviewer if it's live than to be able to come up with perfect solution instantly.
The better companies I interviewed with made the live coding portion a small component early on, basically as a screen for basic coding skill. After that, the most important parts were design, discussions on previous projects, and behavioral interviews.
[+] [-] bloat|4 years ago|reply
Is it:
a) Having a good score on the actual leetcode website as a prerequisite for an offer/interview.
b) Using the actual leetcode website to practice for a technical interview?
c) Practicing some other way using leetcode style data structure and alogrithm problems. e.g. working on the Cracking The Coding Interview book.
Personally I've never seen any recruiter or interviewer mention leetcode by name. But I've certainly been asked to practice leetcode style problems.
[+] [-] yaseer|4 years ago|reply
Plenty of startups don't have leetcode-type coding interviews in their culture, and the job market is such that $100k remote salaries are widespread.
No, the leetcode grind is not necessary in this job market, particularly if you apply to startups rather than FAANGs.
[+] [-] Nextgrid|4 years ago|reply
Edit: in my figure above that's 80k pounds but from my perspective it doesn't make a big difference for someone living here whose living costs would also be paid in pounds and the prices of most goods (in terms of the number, ignoring the currency) equivalent to the US when you'd expect it to be cheaper given the value of our currency being higher.
[+] [-] dools|4 years ago|reply
[+] [-] rightbyte|4 years ago|reply
[+] [-] k8sToGo|4 years ago|reply
[+] [-] kragen|4 years ago|reply
[+] [-] jstx1|4 years ago|reply
A: No, you can get a good remote job without it.
---
Q: Is being good at leetcode-style problems necessary to land a job at certain companies (like the FAANGs you mentioned but others too)?
A: Yes, you'll need to be good at these problems.
---
Q: Is "the leetcode grind" necessary to get good at these problems?
A: It depends on your background, on your current level and on how well you want to prepare.
[+] [-] adithyasrin|4 years ago|reply
The alternative was to have system design and technical talks and it seems to work well. I wrote about my experience where we discussed about my side project as well: https://www.arbeitnow.com/blog/how-a-side-project-led-to-a-j...
[+] [-] agentultra|4 years ago|reply
So don’t feel as though you’re alone there! Even people who are good or decent at these kinds of puzzles will struggle to be successful in an interview situation.
That being said it is also possible to manage anxiety. The first step is to master the skill you need to perform until it is nearly subconscious. The less mental effort you can expend on solving the problems the more you have in reserve for regulating your anxiety.
The second strategy is to raise your tolerance for feeling anxiety. Don’t interview with the company you want to work at first. Instead prepare interviews with several smaller companies that you’re less interested in and would not be unhappy if they decline to send you an offer. That way you get some practice feeling anxiety without the disappointment or worry about failure.
The anxiety won’t go away entirely for nearly anyone. But if you work at it by the time you get to the interview for the job you really want you would be prepared to face the challenge.
[+] [-] ptnxlo|4 years ago|reply
No. Why? There are companies that know what they do, have a good founding/income and they're willing to pay well if you can make a good impact in the company.
What does it have to do with Leetcode? Nothing. They can give you a development assignment when you're going to use technologies they use every day, the ones you're supposed to be used to and for problems they might be facing right now, saw before or they're expected to overcome probably soon.
What would a Leetcode interview give you instead? I'm all ears.
There are companies that send you generic Leetcode or any type of problems to solve in a couple of hours and you never see a face, nor know more about the business you're suppose to be working for the next time if you perform well (I'm looking at you Sumo Logic/Toptal). I wouldn't even bother if that's the case.
Leave leetcode and related just for newcomers and people learning CS. Isn't viable in most of the cases for day-to-day problem scenarios.
[+] [-] matthewowen|4 years ago|reply
Before I interview, I definitely spend a couple of evenings working through leetcode exercises to sharpen up on those kinds of problems. But it’s just that, a couple of hours to sharpen up working in that format - the foundation that lets me perform in the interviews is my existing skills in the field.
I actually think of it as akin to running - the thing that makes the difference is your base of aerobic fitness, but you perform best in a race if you spend some time sharpening for it.
I’ve generally not found coding interviews to be a barrier to getting good offers either on-site in the Bay Area or working remotely.
I’ve also never felt like the questions I face in interviews are totally out of alignment with the work I do. They’re not the entirety of the work I do, but they’re usually a decent distillation of the hard parts of some aspect of the “writing code” element of the job.
I also think people get way too hung up on them. At the on-site stage, honestly, I think more people fail on the more holistic system design and architecture problems than on the pure coding ones.
[+] [-] marcos100|4 years ago|reply
You have to weight those few hundred hours of hard work. You can prepare for FAANG interviews and earn 100k+/year or you can do your side project and earn ???/year plus your current job or you can improve your skills and resume and look for another non FAANG job that pays 100k+/year and doesn't use leetcode.
Clearly you have prejudice against leetcode style process. To participate it's better that you be neutral or at least acknowledge that it's part of the game that you have to play. You don't have to like it, but if your mind think it's the worst thing in the world, it'll be much harder.
I recommend you to up you linkedin profile and try to get some interviews around the world to get a feeling of what it's like. Do it without expectations, so that is doesn't stress you much.