Hacker News new | ask | show | jobs
by spectramax 1993 days ago
This statement is just sad "After a few weekends of furiously-paced Leetcoding".
3 comments

I don't think it's sad to prepare for the interview process. I see it this way - whatever you do at your current job might be very specific to your current tech-stack/product/problem-domain/team/company. When you're looking for a new job, you can't possibly learn the stack or problem domain of each and every company that you will interview with. In that sense it's great that you're assessed on more general skills like data structures and algorithms. Those few weekends of brushing up on skills you had anyway allow you to apply for a wide range of jobs. You then pick a new job and specialise in it until the next time you need to switch. Sounds healthier than most of the alternatives.
My girlfriend is an accountant. Almost universally, if someone ignored her degree, and wanted to run through a skills test, it'd be considered extremely insulting.
She also works in a field that nobody can enter without the necessary education and some additional professional accreditation. Software is a lot more open, without hard requirements for a degree and without oversight bodies. Maybe this is because it's a much newer field, maybe it's because the industry has been consistently growing for the past couple of decades and putting hard barriers to entry would have slowed down that growth. Whatever the reason is, I'm glad that we aren't at accountant-level yet.
Not true - you can gain accreditation (i.e. a CPA), and an employer can mandate a level of education, be it an Associate, Bachelor or Master, but (at least in our state) these are not _required_ to be "an accountant".

There are definitely those of us without formal degrees in software engineering, programming, what-have-you, too. But similarly, I can see some of these employers saying "Oh, you have a CS degree from Stanford? That's cool. How do you perform preorder traversal in a given binary tree? Whiteboard is over here."

> But similarly, I can see some of these employers saying "Oh, you have a CS degree from Stanford? That's cool. How do you perform preorder traversal in a given binary tree? Whiteboard is over here."

I'm not sure why you're putting this out there like it's a bad thing. Surely, we want all candidates to be assessed against the same hiring standards and not give some people a pass because of the school they went to.

Sad that this is what we all have to compete against.
Reply that I posted to another comment:

Why? If a person can learn bunch of algorithms and apply them to custom problems they probably can do quite a bit with computers. And it shows that they probably can learn new stuff rapidly as well. I don't get why so many developers hate Leetcode. I love it personally, I think it's great. And also, I think people are just lazy and don't want to learn new stuff so they whine instead. I don't think whining will help them.

>I don't get why so many developers hate Leetcode.

Because they think that the employer should recognize their greatness by just looking at their resume and having a simple conversation with them, instead of assessing them on some skill that they have to brush up on.

After being on the interviewer side myself recently, I think those people just don't realize how hiring actually works. I've seen some people with impressive resumes and who could bullshit their way around a conversation greatly, to the point where they make you believe they are one of those magic 10x-ers. And when you get to algorithmic problems, they struggle to figure out when or how to use a hashmap and cannot even do some super basic bruteforce parsing of binary trees or even know what they are used for.

Of course there are some edge cases where a great developer would fail a leetcode-style interview, but those exceptions are very rare and only seem to affirm the rule. I know that leetcode style interviewing is far from perfect, but I struggle to think of anything that would work better. A take-home coding project sounds like a great option, until you realize that each one of them takes about a week of working on it a couple of hours a day, which is an unacceptable time sink for any adult with responsibilities and who interviews at more than one place at a time.

There are more cases that get under your radar: good developers that won't suffer a coding interview. Folks that don't do well with someone looking over their shoulder and talking to them while they're trying to work. Folks interviewing for a job that isn't simple algorithms.

To be honest, most data structure wonks are great at scaling cloud services or massive middleware business logic. But not all programming is like that.

It's easy to fall into "If they won't do a coding interview, they have something to hide!" But it doesn't (only) work like that.

> Folks that don't do well with someone looking over their shoulder and talking to them while they're trying to work

I am one of those people myself, absolutely cannot do it. But interviewing isn't like that and shouldn't be. It is more like, cooperatively working on a problem with a colleague and then presenting and explaining it to your teammates. That's a pretty valuable skill at work, even necessary, I would say.

The whole "loner dev in his cave" stereotype, most of the time, just materializes in the form of a dude writing code that no one can understand or maintain, with a cherry on top being that dude not being able to effectively explain it to other people either.

Sure that's exactly the same thing. At least what I was talking about. Talk to me while I'm trying to get into the code, is like trying to talk to someone trying to write a book or balance a checkbook or really concentrate on anything at all. Re-casting it as simple cooperation is disengenuous. Sure you want to explain things to a teammate; that's entirely missing the point.

