Hacker News new | ask | show | jobs
by rhelz 821 days ago
Not to put too fine a point on it, but...out of a thousand applicants--who presumably had college degrees/and or years of experience programming for other companies--there just has to be some who would have been successful at your company. I mean, if you lined up 600 random people grabbed from off the street, you'd find 6 to 10 of them with a genius level IQ.

In fact, you'd have a good chance of finding somebody smarter than anybody in your company. You are obviously filtering too much.

And it would be one thing if the system merely filtered out too many good people, but the ones the system let's pass are not the ones you are looking for! Its bad in every possible way a filter can be bad--filtering out what you want, and letting through what you don't want.

> disqualified for not meeting the basic requirements

What is a basic requirement? If a basic requirement is something like "5 years of Java experience" its filtering out topflight c++ and c# programmers. Good programmers can make anything work; bad programmers will remain bad programmers no matter what programming language is used.

> dozens interviewed

Over my 40-year career, programming interviews haven't changed at all, basically testing how much of corman, leiserson, and rivest you have memorized, and how much oof the book "Cracking the Coding interview" you can regurgitate.

That was ok 40 years ago, when programming was largely creating new systems from scratch. But these days, with all the frameworks, not so much. There's 40 more years of infrastructure which has been created, and to be a successful programmer, you need to be able to leverage other people's code. But who interviews to test that skill?

Again, the fact that the one person the system let through didn't thrive in your company just screams that it is not testing for what you really need. Such a "stringent" process shouldn't be a point of pride.

7 comments

> Over my 40-year career, programming interviews haven't changed at all

I think they've gotten worse actually. A lot of times they're led by 20-somethings that are looking for only the skills that are limited to their own shallow experience.

"Oh so you wrote compilers in C? Too bad, we're coding node.js here. Have any experience with npm?"

https://en.wikipedia.org/wiki/The_Market_for_Lemons

> Akerlof examines how the quality of goods traded in a market can degrade in the presence of information asymmetry between buyers and sellers, which ultimately leaves goods that are found to be defective after purchase in the market, noted by the term 'lemon' in the title of the paper.

> Akerlof's theory of the "Market for Lemons" paper applies to markets with information asymmetry, focusing on the used car market. Information asymmetry within the market relates to the seller having more information about the quality of the car as opposed to the buyer, creating adverse selection.[1] Adverse selection is a phenomenon where, buyers result in buying lower quality goods due to sellers not willing to sell high quality goods at the lower prices buyers are willing to pay. This can lead to a market collapse due to the lower equilibrium price and quantity of goods traded in the market than a market with perfect information.

Yes, but we can't possibly interview 1000+ people, so we have to filter it somewhat based on what they give us: their resume. If you can build me a tool that can find in a stack of 1000 resumes a genius then I'd like to start a company with you and we can make a lot of money together.

Basic requirement is at least 5 years of professional experience. Most of the people who apply don't have that. Then after that, a large number of people who make it to the coding test can't pass the first basic test, or struggle through it: generate a random string using only the standard libraries. If you can't do that then you are not a senior developer. Or they appear to be using ChatGPT and cheat through the test. etc. etc.

And memorizing algorithms wouldn't help you pass our assessment, it's actually easier than that in my opinion.

> If you can build me a tool ... I'd like to start a company with you and we can make a lot of money together.

If you can't tell how good a programmer is by his resume, then....why the hell does everybody use resumes to try to do it???

The kicker is you can't sort good programmers from bad programmers by keyword filtering. Asking for specific languages, or specific frameworks, is a particularly egregious sin. If one of the magic keywords is "nodejs", you'll filter out that guy who has been using javascript + PHP for Facebook for 10 years. That guy is not going to have any trouble picking up nodejs.

If "5 years experience" is a magic keyword, you'll filter out all geniuses who decided that 4 years at Amazon is enough for anybody and wants to make a move.

So, if you are a genius, and you are one of the 1,000 people who applied, what are you to do? If your resume is pre-filtered by keyword, there is a HUGE incentive to put those keywords in--at least their resume would have a chance to be seen by a person, and its not like he'll face any repercussions for it.

Its a classic vicious circle: companies are too picky on the requirements, which prompts applicants to fudge on their resume--which prompts companies to be EVEN MORE picky in their requirements, in desperate hope that if they just put enough keywords in, they will only get the resumes they want. The industry has got to break out of this cycle.

> wouldn't help you pass our assessment,

I hate to put it in such stark terms, but if your assessment is ruling out good programmers and letting through bad programmer(s), its worthless. You need replace it with something that actually works.

> If you can't tell how good a programmer is by his resume, then....why the does everybody use resumes to try to do it???

I'm wondering at this point if you've ever hired for an engineering position before...

Lots of assumptions here, but we don't use keyword filtering.

