83 comments

[ 3.2 ms ] story [ 101 ms ] thread
Can confirm.

Been through a few 'adversarial' interview processes - if that is what it is like to work with you then no thank you.

I don't want to report to someone in another city that I never even see.

I have found myself having this inner monologue about the scary implications of the way the question was asked or what question was asked quite a few times.

I wouldn't say I've ever 'thrown' an interview (save maybe once), but I've certainly 'gotten through' a few after I started to wonder if I'd made a huge mistake showing up today.

I don't know what they are whining about: I've never had any issue finding talent in this industry. Part of that is making sure the compensation is among the highest for the position, not simply in the "local market" or whatever recruiting jargon defines it these days, but worldwide (because in this century talent is global and so are your competitors).

Then all you have to do is screen a little, to make sure you don't hire one of the 199 out of 200 applicants that can't program. [0]

For new grads, it's possible to significantly reduce the noise by going to a CS program you trust and getting graduates from there to interview.

[0] https://blog.codinghorror.com/why-cant-programmers-program/

What talent are you looking for, though?

FAANG companies and many companies are okay with generalists (eg. can code on a whiteboard), but if you're looking for specialist expertise (eg. computer vision, control engineering, operations research) it's a lot trickier and not always only a matter of compensation.

> but if you're looking for specialist expertise (eg. computer vision, control engineering, operations research) it's a lot trickier and not always only a matter of compensation.

It's not tricky at all. Those are chicken/egg jobs - can't get the job without experience; can't get the experience without the job. Hire some people and train them. They won't all work out, but the ones that do will be worth it.

That's definitely doable at big corporations, which is why they can afford to hire generalists and assign them somewhere, train them, and reassign them somewhere else in the company if they don't pan out.

For smaller companies, any given hire has an outsized impact, there's a more limited budget for hiring, there might not be the resources available to train a new hire from scratch for hard to train skills, and there might not be enough "bench space" for people that don't pan out.

Many companies don't really need this kind of specialist expertise though. I wouldn't be surprised if hiring is much harder in the robotics industry than in, say, consumer mobile app development.

This is a a lot of words to say running a tech company is hard. Big-Ns are willing to pay people with specialized skills north of 500K, if you want those skills pay up, otherwise find someone who you can pay less that will grow into the role. Get more money from your investors. If you can't do any of those, then I guess you can't afford to run your business.

In my experience in startups, the executive suite is full of people who imagine themselves a future Gates/Jobs/Musk/etc... Well, being that successful is hard.

> For smaller companies, any given hire has an outsized impact, there's a more limited budget for hiring, there might not be the resources available to train a new hire from scratch for hard to train skills, and there might not be enough "bench space" for people that don't pan out.

So prioritize finding intrinsically motivated learners instead of specific skills, and make sure you have a budget for any learning resources (books, courses, etc.) they would need to make rapid progress.

Also, make sure that writing/improving documentation to help the next hire is one of their main responsibilities (this demonstrates what they are learning, gives senior folks the opportunity to correct mistakes & misunderstandings, selects for good communication skills, improves your onboarding, etc.)

Have you done any experiments to see if you have to weed out more people when you post a low range versus a high?

Or do people think to themselves, "Well, I'm not qualified to do a job that's paying 40% above market. They want someone serious."

I always think I'm unqualified for everything.

I mean, just look at the "entry level" positions that want 5 years experience in 5 different technologies with a laundry list of required talents.

> Have you done any experiments to see if you have to weed out more people when you post a low range versus a high?

It's the opposite.

The quality of the resumes simply went up. Sure there are more of them to filter out but the great ones stand out.

> Part of that is making sure the compensation is among the highest for the position

I had the opposite experience back in 2015. We tried to find (locally) a C programmer with good understanding of Linux and network protocols, and offered approximately what we thought to be a fair market salary. The initial attempt has attracted various people like fresh graduates, and also (strangely) a disproportionate amount of bank employees - not sure why, our application has nothing to do with finances. We could not find a candidate that was good enough, but there were several who "almost" did it.

So the financial director approved republishing the vacancy with slightly modified requirements and 2x the salary. Result: all we got was some former developers, now managers. And the flow of talented students has completely stopped. We were able to fill that vacancy by re-offering it to a person who clearly had the relevant skills but applied to a different position. When asked why he didn't apply as a C programmer, high salary and consequently an expectation of very high demands were explicitly named as a demotivating factor.

As someone who is probably much closer to the bank employees (assuming you mean developers from banks) but has considered transitioning to something like c at various times, the problem is there are no intermediate roles, everyone either want a c expert with years of commercial experience. To make the transition the only option seems to be to go for junior roles, which disregards the decades of experience that is relevant regardless of the language, and those junior roles are pretty few and far between too.