If I'm talking, if I'm listening to you, then I'm not coding. They are orthogonal activities, at least for me. Want me to 'talk you through' my design thoughts? Thanks for your time, goodbye.

> After being on the interviewer side myself recently, I think those people just don't realize how hiring actually works.

As an interviewer I've never had to give a coding test and I'm not about to start now. I've had people try and bullshit -- not really on purpose -- but asking specific questions weeds them out easily. Often times they don't even know they're failing the questions.

I have a less-technical manager come in on my meetings and by the end he could spot those people who failed without any knowledge of programming at all.

> Of course there are some edge cases where a great developer would fail a leetcode-style interview, but those exceptions are very rare and only seem to affirm the rule.

I did all this binary tree stuff in University decades ago -- I only have so much brain space and studying all this again is going to push out the interesting stuff I'm working on right now.

Leetcode focused on tricks and memorizing algorithms.

I've rejected a good bunch of candidates that can pass coding tests while not having any good understanding of theory, hardware, OS, networking, security

>I've rejected a good bunch of candidates that can pass coding tests while not having any good understanding of theory, hardware, OS, networking, security

Those are valid points, fully agreed. I think the discussion of those topics must be included in an interview process and discussed in-depth too, leetcode-style problems are not sufficient enough on their own.

>Leetcode focused on tricks and memorizing algorithms.

Strong disagree on "memorizing" and only partially agreed on "tricks". Those "tricks" (like knowing that you should use a hashmap when you need a key-value datastructure, or memoizing [aka caching] repeated operations) are very useful in real life problem-solving situations at work. I can tell you for a fact, I don't remember almost any particular problem from leetcode, and I ended up solving certain problems multiple times on leetcode, because I couldn't recognize them at all. However, thanks to leetcode, I obtained a pretty solid intuition on which approach to use in a particular situation, and it helped me out in the workplace immensely (even if I don't directly implement those approaches or remember the specifics 99% of the time).

So why not give a simple coding test? Talk through peoples thought processes. Giving leetcodes only reward people who have grinded leetcode. Grinding leetcode gets you better at solving leetcode and takes tons of time
> So why not give a simple coding test? Talk through peoples thought processes

What do you mean? That's pretty much what leetcode-style problems are during interviews. You get a problem with some theme, like "here is a list of airplane flights in an array composed of tuples, with the first member being origin, and the second being destination. Write code that would create full-blown routes out of those flight entries."

You ask questions, clarify constraints, come up with a few approaches, discuss with the interviewer pros and cons of each, decide to go with one, implement it while walking the interviewer through your thought process. And then you discuss limitations and edge cases, scalability concerns, how you would test it if it was a problem you were solving at an actual workplace, etc.

Leetcode-style interviewing doesn't typically refer to "we just pulled a random problem from leetcode, go ahead and solve it while I am standing over your shoulder, and we will check how correct the solution is afterwards." In fact, interviewers care way more about the thought process and your approach, as opposed to caring about your solution matching theirs. In fact, there were many cases where people ended up not solving the problem and passed the interview anyway, as well as cases where people solved the problem and ended up not passing. Because the process of arriving at the solution and the reasoning you took to get there matters way more when hiring (even if you didn't get there all the way to the correct solution), as opposed to just getting the correct answer. The fastest way to fail a leetcode-style interview is to sit down and write down the correct solution as fast as possible, without explaining your reasoning process or even anything at all.

because leetcode problems tune for a narrow set of jobs. many software jobs bear no relation to leetcode problems in practice. so the sadness is either that employers might be continuing interview processes that bear no relation to the real job (not always true, but also at least partially true), or that OP feels like he needs to grind leetcode to get a job, when he may have other practical skills and experience that would serve him better in the job search.
Yeah people are "lazy" in that they don't want to spend precious few free hours of their weeks grinding out a gimmicky skill-set that is at best tangential to the actual work they would be doing.

I understand there is no simple solution to how to hire software engineers, but you should be able to recognize why a lot of us don't like the current status quo of interviewing (even if you thrive in it).

> I think people are just lazy

Yep, that's me.

> don't want to learn new stuff

No, I like learning some kinds of new things. I read non-fiction regularly. I just don't want to practice algorithms.

Yes, this means I probably would be a failure as a BigCo employee.

I get what you're saying but in my view, it's more of a massive time sink. I think of it as having to spend many hours preparing for an exam. And I have to do this every time I switch jobs.

The algorithms and ideas do sort of stick to me somehow but I still have to repeat this silly exam prep over and over again. And it's sad because the truth is this part of the interview process has almost no relation to your actual job.

It’s arbitrary and takes loads of personal time. All leetcode does IMO is teach your arbitrary pattern recognition that helps you in leetcode.