Hacker News new | ask | show | jobs
by jrockway 2178 days ago
I think it's instructive to look at this from the other side to see why these processes exist. At my last job, I wanted to hire a frontend engineer with some experience beyond tweaking HTML and CSS (we used gRPC/Web and Typescript, so some actual programming experience was going to make them pretty productive, and that's what I was looking for).

Anyway, I wrote up a req and posted it to the usual career sites, and within a day, I had 500 resumes to review. About 490 of these had no real-world programming experience. They were all candidates from "boot camps", that, as far as I can tell, copied some example code into their GitHub and called it a day. (They listed each example project as "work experience", and many of the candidates had bit-for-bit identical repositories in their GitHub.) I would have been fooled if I had only seen one of these, but when you see hundreds of them all on the same day, you realize that investing in each candidate isn't possible. Even a 30 minute phone call to each candidate would have cost me an entire month of 8 hour workdays. Even a cursory review ("maybe this person actually did something other than the boot camp, let's look through GitHub") was excessively time-consuming. Even an email along the lines of, "sorry, we're looking for 5 years of experience for this senior position", is expensive.

So at that point, you have to somehow shift the cost onto candidates. It costs nothing to spam your resume to hundreds of companies, and I have no doubts that the bootcamps automate this process to some extent. That is why online coding tests exist. You have so many candidates in the pipeline that missing one good person is a cost that's acceptable for having to spend 30 minutes with someone that probably can't actually program. Is it impersonal? Yes. Does it suck for someone to be in limbo for forever because you are too lazy to write them an email saying "we're not moving forward with the process." Yes. But the submitting-resumes process scaled and was automated much more efficiently than the reviewing process. It's kind of like spam filtering now. (I get a ton of emails in my spam folder from people from HN that are email-blasting everyone on HN their projects. I get a ton of emails in my spam folder from people in open-source Slack channels that I read along the same lines. Is it unfortunate that I can't read and respond to every one of these emails? Yes. Does it suck that their "hustle" got detected by some machine-learning algorithm that has permanently blacklisted their company. Yes. But that is life -- attention is limited, a for loop that sends email isn't. So something has to give.)

I realize that it's confusing to say "we can't hire any engineers!" and at the same time throw 500 resumes into the trash can. But a resume is not equal to a hirable engineer. Anyone can make a resume. And, attracted to the high salaries of the software engineering field, many people do!

Anyway, I don't know what other fields are like, but I feel like the programming world is unique. You don't need extensive background -- university, internships, prior work experience. You can buy yourself a Python book and teach yourself everything you need to work at Google all by yourself. As a result, there are a lot of people that think they've taught themselves everything they need to work at Google all by themselves, but in fact can't actually do the job. As a hiring manager, your job is to filter the wheat from the chaff, and there is one grain of wheat in every ton of chaff. It's hard, and you're going to miss something. But, that is the world we built for ourselves. In other fields, there are other bodies in place that handle the filtering ("what's your Professional Engineer license number?"), but not in ours. As a result, the hiring process isn't as good.

I think we could do better, and I do appreciate people that I've emailed and wrote back "the process is over". But even that is hard to scale.

Internships seem super valuable to me. When I was at Google I had an intern every summer, and I basically dedicated my summer to teaching them everything they needed to know to be successful at Google or another big software company. Obviously, Google was 100% happy about this; I would go to weekly team meetings, say "all I did last week was spend days with $INTERN figuring out how to adjust build options for this new target" and the response was not "wow, you're lazy, get back to work" but "great!". Not every company can support that, though, which is why they're looking for people with experience. They want to pay money for getting work done, not pay money to have a senior engineer do no work for 3 months with the hope of someday having someone who can get things done by themselves. Again, it sucks, but that's how it is. Job training is EXPENSIVE. You can't always expect to get it for free. (That's why colleges exist, not that I think they do a great job.)

TL;DR: Practicing those coding challenges and how to write A* on the whiteboard is going to send a strong signal to companies that you're worth their time. It shouldn't be that way, but it is. "The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man." You have to ask yourself, do you want a job, or do you want to change the world. Changing the world is going to be a lot harder. Kind of sucks, but that's life.

5 comments

> You have so many candidates in the pipeline that missing one good person is a cost that's acceptable for having to spend 30 minutes with someone that probably can't actually program.

VERY debatable. I've chatted with dozens of HR and CTO people during the last 4 months of interviewing and looking for a job. They all complain "there are no good candidates". Without exception. (And I know you addressed that one paragraph below this quote.)

You're not wrong that selecting good candidates is extremely hard. I know it is. But the companies have to find a way to do better. I know many examples of world-class programmers being passed on by employers who, if they actually paid attention, would kill for them (and often times they contacted them anywhere from 6 to 18 months later, only to be predictably laughed out by the now-happily-employed person).

> That is why online coding tests exist.

Actually, it's why other high-salary professions have professional licensing and advanced degree requirements.

I 100% agree. I used to be in the boat of "I shouldn't have to study to pass a job interview" when I was younger.