> you'll filter out all geniuses who decided that 4 years at Amazon is enough for anybody and wants to make a move. Geniuses with 4 years of experience are probably working at Google for 400k+ salaries and are outside of our hiring range.

You have to prioritize time and when you get 500 people with < 5 years experience and 499 of them are not geniuses, it's not easy to find the needle in the haystack.

> I hate to put it in such stark terms, but if your assessment is ruling out good programmers and letting through bad programmer(s), its worthless. You need replace it with something that actually works.

It's a difficult balance because if it's made easier then it lets through more bad ones and if it's made harder it potentially filters out more good ones.

> lots of assumptions

Well, I'm not a mindreader, so perhaps you are right. Can you at least help me clear up the bad assumptions, and tell me, if resume's are not giving you the information you need, why are you using resumes?

> we don't use keyword filtering.

If your policy is to reject anybody without nodejs experience, you are using keyword filtering. It is what it is man.

> filter out more good ones.

I have sympathy here; its not clear exactly how to improve the filter, but if you reviewed 1,000 applications and found nobody, its impossible to filter out more good ones :-) There's no change you could make which would filter out more good people.

> You have to prioritize time

I have sympathy here too :-( Honestly, I can give you guesses as to how to improve, but I have no clue. Its one of the reasons I didn't go into management: I didn't see any way of doing it any better than it was already being done. You wonder if I've ever hired for an engineering position: no, I haven't, because I didn't think I'd be able to do a good job of it.

But one thing I do know, is that if a system isn't working, it needs to change, whether you know exactly how it should be changed or not.

Resumes still filter out "bad" candidates. "Good" resumes just doesn't actually mean someone is good. Like I said, plenty of people with 20 years of experience who can't do something a junior developer can do easily.

I agree the system needs change but I don't have the answers for how to change it, hence why I said it's the million dollar question. Best we can do is try to make improvements.

I hate to only complain if I don't have any ideas on how to fix it, but just think of the absurdity of the situation we currently have: thousand of employers are frustrated because they can't find any programmers, and thousands of programers are frustrated because they can't find a job.

Getting a job is a core skill requirement for programmers, and finding programmers is a core skill requirement for companies. Its really hard to believe that this is the best we can do.

> Resumes still filter out "bad" candidates.

I really hate to try your patience, you've been a great conversation partner here. But I put it to you, all those thousand resumes did you absolutely no good. I mean, there's probably something I'm missing, because I don't know the particulars of your situation.

But from what you've said, all the effort and expense you put into screening those thousand resumes, and all the effort and expense put into interviewing them, did you no good. Expensive, time consuming...and ultimately yielding no value at all. I really hate to put it into such stark terms, but man, things gotta change. Even if you don't know how to do it, you've got to find somebody who does who can give you some good advice.

The applicant pool is not randomly selected, though. The 6-10 randomly selected geniuses are likely all happily and productively employed elsewhere, there's a competitive filter against high-level talent that you have to also get through.
> there just has to be some who would have been successful at your company

Interviewing 600 candidates is incredibly expensive.

And no, you can't really filter by the resume alone. The candidates you don't want have become masters at forging credentials.

My take is the reason why there is such an emphesis on specific experience (and not just being smart) is modern web apps today are very sensitive with a slew of libraries and frameworks built on top of each other, in a multiservice environment each with different flavors of technologies. Someone coming in fresh without any experience with all of the libraries and tech are just not going to success.
No doubt you have carefully curated and assembled the stack you have because it gives you a competitive advantage. But everybody else is also trying to get a competitive advantage, so nobody is going to have exactly the same stack, used in exactly the same way, as any other company.

Its true, programming has changed: we are building on top of frameworks and incorporating services today, and not doing so much development from the bare metal. But that doesn't mean that you can't hire anybody who isn't a clone of you: it means that the we have to train ourselves to have the ABIITY to just jump into a new stack, at a new company, and quickly familiarize ourselves with it.

THAT is the key skill going forward. The crucial skills are not can you remember how red-black trees work, or how to use dynamic programming to implement this algorithm. And its not whether they can put the right keywords on their resume. It's can somebody dump 100,000 lines of code in your lap and have confidence that you can handle it.

And also, if somebody can't join your team and be productively "plugged into the matrix" in a few weeks, that means your stack has some architectural problems: lets face it, even code you wrote 6 months ago might as well be brand-new code to you. The code base has to be such that it's easy for people to quickly read it and figure out what is wrong and how to fix it.

Otherwise, even people who have been there for 10 years using that exact same stack are not going to have any success.

New hiring process: sample 600 people from the population at random, administer IQ tests, hire highest scorer. Voila, only geniuses!
Is there any evidence that would be worse than the way we're doing it now??
Literal random hiring would probably be better than what the industry does now.
None whatsoever!!
A lot of technical interviewing is thinly veiled IQ testing