The industry expects a constant supply of senior experienced devs but completely avoids any sort of training and development. It can somewhat work if you're in a mainstream field but it won't for anything specialized, which C is in my area.

This could be the local market in which you operate or the timing when you advertised the position.

College hiring is cyclical and the earlier you get to campus, the better. If you re-advertise the same position, especially after you interviewed a few fresh grads from the same university (who will talk to one another) and flunked them all, it's not surprising nobody bothered to apply.

Also, keep in mind that it's not uncommon for college students to be offered full time position during their last internship (so 1+ year before they graduate). So by the time you try to hire new grads, some of the best are effectively already out of your local market.

> When asked why he didn't apply as a C programmer, high salary and consequently an expectation of very high demands were explicitly named as a demotivating factor.

Keep in mind that this is a learned response (although imposter syndrome accounts for some of it) that you have to deliberately defuse in your job listing.

Phrasing such as "The following is a list of nice-to-have skills. We do not expect candidates to have experience with all, or even most, of them." will help. You should also make it clear if you prefer candidates that have broad+shallow experience in more of the listed areas or narrow+deep in very few (or even just one), assuming you have a preference. If not, make sure you say that too.

Another thing is stating that you are looking for people with demonstrable learning skills rather than specific pre-existing knowledge.

If you don't make this sort of thing as explicit as possible, potential candidates will mostly assume that your position conforms to their past experience (which is mostly bad).