Now that I'm older and I've interviewed a lot of people too, I realize sometimes life is un-fun and kinda sucks but you gotta do what you gotta do. There's a strong co-relation between people who spend two hours a night for three months studying algorithm questions and people who are willing to spend 8 hours a day debugging un-fun code. Which, more often than not, is what I need my team mates to do.

I work in AdTech. It's not particularly sexy. We don't have particularly sexy projects but we do have a large (millions of users per day) scale. A lot of our projects just require a engineer who has base level of experience plus a positive attitude and a slightly above average level of responsibility because we have to avoid outages. I need people to do work that is oftentimes not particularly fun but particularly important and revenue driving. My best filter, apart from actually having worked with the person for years beforehand, is asking a low-ball JavaScript "can you debug this asynchronous JavaScript" question.

So while the current system is frustrating, until we can figure out a best solution, unfortunately you just gotta play the game how the rules are laid out now.

This is all true, I just wish people didn't put that much weight on some pretty random and oddly specific tech interview questions.

I've practically [re-]invented Redis back in 2008 while working for a company, and wrote something very akin to the Google crawler bot in 2009 yet at some point 2 months ago I "fail" an interview because I didn't do the best possible optimization of a basic stock storage system that has packages at different weights (and valued in different currencies) and since I had to fit a whole mini web project in 2h I of course didn't pursue perfect optimization. But the thing was working pretty well and ticked all boxes that were required -- and perfect optimization wasn't mentioned otherwise I'd probably skip 1-2 features to achieve it and fit in the [arbitrary] schedule of the homework assignment.

And then boom, you are no good because of a hidden requirement and unclear communication which aren't my fault.

I do get your point. Really. But people put too much value on some pretty random questions / assignments as well.

pdimitar I totally feel you. For full context: I have never passed a leetcode style phone screen in my entire life. Even after studying for 6 weeks, every night for 2 hours and buying a couple of courses on how to pass coding interviews.

I've gotten my last few jobs and oppertunities by following co-workers from job to job. AKA doing good work and building good relationships with the people I worked with. I've been able to leverage these relationships to skip the phone screen at some of the big tech companies but still freeze up on the the white board interviews unfortunately in real life.

At the end of the day though I know what I have to do: Either study for 3 more months, stay where I'm at with my current pay, or switch careers entirely. Right now I'm leaning towards switching careers entirely.

At the end of the day though, if you've never worked with a person before, and your company doesn't do a good job firing people who aren't performing, I'm not sure of a better way to screen people in 45 minutes :(. And this is coming from the guy who's screened out himself.

There's _plenty_ of engineers out there. We're not special.

> At the end of the day though I know what I have to do: Either study for 3 more months, stay where I'm at with my current pay, or switch careers entirely. Right now I'm leaning towards switching careers entirely.

One person who wrote a Python book was spot on in their conclusion: "At one point you should stop working as a programmer. You'll get no respect and your pay will be mercilessly negotiated down. Better to start another business and utilize programming as a secret weapon."

(Grossly inaccurate rephrasing but that was the gist of the paragraph.)

Still though, maybe you are too shy for the brutal game of numbers and chance that job hunting is even for seasoned programmers. That's fine. But you should know -- there are a ton of really mature and interesting people out there who know how to recruit. But it's a fact of life that you rarely find them; more often than not, they find you. And that's not happening to everyone who needs such an approach (sadly).

If you feel you want to switch careers and can't bear the thought of working programming anymore then do it. But if you just kind of feel giving up because of bad interviews -- don't give up just yet.

And I absolutely agree: we like to think we're special but there are a lot of very talented people out there. Very few are actually standing above the crowd. I am fine being one of many though; we each bring our own flavour to the company and some of these flavours do bring serious competitive advantages. :)

I agree and sympathize with what you're saying. Coding screens are a necessary evil. But perhaps they can be omitted in certain situations. I know I completed the Google foobar challenge far enough to alert a recruiter, only for the recruiter to send me a snapshot test. Like c'mon, I just solved a whole slew of harder problems than this.

I wonder if companies like TripleByte are actually successful in solving this issue. I've avoided them because I'm skeptical of recruiting companies, but it might be a good idea to have people take one coding screen and have it apply to multiple companies.

I am sorry but this tells me exactly one thing: that you don't know how to write a job description.

If you have written your job description tailored to the ideal candidate you would have had a smaller candidate pool and a better match to the actual job.

Writing a nice description will help but only slightly. It was written here the other day: GitLab used to receive 15,000 resumes per month. I think their job descriptions are pretty good and precise. People use scripts to apply to hundreds of jobs blindly.

"How to Apply to All Jobs on AngelList (Script)"

https://alejandrorioja.com/how-to-apply-to-a-lot-of-jobs-on-...

Unless you somehow require proof that the applicant meets the requirements, I don’t see how that prevents the spray-and-pray applications.
This is not from an IT position, but my wife uses "mention word XYZ in the email subject" in the requirements. This filters out a few people who just spam their CV regardless of job description. It also filters out people who are applying to a job that really requires attention to details in written communication.