Pretty much the same experience. I went through 5 rounds with a company (all online, 1 to 1.5 hrs after my work hours, via Skype). All of them involved doing live coding (algorithms, rate limiters, multithreading problems and so on), extensive system design questions, quite a bit of time spent on work experience, past projects, scalability, microservices and everything you can think of. After every round I was given the feedback that they like me and still want to go forward.
At the end, they decided they wanted to do one more round, in which I took too long to answer a linked list question and was rejected.
Not only was this a mental exhaustion, but it wasted so much time back and forth b/w me and the consultant, scheduling and rescheduling calls because we were in different timezones. Quite a lot of effort.
After all of that they gave you a linked list question at the end? And then failed you on it? Was there any chance you would be implementing linked lists in that job?
On the face of it that all seems pretty ridiculous.
Nah. I would’ve most likely worked on infrastructure, golang, cloud, etc etc.
I suspect it was simply - Engineer 1 took the interview the way they wanted it, Engineer 2 most likely didn’t collect any feedback from the previous round, and interviewed their way. In the end someone didn’t like something about me and all 5 rounds of progression wasn’t weight against the couple things I fell short on.
It’s fine I guess, a lesson learned. :-)
The interview process for my current job was really pleasant, a few quick questions over the phone and then I was invited to an interview where they asked me questions about myself and what I want to do. They didn’t ask me any weird puzzles or to write a program on a whiteboard. They just said they had some devs read my open source repos and were impressed.
If someone pulls something like that and you are experienced, please do this:
If you don’t like the game, don’t play it. There are so many IT jobs, both remote and on-site, that most people with some previous experience doesn’t have to go through this stuff to get hired.
Yeah I’m glad you mentioned this.
At the beginning of this year I was interviewing with companies. First time I was interviewing since I wasn’t relatively junior. But going into it I still had the mindset of the last time I had interviewed (3+ years ago), which was basically “I don’t have that many options, I need to pick the first job that picks me, I should jump through all the hoops they ask me too, etc.”
Boy did that burn me bad, but hey lesson learned. Next time I will refuse to waste my time on ridiculous 40hr take-home projects, multiple rounds of take-homes, etc.
How did it come to be like this? I don’t imagine this has anything to do with efficiency, judging by the amount of labour (on the employer’s end) exerted to make candidates jump through hoops.
Nobody wants to take a risk and get blamed for a bad hire, so they set up more and more process. It’s like sifting for gold, except you have like twenty pans and you throw away everything that doesn’t make it through any of the sifters without looking.
That explanation seems plausible, but then I wonder, why is the process so much more heavyweight in tech than just about any other field, including other STEM fields? In sheer number of hours of interviewing that it takes to get a job, counting all the phone screens, take-home assignments, in-person interviews, etc., tech is way out of sync with norms elsewhere. A typical hiring process is any other STEM field is a resume screen, followed by one phone screen (typically an hour), followed by an on-site interview that can last somewhere between a few hours and a full day.
Survivorship bias could be why. The ones perpetuating this broken process are those who sailed through it.
There’s also a lot of talent floating around, and the average company won’t be screwed by an average hire. So even if you miss out on that quirky dev with no social skills but the ability to conjure up a regex interpreter solely from memory, it doesn’t really matter to them.
It should matter to startups, though, because hiring average devs means you’ll fail.
Depends on the startup; until you have product-market fit, you don’t need amazing engineers so much as you need people who can churn out prototypes fast.
It might be partly due to the volume of applicants. With tech you have:
For those reasons you can often get hundreds of applicants to a posting. Other STEM disciplines don’t support working remotely, and in some cases (think civil engineering) need their engineers to be physically on-site. I’d wager they tend to be much more dispersed around the country and companies can only draw from the local talent pool.
I applied to a remote London based, three-person not-a-startup. I did the homework and got among the 50 or so people they interviewed on phone. They told they got over 2000 applications.
Particularly in other STEM fields it’s pretty common to have more rigorous formal education requirements as part of the hiring bar (either explicitly or by convention.) Software development has always been somewhat more open to those from other backgrounds, but the flip side to that is that there seems to be a desire to set a higher performance/skills bar (or at least look like you are) as a result. There are potentially pros and cons to both.
I’d also wonder, particularly around the online tests/challenges/screenings/etc…, whether this is a result of tech people trying to come up with a tech solution to scale hiring the same way you’d approach scaling a technological system, and the resulting expansion in complexity.
Hiring is hard, and a lot of work, and not something most engineers will willfully dive into. Therefore, at most companies, as much as possible of the hiring process gets farmed out to HR / management. And they do the best job they can, given their lack of domain knowledge. Unsurprisingly, they also favor potential employees that they think will be “good” based on their ability to sit, stay, heel, and jump through hoops. Fetch. Good boy. Who wants a cookie. ;)
Another take: Mistakes really, really, suck. And if you just add more analysis and testing to a hiring process you’re more likely to spot a problem in a candidate.
I think mistakes are a big part of it. Software work is highly leveraged: what you write might run hundreds, thousands or millions of times per day. Being a little off can have big downstream consequences.
I think it’s partly because there’s no training for it in most jobs, it’s very different to expertise in software, it’s very unclear what best practices are (if there are any), and for a lot of people it’s a time suck out of their day, when they’ve already got lots of work to do.
So you end up with these completely ad-hoc processes, wildly different from company to company (or differing even person to person during the interview), without anyone necessarily responsible for putting a system in place and getting it right.
Not to mention HR incentives may not align (points / money for getting someone hired) with engineering, and then you’ve got engineers who use the interview as a way to show off their own smarts, or who ask irrelevant questions (because though you all do code review, no-one does interview question review), or who got the interview dumped on their plate at the last minute because someone else is putting out a dumpster fire, and they’ve never heard of you or seen your resume before they walk into the room…
And decision making is ad-hoc, and the sync-up session after the interview gets put off for a couple of days because there’s a VP who wants to be on the call but they’re tied up in meetings, and in the meantime the candidate has an interview with another company so you’ve just moved forward with booking the onsite anyway…
So many reasons :)
It’s all marketing.
I don’t think I would have taken any of my jobs if the recruiters were like “we’re not going to bother interviewing you because all we have is monkey work, when can you start?”, even though in hindsight that would have been totally adequate.
So companies play hard to get and pretend 99% of their applicants are too bad to do the jobs on offer, when the reality is closer to the opposite.
<[apple] insert [google] company [facebook] here [microsoft]> only hires the best.
My problem with this sort of complaint-only article is that there has to be some sort of filter, and if you’re any good, it’s in your interest to work with good people. What does the author want instead? Some better process they know of? Or do they want teams where there is lots of hiring and firing? Or what?
I think this is a product of supply and demand.
A lesser known company (or a company with a bad reputation) might get a dozen or so candidates for a posting. Generally it will be pretty easy to find the best candidate after a round or two of chats and simple coding problems.
But a top tier company (in terms of desirability) might get many hundreds of applications. At this point phone screens and coding challenges are needed to weed out the obvious rejections. What you’re left with is still a long list of highly capable candidates who are hard to compare as they all had different interviewers. So you need baselines and more complicated coding challenges and multiple rounds etc.
I’d be curious to know how the author would propose dealing with a very large number of applications.
That’s not to say that there aren’t companies who do this without a large volume of applicants.
From a cold, pure systems perspective:
This all suggests a way to cut the Gordian knot. If you’re a large company, take the pool of highly capable candidates, filter out the assholes, and offer jobs at random.
Heh, I actually really like that idea! I wonder if it’s ever been tried.
Idk about offering jobs randomly but random promotion was suggested in academic research as best way to counter the next problems: biased promotions and Peter Principle.
So in short, there is a large volume of developers, and companies can afford to be picky. But companies (think they) cannot afford to cultivate talent, so there’s also a large volume of inexperienced / junior / less-than-average would-be-developers who have difficulty getting a foot in…
You’ll recognize true shortage of labor pool when companies try to outbid each other on an applicant with no degree and no work experience in the field..
Which sorts of companies do this? I’m located in Raleigh, and have never interviewed with any “cool” companies, but I’ve never had several rounds of interviews. Where I’m working, we do a half-hour phone screen, followed by a 2.5 hour or so onsite.
I have done homework for two companies, so I’m familiar with that time-sink.
How do you find the job market there? I live in Richmond, but we’ve talked about moving there for allergy-related reasons for my sons. I work at Capital One right now, though, and they don’t allow remote.
I guess I don’t know how to compare it to other areas, but there are a ton of companies hiring right now. I feel like it’s geared towards “enterprise” companies, and of the big five, I believe we only have Microsoft and Google offices (I think Google is small, not sure about Microsoft), but there’s a big tech presence.