Why software engineers don’t get jobs: Three (+1) horror stories

tl;dr; Recruiting is messier than you think. I tell three stories where great engineers were rejected for reasons that had nothing to do with their engineering performance or cultural-fit.
After programming for three years I started coderfit.com — we match software engineer with SMEs and venture-backend startups. If you want to pair-program with an expert in your stack and skip boring phone screens, send me an email to iwan@coderfit.com.
When people don’t get offers, they mostly think it is their fault: “I have been rejected by three firms in a row, hence I am probably a shitty engineer”. After working for some time in tech recruiting, I can assure you that random factors and noise (false negatives) play an important role, too. Often rejections are due to random things happening and irrational reasons (true negatives).
Horror-Story 1: Candidate rejected because of framework
For a frontend role in an agency I pitched a frontend engineer who contributes to ECMAScript and wrote heavy open source contributions. It took me weeks to find this person and hours to properly assess him, including video interviews (that is what we love to do at coderfit.com). He was rejected by an engineer at the agency who looked for ten minutes at the submitted code. The candidate was not even rejected properly but the firm mailed him a canned answer:
“ […] Although your resume and cover letter were very competitive, our hiring team reviewed your application and did not select it for further consideration.” […]
This was a truly bad answer because there was no cover-letter ever submitted. After reading this, I dropped everything, drove to their office to talk to the engineer who rejected the best frontend candidate I interviewed in 2017.
First, the interviewing engineer could not really tell me why he rejected the candidate, he just said “the code is over-engineered” although it was actually properly structured, with all ES6 operators and short functions in-place. After discussing this for 10 minutes, the reason for rejection became a more clear: The candidate used a MVC framework that was unknown to the interviewer. I was so impressed by the candidate’s use of the framework in the coding interview with me that I could not understand how this could be a problem.
Some background info why we used an unknown MVC framework: The hiring firm was an agency looking for repeatable processes and the lead engineer (not the interviewer) complained to me that they tend to “re-invent the wheel for each client”. The candidate whom I submitted build a custom framework in his free time that was solving some of these issues the agency was facing.
Since the rejecting interviewer did not look at my notes or my video interview recording, he was lacking the context why the candidate used the framework and just hit “reject” in the ATS. Also, at that moment, the team lead (who was in favour of the candidate) was on vacation and could not intervene.
Tip: Generally it is a bad idea to look at other people’s opinion of a candidate before doing an assessment but in some cases, it does make sense, if it adds extra context.
This story was especially sad because the CEO paid me a retainer such that I bring them “the best people”. So, I worked extra hard on the role. However, there was zero backing from the employees and hiring engineers to really assess candidates that I sent. The engineer who rejected the candidate told me even: “recruiting is lowest priority for us”. If you get a retainer as recruiter it makes you extra committed, but it’s worth very little if you lack the backing of the whole team you are recruiting for.
What was even worse, the candidate did not want to talk to any other Swiss employer after being treated like this (canned responses from HR, no feedback, waiting for two weeks to get code submission reviewed).
Horror-Story 2: Ex-Googler ALMOST rejected for not knowing the Bayesian formula by heart
One startup interviewing for a Python role interviewed a programmer who left Google-Zurich after four years. I had problems presenting this guy to startups since everyone thought he will ask for Google-Zurich compensation (>200k CHF — double the average engineering-salary).
However, he was reasonable with his demands and just wanted a harmonic team with interesting technical challenges. So, he aced every interview and impressed most people he talked to. One startup got him through all four rounds and in the last one he talked to everyone on the team in 1-on-1 sessions.
So after interview-day one person stood up and made it clear that the candidate did not know/could not explain the Bayesian formula and therefore can not be hired.
Everyone seemed to not really care but the tech lead. The only person having skin-in-the-game. He would be the one reporting to the CEO that they did not hire anyone since months. So he used his veto rights and made it clear that not knowing trivia by heart is a stupid reason to reject engineers. They hired the person. It turned out, this engineer was the most valuable individual contributor the company ever hired.
The tech lead turned out to be right: The candidate installed his dev-environment in record-time and squashed three bugs on the first day. After all everyone was super impressed and very happy that they hired the person.
Trick- or algorithm questions are used by Google et al. because these big brand firms can afford to have many false negatives in their hiring process — they can reject a lot of candidates who would have been excellent employees because they have a revolving door of people wanting to work for them (Google has three million job-applications a year). As Erin Ptacek wisely once said: “The definition of insanity is doing things the way Google does and expecting them to work for you.”
Horror-Story 3: Programmer was FORGOTTEN by HR
Usually, I closely track what happens with my candidates and how they are proceeding through the hiring funnel. While I was on vacation, a CEO gave his okay that they will hire a engineer I presented. The HR that worked remotely in another country did not follow up. Since I was on vacation I did not follow up either and the candidate thought for weeks he was rejected since nobody followed up (if no one follows up, it does not mean no). A typical engineering mistake.
Two months later, I approached the candidate again asking what is going on. Neither he, nor the HR could understand why no one has proceeded with him further. So I email-CC-ed all the people involved asking if we can finalise the process.
HR is generally underpaid and hopelessly disorganised. Inhouse recruiters are often responsible for other administrative tasks other than recruiting. Or even worse, sometimes there is no HR and someone from the reception reviews, rejects or forwards CVs. These folks often don’t know much about the tech roles. They get a 15 min briefing on what the hiring manager is looking for and and are then supposed to do proper “filtering”. Due to lack of context and understanding of the roles it often leads to bad results.
Horror story 4: Candidate was rejected because he was better than the interviewer
People in HackerNews comments to this article mentioned that sometimes great applicants don’t get hired because they are too good. So, I wrote down a story that stuck with me:
I had this case where I still think the interviewee was better than the interviewer. The candidate was a 22 year old open-source contributing child-prodigy programmer would be rejected at the code-screening phase by a guy, let’s call him “Jon”. I was so shocked by the rejection that I setup a call to discuss it. We had a phone call with three people: HR, Jon and me.
The reasons Jon gave during the call why he rejected the candidate were all a bit funny and I could not tell if Jon was serious or not. Also, Jon’s Github contributions, pull requests and other things were rather shitty, but he was responsible for the code screenings, so I had to listen to his feedback.
Jon pinpointed to some problems in the candidate’s code which we even looked at on a shared screen. All things he mentioned were more style-choices and not real problems. Other things he criticised looked shitty to the untrained eye but had actually good reasons (verbose try catch blocks because the API the code was interacting with was not clean). Then I lost my temper. The criticism made me get defensive and mentioned that the quality of the candidates code is better than Jon’s stuff on Github. Here, my temperament went astray with me. Also, HR stopped me right there and told me that “we’re not assessing Jon here”. It was very hard to say anthing at this point so I just switched topics and ended the call.
It might material for another blogpost if an why people secretly like to hire people who are just a little less smart and/or a little less able than themselves; both individual interviewers and companies as a whole might be afraid of hiring candidates who know more or are more skilled than themselves. Rejecting because a candidate is too good is not acceptable; so one way is to focus in on some area where the candidate is weak or different. Here an article on how this was allegedly done in academia in the Soviet Union.
Recruiting is messier than you think. If you are rejected, it does not mean you are a shitty engineer since rejections can have many reasons.
If you are asking yourself why recruiting agencies exist, well, sometimes to prevent some of the things mentioned in this post from happening. We match people with jobs for aliving and — apart from founders — we have most skin in the game to remove obstacles and make people get jobs. If you have crazy rejection stories to share, leave a comment below.