So much for improving your tactics in the job-posting approach. You should also examine shifting strategies to other channels such as job fairs to get candidates before they give up on the local job market, or referral bounties (which can get you good candidates that aren't actively looking), or even getting local media coverage by sending out press releases (I recommend the excellent book 'Bulletproof News Releases'). Heck, geotargeted Google ads might even work if you can figure out appropriate search terms.

I was shocked at the accuracy of the Wonderlic test, a timed 12 minute test with 50 questions (not always expected to be able to finish them) in terms of how it correlated with other tests that I took in the past.

Not sure that layer after layer of tests would necessarily be better than Wonderlic plus a short interview in person to get a read on personality fit.

(comment deleted)
First a note on how to read the relevant study. The link to the study in the WSJ article is paywalled. This is a non-paywalled link [1] is the results [2]. 22 applicants solved a problem alone, 26 with a proctor present. Without the proctor present about 2/3rds passed, with the proctor present 1/2 passed. Using score >= 2 as "passing", 12 out of 16 men passed in private and 4 out of 4 women. 11 our of 20 men passed with the proctor, and 0 out of 6 women. The methodology looks robust, but especially with the claims with respect to gender I'd want to see a sample size larger than the single digits before making any generalizations.

With that aside, my broader thoughts on tech interview processes: Companies want an interview process that are,

- Successfully distinguishes between people that have the knowledge and abilities required to perform the job.

- Has systems on accountability, consistency.

- Is relatively easy to train employees to administer the interview.

- Has a relatively low time-commitment for everyone involved, both interviewer and candidate.

In reality, though, there are tradeoffs between each of these points. For instance, using a set question bank improves consistency and accountability. Rubrics can be more explicitly defined, and bias limited. But it means candidates can google for questions beforehand. This was a salient issue when I worked at Dropbox, there were only about a dozen technical. interview questions for a 2,500+ person company. Having developers come up with their own unique question helps mitigate this, but reduces accountability.

Likewise, I've had some novel interview processes that more closely approximate real working conditions. One company's interview was conducted over git-hub. It was asynchronous, with tasks spread out over a week. After building the first solution, the interview came back with further feature requests and comments on the first iteration. This tested the candidate's ability to refactor existing solutions to meet changing tasks, and the ability to integrate feedback. These are things that are rarely captured by whiteboard interviews, but are arguably some of the more important skills in software development. But on the flip side, it was much more time-consuming in aggregate than 4 hour-long interviews.

No one interview process has all the advantages. I think a lot of companies settle into a pattern of 1 or 2 remote technical screens followed by a circuit 3-4 hour-long interviews because it's logistically robust. It's a format candidates are familiar with. It's easy to train new employees to conduct these interviews, and there's broad enough set of people participating that one biased signal isn't going to be decisive.

> Companies could also drop problem-solving tests as currently offered and instead ask candidates to spend five minutes explaining how they would perform a particular job-related task, Dr. Parnin says. Focusing on communication skills in this way, Dr. Parnin says, can reveal how a candidate thinks.

But do we want to hire the candidate that can talk about high level ideas for five minutes in a convincing manner, but can't code Fizz Buzz? Or a binary search? I get that some people might stumble due to pressure, but at the end of the day if you need some mechanism to determine if the candidate has the required skills or not. And administering a test is an effective way of doing this.

This isn't the first time articles like these have been written. X group is disadvantaged by problem-solving tests, so don't use said tests. But how then do you determine whether or not the candidate has the required skills? Usually whatever supplants the technical interviews are also subject to unfairness: referrals, recruiting alumni from specific universities or companies. While far from perfect, I still have trouble seeing what could replace problem-based tasks as a means of demonstrating skills.

1.

> Likewise, I've had some novel interview processes that more closely approximate real working conditions. One company's interview was conducted over git-hub. It was asynchronous, with tasks spread out over a week. After building the first solution, the interview came back with further feature requests and comments on the first iteration. This tested the candidate's ability to refactor existing solutions to meet changing tasks, and the ability to integrate feedback. These are things that are rarely captured by whiteboard interviews, but are arguably some of the more important skills in software development. But on the flip side, it was much more time-consuming in aggregate than 4 hour-long interviews.

These you can afford to do if you are Google. If you aren't, candidate sort the places they want to work at in descending order. By the time they get to that take-home, they might already be further along the interview stages at better companies.

Google certainly has more monetary resources. But in my experience large companies like Google are the ones that can't afford to do something like this. The logistical benefits of white-boarding interviews and the accountability gains are much more important to large companies. This interview process was for a smaller company.

But you're absolutely correct that the more time-consuming the interview process is for the candidate, the more likely they'll interview somewhere else. In fact, that's exactly what I did: I received an offer partway through this git-based interview process, and the offer was good enough that I didn't see value in completing it.

Google is a large well known and well paying company that can get candidates to make that sort of time investment, smaller companies can't because they're just generic companies that no one particular wants to work for, I'll skip the elaborate test and apply for the next generic company in the list.

Aside from that, I really don't have time for these elaborate interviews if I'm already in a job, companies that do this are limiting their potential candidates to the unemployed.

> companies that do this are limiting their potential candidates to the unemployed.

And sometimes there's a reason folks are unemployed...

Yes, usually that reason is that once you are unemployed you fall to the bottom of any hiring manager's list of eligible applicants.
> determine if the candidate has the required skills or not

What are the required skills, and how long will they be the required skills?

I've yet to have a job where I was doing the exact things they hired me for 6-12 months later. Things change constantly, why isn't "dealing with change" a highly-ranked skill for job candidates?

I'm always kind of surprised that the "take-home exam" type of job interview gets so much hate on HN.

Even if it takes me up to 8 hours to do the work at home, I think I'd rather do that. I feel like I'm pretty good at application security and programming, but I struggle to think on my feet when someone is grilling me with a job on the line. As soon as the interview is over, I get a huge case of staircase wit and think of all the better answers I could have given for each question. Even something as simple as "What's CSRF?", I could write pages about. But at a job interview? I have a hard time coming up with more than two-sentence answers.

Same thing with coding. I've written programs using breadth-first search, depth-first search, quicksort, binary searching, etc. Ask me to do it in a job interview and suddenly I'll forget the syntax for `if`.

Though FWIW, I haven't had a take-home interview test. Maybe I'd feel differently if I was actually given one.

These "exam"-style interviews are innately suspect for the same reason they are useful: because they approximate real work very closely.

Look at how many malicious entities use spurious job postings to farm resumes and other kinds of data. You think there aren't unscrupulous companies out there extracting free labor from their "interviews"?

If the employer is very reputable, you might be able to feel safe undertaking this kind of interview. But when you are applying to a shady tech start-up (and they are all shady, and they're where most of the jobs are), there is no way to know whether the job actually exists.

The thing is, if I spend 8 hours prepping for algorithmic interviews, I can use that prep for several interviews. If I spend 8 hours solving a toy problem, it is completely useless anywhere else.
I think the problem is deeper than whiteboard interviews. Too few companies are willing to invest in junior talent. Netflix famously only hires senior-level engineers, and Facebook has recently offloaded many of their internships to Major League Hacking [1], an exploitative outsourcing platform for unpaid, entry-level labor from developing countries [2]. This is entirely a problem of the tech industry's making.

[1] https://news.mlh.io/introducing-the-mlh-fellowship-externshi...

[2] A close friend who was formerly employed by MLH

Re: "an exploitative outsourcing platform for unpaid, entry-level labor from developing countries..."

It hasn't quite happened yet, but the chance of IT going the way of factory workers in the future seems quite high. It's labor intensive but much of it can be done anywhere in the world. If you are lucky, you can be a liaison between management and constantly shifting overseas techies.

> It hasn't quite happened yet

This is certainly not for lack of trying. Outsourcing was much more common 10-20 years ago than it is today but a combination of wage growth in outsourced countries and terrible quality has just about seen the end of the practice.

In Japan, programming / software development has always been a blue collar job.
Societal status aside, how does it pay?
Very low - possibly the lowest of any engineering job, since software is not considered engineering in Japan.

Also, most employees have to buy their own notebook computers, so you see Windows thickies from the 90s.

Source: worked in Tokyo doing field work for 2 months at a major corporation.

Sounds like it could be a contributing factor to the fact that outside of game dev, there doesn’t seem to be any Japanese made software.
What do you mean? There's an enormous amount, in cameras, robots, phones, automobiles and all sorts of electronics.
True but software/firmware on such device is tend to considered to second citizen.
"...on such a device/on such devices tends to be considered a second-class citizen"
Firmware and embedded software always feels like it was built in a software sweatshop and not really a priority.
It tend to especially on traditional companies, but YMMV. I believe very few traditional company allow BYOD.
> Very low - possibly the lowest of any engineering job, since software is not considered engineering in Japan.

So what does the (private industry) career path for a CS graduate look like? Or do all the folks who want to study something computer-related end up as EEs?

Programer wages are very low.

I'm not sure they are even higher at SCE (Playstation), Nintendo, Bandai or Sega; but at least the people at those companies look happy and like they are having some fun. Actually, happier than the people working at the AAA houses in the USA.

> the way of factory workers

Note the complete change in software development process towards something resembling an assembly line.

If it's reverse engineering an existing application in an obsolete platform and translating almost verbatim into a new platform, it can resemble that. A lot of software work is porting from older platforms.
Can confirm. I'm a senior engineer with a great track record at early stage startups as well as publicly traded companies. I'm staying put with my current employer because I refuse to put up with hiring process horseshit.
I'm staying with my employer because I don't see any other options.
Most other commenters seem to think Junior devs are failing interviews. But I think they're missing the point. I am in a similar position as you.

I have 15+ years of experience. Built novel computer vision algorithms, entirely new barcode solutions. Built more 10 games in 5 different engines, so on and on. Yet I fail on interviews.

Honestly, we are all nerds who like to think deeply about problems. I think the job requires to do so as well. Yet, all these interviews are asking memorised, quick-shot answers.

But I gave up. I started practising for interviews on HackerRank.... Because I want to move to US, from Europe.

Experience in the specific technology combinations a particular organization wants is usually the "bottleneck", not raw education. Companies don't want to wait for nor pay for the learning curve: they want plug-and-play employees with paid hands-on experience matching their tools.

But that's not realistic because the combinations they want are too specific. A person having a thousand college degrees won't fit the way companies frame their expectations.

Note that I'm mostly talking about non-IT companies hiring IT workers. An IT-centric company like Google or Microsoft may take a different angle.

And don't forget that once they use you up, they are perfectly fine throwing you away.
Absolutely. Whiteboard interviews, as practiced by FAANG etc., are largely useless.

I've seen interviewers pose problems that took the likes of Dijkstra and Knuth years to solve the first time, yet somehow they expect candidates to solve two of them in 45 minutes. Unless you are actually Dijkstra reborn or Knuth you're unlikely to solve a problem of this type quickly unless you've seen it, or something very close to it, before.

So it's essentially selecting for some combination of how recently you took an algorithms course or qualifying exam, how comprehensive that course of study was, how much experience and success you have had in "programming" (aka algorithm puzzle) competitions, how much grinding you've done on hackerrank/leetcode/etc., and pure luck.

That being said, I suppose much of the content of medical boards or the bar exam has little to do with the actual practice of medicine or law, so I guess computing is not alone in terms of annoying hoops it makes people jump through. I just wish that algorithms qualifying exams were a standard thing that you could pass outside of a job interview and be done with, rather than something you have to suffer through repeatedly.

One thing these types of interviews do though is select for people who put in the time and effort to learn/relearn/apply these algorithms. Perhaps that correlates with other desirable traits
Or the smart ones will go do something more lucrative instead of putting in time an effort for a lottery ticket interview. I have to spend years in college, years in industry, and then spend a bunch of free time learning random test questions that I might never apply in the real world... why not just go to med school or get a securities license?
Because you are already stuck on the path you picked and have no choice
Sort of. The scenario assumes one is looking for another job via the focus on interviewing. So it's not that much of a stretch to contemplate changing industries if a switch to another job within the current industry requires jumping through hoops too.

I'm stuck in my job like you mention. But this sticking also prevents me from changing jobs within the industry.

Why would you spend a week preparing for an interview for a six-figure job instead of of going through medical school and residency? Is that a real question?
Who says it's a week? Also, there's no guarantee that you will get the job. You have a much better chance of getting an even higher paying job if you go to med school.
My own personal experience says it's a week. You may have better odds of getting a job after medical school, I don't know, but it's six years of very hard work, which, even if you think a week is way too optimistic, is still a much bigger investment.
Part of those six years includes paid residency.

It might be a bigger investment, but has a higher median return.

It may be a week for you, but is that indicative of the average experience? It's kind of like how all the silicon valley people on here post their massive salaries as if it was normal. Many of us in other areas don't even have access to those high paying job opportunities. So what's the point of studying for something that isn't even available in that locale.

I would imagine that most people who've done it a couple times will find reviewing the material is much faster than learning it for the first time. I also suspect that many medical professionals do not live in their first choice of location, but if you think medical school is so much more appealing than some interview prep and a possible relocation what are you waiting for? I think the fact I could learn all this stuff for free is a pretty big mark in favor of it over medicine, but everyone's judgments are different, I suppose.
Well I guess I'm just a big piece of shit compared to you.
That's not what I'm trying to say and your profile suggests you're adapting a lot of self-defeating negative attitudes which are probably not helping your situation.
So you're saying that you didn't think that, but now that you saw my profile it's true.
No. What I’m saying is you’re constructing your own shackles in your mind.
I actually think that optimizes for those who come from a place of privilege. More elite schools have classes that teach this stuff, regular colleges don't. Also it's hard to put in the time for that when all of your free time goes toward merely surviving. I can promise that a lot of tech's diversity problems stem from things like this.
wut? Programming languages, data structures, things like shortest path algos are taught in every traditional school. You can agree that the quality of teachers might not be great, but the books are the same.

You can argue that crappy code academy schools don't teach right, but personally even the most average college will have a decent curriculum into CS fundamentals.

It is on you to make a use to it. I personally learned most practical things by myself, but college gave me a huge jump start into the fundamentals. What you do with them is up to you.

I feel I didn't explain correctly, yes all schools teach algos and data structures, but elite schools literally have a white-boarding class as well, Which is a slightly different situation, not impossible to overcome for one without access to it but acknowledging that people are coming from different places is worth noting, no?
On the other hand, many people without CS education at all (myself included!) have made it through this gauntlet and probably wouldn't have their resumes entertained at all without something like it.
Willingness to be exploited? Willingness to put up with management ordering you to jump through arbitrary random hoops?
You either get natural CS wizards or dedicated people who are willing to spend time preparing. Seems like a win either way.
Companies are always willing do do anything in their power to attract good employees, short of raising wages.
I assure you not paying enough is the problem.
Ironically? the code in the stock photo being written on the whiteboard contains a SQL injection vulnerability.
Ha, first thing I noticed before even reading the article. Can't decide whether it's just a coincidence or a subtle commentary (leaning towards the former).
They're not looking very hard.

Universities have departments full of grad students and postdocs that can code and analyze data: programming and ML are increasingly common tools in neuroscience, biology, psychology and a number of other fields. However, these people are mostly invisible to tech recruiters. I hear from one or two a year and I think that's on the high end for my neuro department (having a CS degree also helps).

It might take some work to find a way to make academic achievements 'legible' to industry, or to sell industry jobs to people, but whoever figures it out (besides Insight) is going to make a mint.

Programming isn’t really the same as engineering. Building high quality, maintainable, extensible, reliable code takes different skills than you learn in an academic environment. Where honestly none of that matters.
I had a friend that was trying to lose weight and he said "I've tried everything, I mean everything you can think of, except diet and excerice".

Companies will try everything,I mean everything you can think of, except increasing wages or training people.

They know this. They are just trying to fool the average person in to voting for a government which will increase immigration, remove employee protections and welfare.
If an individual company is doing so, they are hurting themselves until they get the government policy changes. I doubt that they're that clever or thinking that long term. I think they're just being stupid.
They are only hurting themselves if they aren't able to get enough H1Bs to suppress the cost of local labor.

You can't take tales of woe over skilled worker shortages at face value.

I have to take the opportunity to hawk https://sievejobs.com, a website that lets you essentially block contact from Hiring Managers regarding jobs that are not aligned with your profile data, with Interview Format + Content being primary bits of metadata.

I'm hoping that the site can serve as a feedback mechanism to the industry at large regarding interview and employment practices that we Software Developers feel to be counterproductive.

They can’t find good programmers because they are not willing to pay the salaries required. Good programmers are actually quite rare.