8 ms·
I disagree with this take to an extent. Take it to the other extreme and you get folks who can’t even solve fizzbuzz. So some coding bar is good. Leetcode is a
by throwaway1777 4y ago
I disagree with this take to an extent. Take it to the other extreme and you get folks who can’t even solve fizzbuzz. So some coding bar is good.
Leetcode is a very learnable skill, and I would argue any decent programmer can learn it well enough to pass an interview. I for years thought I wasn’t good at it, then I actually practiced and I got job offers at google and Facebook. I have also optimized code quite a few times using algorithm skills I picked up practicing for interviews so it’s not totally a waste.
There is a limit though, and some companies are pushing it with absurd questions that you couldn’t reasonably solve unless you had seen it before.
In summary, algorithms are useful and learnable, but some companies take it too far.
- mikymoothrowa 4y ago> algorithms are useful and learnable, but some companies take it too far. This is my take too. So I don’t see where the disagreement lies. Except it’s not just some companies doing it. All companies paying over a certain threshold seem to be taking this to ridiculous levels. And please do share your ideas for what people should do or what finally convinced you that you weren’t bad at this
- anyfoo 4y ago> All companies paying over a certain threshold seem to be taking this to ridiculous levels. They can afford it. And assuming they are a tech company, they need that in key roles. You cannot write things that scale without solid knowledge and intuition in designing and analyzing algorithms, something that can be learned and furthered through experience. Now of course it's true that not every job in a larger tech company is like that, so there would be some room to adjust the interview based on the exact role. And there actually is. But overall, if you have a massive amount of people applying every week, why take chances, why not take someone from the pool who can demonstrate the skill and allow for some horizontal movement within the company, into a tech-heavier team? > And please do share your ideas for what people should do or what finally convinced you that you weren’t bad at this For me, back then, it was something that was fun for me. Part of why I got into computer science in the first place. I would be totally lying if I said I didn't study for the most relevant of my interviews, beyond what I would have done without them. But I distinctly remember for example freshing up some graph algorithm skills not by doing leetcode examples (I don't think "leetcode" was already a thing back then), but by arbitrarily taking the Debian package database and do fun self-made exercises like: Let's find the largest strongly connected component in the debian package library, i.e. the largest set of packages where installing one will always install all of the others.
- mikymoothrowa 4y agoI work at a mid-large tech company ~5k engineers. > You cannot write things that scale without solid knowledge and intuition in designing and analyzing algorithms, something that can be learned and furthered through experience. The point is not whether people need to learn algorithms, they of course need to, but that Leetcode questions seem to test people’s ability to solve riddles more than their ability to design algorithms
- granshaw 4y agoBingo – I've seen some of the interview requirements – like 20 mins to solve an LC medium, and you can only hit "Run" once so you have one shot...!?!? Basically if you weren't already familiar with the question and knew the trick you're screwed. Plus they're really blatant about it too – the recruiters will _actually tell_ you to practice LC, and to try again in 6mos/a year if you didn't make it this time!
- mikymoothrowa 4y ago> the recruiters will _actually tell_ you to practice LC, Here they do this before you even take the interview for the first time The recruiters actually email me all the leetcode prep material and tips
- granshaw 4y agoExactly, even before the first interview, that’s what I’ve seen too
- anyfoo 4y ago> The point is not whether people need to learn algorithms No, I said design and analyze algorithms, which is a distinct skill from "learn algorithms" (although that certainly helps). And which is certainly very riddle-like.
- nelsondev 4y agoTo second this point, part of being a good programmer means picking up new skills quickly, and then applying them. Leet code is very contrived. However, learning leet code, then applying it in an interview shows you have the aptitude to learn quickly.
- bialpio 4y agoThis argument can be used to justify forcing candidates to learn how to do double-entry bookkeeping (or insert other skill that you won't use on the job) just to see if they can learn. Yes, it checks if they can learn, yes, it is somewhat related to the area, but maybe there's a better way? I've been 10 years in the industry. If recruiter tells me I need to prepare for an interview in ways other than looking back at the projects I've done, then the interview is not testing for what is important on the job.
- NateEag 4y ago> I've been 10 years in the industry. If recruiter tells me I need to prepare for an interview in ways other than looking back at the projects I've done, then the interview is not testing for what is important on the job. Some people lie on their resumés. If they're good at lying in person, it can be difficult to detect that. If they're able to deliver working code of some kind under the pressure of a job interview, then they're almost certainly about to actually program at least a little, so you can trust me of what you see in their background and what they tell you about their achievements. I'm personally skeptical that leetcode really tests what most companies need in a programmer, but it's probably better than nothing.
- bialpio 4y ago> Some people lie on their resumés. My point isn't that I want to only chat about my resume - just that the problem you give me should be something I may encounter in the new job, ergo I do not need to prepare for that since my entire career prepared me for those (unless I want to reskill and the new job is different than the old one, then some preparation may be warranted). > If they're able to deliver working code of some kind under the pressure of a job interview, then they're almost certainly about to actually program at least a little, so you can trust me of what you see in their background and what they tell you about their achievements. Sure! But if the assignment is depending on stumbling upon a brilliant idea, instead of solving a problem that you may see in your day-to-day job, then I don't think it's useful. Think "trim a string" or "split a CSV" [1], not "find the longest increasing subsequence". And maybe also explicitly stick to ASCII encoding for string-based problems (but TBH, if a candidate asks about encoding, they probably know their stuff, or at least know where the gotchas are)... > I'm personally skeptical that leetcode really tests what most companies need in a programmer, but it's probably better than nothing. Agree that it's better than nothing. Disagree that we can't do better. :) Edit: [1] ... maybe w/o relying too much on standard library if those are built into the language you chose.
- ardit33 4y agoAt some point the metric becomes the goal itself. Ie. Leetcode style programing is/was used to filter out engineers that couldn't program. And the problems themselves were relatively easy, reverse a tree, build and LRU (which is not trivial at all). But then there is an army of prep information, and people are just optimizing for Leetcode style programing. Then companies have to raise the bar again, and keep asking even harder questions. ie. build LRU from scratch was considered hard, now it is just a 'medium' level. It has taken to stupid levels, where it is not anymore a metric of 'is this person a good engineer', but more of a 'how much this person did prep'. i.e. it becomes a measure of effort and desperation, and not just sheer ability. That's why you see so many stories, of engineers preping for leetcode only, getting in, and not being able to do their job and getting piped.... Also, personally, the best thing that I did to make me a better engineer was creating an app, a backend, and full service, with paying customers. That taught me much much more than spending months on leetcode ever did. Brushing up some CS concepts and Data Structures, and some coding, does help you to become a better engineer. But doing just that, it doesn't make you a truly useful engineer at all.
- mikymoothrowa 4y agoExactly! 10 years ago, I was a strong proponent of leetcode style questions instead of using college GPAs to hire engineers. It’s the ‘Cracking’ idea that has thrown this whole process off. People have started over optimising for the metric
- ghaff 4y agoAnd it may be worth observing that, as far as I know, this sort of thing is totally unique to programming. No other branch of engineering does it. I've certainly never had to do any unusual prep for an interview--though, admittedly, my handful of jobs since just out of grad school have all been through people I know.
- colinmhayes 4y agoHere's the thing, large tech companies aren't looking to hire engineers, especially juniors, who are great at being an engineer because that's incredibly hard to test for in an interview and almost impossible to scale fairly. They're looking for people who will devote their life to the company and can quickly learn new skills. That's exactly what leetcode tests for, so it really isn't surprising at all that every tech company does leetcode interviews. Really the answer is either commit to the grind or go for a job at a non-tech company.
- nowherebeen 4y ago> devote their life Sounds like they are trying to breed a cult...
- tfigment 4y agoThey are exaggerating but not all wrong. As hiring manager my job is not to train you for your next job. I'm hiring for productivity and that takes time. If you are going to jump ship before you "pay" back the company then I'd rather skip on you. There is no test but I want 2-3 years if you take 9 months or more to get going and I'd be foolish if I didn't want more. Lots of programmers think they are 10x but few are. Even my best senior engineers took 2-3 months to settle in and contribute more than they take and juniors are bigger gamble. The best proxy now is will you spend 1 hour on a simple set of tests, if not you are not serious or are shopping for counteroffers.
- filoleg 4y agoMore like, sounds like the parent comment you replied to has no idea what they are talking about. I worked across a couple big tech companies mentioned in the thread, and I've met maybe a couple coworkers at most who "devoted their life to the company". And that's across almost a 3-digit number of people i worked with in some capacity over the years. People take vacations often, they work 40 hours a week or less on average (over the year). One big thing about most teams at big tech companies (probably sans Amazon, from what i hear, haven't worked there myself) is the work/life balance being an important priority. We had a manager giving stern talks to the few teammates who would reply to work emails on their days off ("you left for a week of vacation in Hawaii, why are you replying to work emails or even brought your work laptop with you? Please stop doing that and enjoy your vacation, everything will be totally fine when you come back."). I don't even care to defend any company, that's their problem. But seeing the whole "cultism" and "expected to dedicate your life to the employer" accusations just make me feel like I am reading some alternate timeline fiction story.
- drewcoo 4y agoWoodworking is also a learnable skill that's completely unrelated to on-the-job activity. Why not ask candidates to build a desk? As a take-home project! If you're truly kind, you'll let them keep the desk even if they don't get the job.
- fshbbdssbbgdd 4y agoThe algorithm test is standardized. If you make up your own weird test, candidates won’t play ball. Personally I’ve turned down companies that had a strange interview process that required extra preparation. It’s not worth it when I’m trying to churn through a dozen interviews (without my current employer noticing). The leetcode prep process is unpleasant, but since I have to do it anyway, adding one more company doesn’t take any extra studying.
- spike021 4y ago> Take it to the other extreme and you get folks who can’t even solve fizzbuzz. So some coding bar is good. Sounds like the epitome of a slippery slope, to be honest. Some people are going to say FizzBuzz (or similar) are a good enough bar. More people are going to say 2Sum is a good enough bar. Even more people are going to say Longest Common Substring is a good enough bar. {...} And the cycle will continue, because people who will have been asked such things will (most of the time) feel like 1) they've been asked it before, so now they must ask it, 2) they can solve it and feel anyone can solve it (in theory this is fine but in practice, not everyone can solve a problem in 45 minutes that they've never seen or never fully solved before). Which reminds me of when I was going to college and I frequently had professors or TA's say X problem from the problem set is an "easy" one. Well, yeah, you're the professor or TA (for a reason) and you're the one giving it, of course you'd know how to solve it and such.
- roland35 4y agoI recently went through a round of interviews at big tech companies, and I found that the coding questions were less stressful than I was initially worried about. Leetcode problems are fair, and it just isn't true that you need to know the trick to pass. It allowed me to get in the door at a company I would have had no chance with otherwise (no CS degree, no top school, small no-name companies, etc) System design on the other hand... that can be hard to prep for! The reason companies provide so much info upfront, and even send candidates to leetcode.com, is so that everyone knows what to expect. Not everyone is on HN or is even aware of these types of interviewing trends.