The Reasons Skilled Programmers Don't Pass Coding Interviews

My acquaintance recently started working as an engineering manager for an QZANG organisation, where they were responsible for hiring new engineers.


We made up ground.

When they asked if I would be able to join the team, I smiled and said, "I'm not sure I'll pass the interviews, but of course I'd love to work with you again! I'll give it some thought.

They informed me, referring to other engineers we had collaborated with, "X and Y both said that." "They both stated that they lacked qualifications."

I nodded in comprehension, but I couldn't help but squirm. The other engineers my friend mentioned were excellent senior engineers who were also excellent communicators, team players, and problem solvers. Since we had been working together for nearly two years, we were both aware of this.

My acquaintance recently joined a company, but could they pass the interview bar? A coin toss could decide the outcome. “Well,” my friend said, “I would suggest practicing a little first. Don't go in cold; get several interviews at other companies as well.

This is the reality of a seasoned programmer searching for a new position.

What causes seasoned programmers to falter during interviews? These are my thoughts.

1. The corporation never even hires the expert programmer.
The most frequent reason an experienced programmer doesn't get a new job is most likely that they are interested in working for a certain organisation but never apply.

Coding problems can be challenging, and the interview procedure varies slightly from company to organisation.

You must invest time in preparation, which entails:
  • Making changes to your resume
  • learning algorithms and data structures for the coding challenges
  • putting in hours on any take-home assignments, researching the business to show product interest, and practicing for the system design round (not all organisations offer this; some give you an option between a take-home and a live coding round).
  • creating succinct narratives (think of the STAR technique!) that you can share in response to behavioural questions that delve into your potential as a colleague and whether you embody the business values that would make you a "cultural fit" for the firm you're joining.
The actual preparation itself frequently feels overwhelming. An skilled programmer who hasn't had much time to solve any Leetcode problems might think, "I'm not ready."

People have lives outside of work and families, thus it is not appealing for recently graduated computer science students to spend two hours a night studying a course on data structures and algorithms.

Experienced programmers also don't apply because they don't have time to prepare or because they are afraid of failing.

Despite having all the necessary skills, someone can claim, "I'm not a good enough software engineer to get into Google."

Or the idea of being evaluated by a group of peers over several rounds is intimidating in and of itself. One may think, "I don't want to look foolish, and I don't have time to prepare."

The seasoned programmer has attained a certain degree of respect among their colleagues and has been successful in their present employer, getting promoted, etc. What happens if they don't pass the first round of coding at a similar company because the engineer who interviewed them chose a challenging subject and wasn't happy with how they tried to answer it?

Even seasoned programmers who were recommended to the organisation by a former manager or engineering colleague who could attest to their abilities frequently encounter this.

But that's the way it is. A candidate does not advance to the on-site, which is usually a "final" 4–6 hour marathon of further coding, system design, and behavioural problems to pass, if they fail an early round (the hiring manager conversation, the recruiter chat, or a first coding challenge).

The experienced programmer frequently decides not to apply to the company at all because of this dread of being judged and eventually failing an interview due to unpreparedness, an unusual question, or a lousy interviewer.

2. Subjectivity permeates the interviews.
Unfortunately, people have biases. The minimal (and inconsistent) amount of preparation that many organisations require of their interviewers has astounded me.

Interviewers frequently evaluate a candidate's résumé and develop an unconscious prejudice based on the information presented.

Second, although while interviewers can select from a standard set of interview questions, the questions they choose may vary in complexity, and a candidate's success in a given round may depend on chance.

Finally, a candidate's grade will differ depending on how severe the interviewer is. Will they give away anything? Are they trying to give the candidate a worse grade than they ordinarily would because they are feeling especially unpleasant at that hour? Is there a communication issue where one of the two parties' accents makes it difficult for them to understand one another? Did they see that the candidate made a nervous, beginner-level coding error and penalise them for it?

I have witnessed the extreme subjectivity of interviews in the cases of friends who were rejected in the first or final rounds by overzealous interviewers at other, not-too-different companies, despite receiving senior or staff-level offers totalling more than $400K in compensation from various companies.

Did the interviewers go too far? Maybe. Or maybe they didn't ask the right questions. The applicant was also worn out and under stress. And a "no" resulted from a confluence of these arbitrary causes.

Why I encourage seasoned programmers to apply nevertheless (but I can understand if they don't)
 
Unfortunately, changing employment is arguably the easiest way to receive a significant pay raise. In the past, a new hire at the same level who was able to bargain against the more recent market rates or who had other offers might frequently receive a higher salary than an employee who has worked (and been promoted) at a company for five years.

It's hard to accept rejection, but after I worked up the nerve to apply, I was frequently shocked by how well—or poorly—I performed at the places I applied.

I thought the interviews would be simpler, so I applied to a few jobs for practice, but they have been difficult.

Additionally, I received offers from a few companies that I had assumed would be difficult to gain an offer from since I believed the interviews would be difficult.

To put it another way, it was indeed a coin toss!

However, in general, my interviewing skills improved the more interviews I attempted.

Considering how stressful the entire process is, I wouldn't advise going overboard. However, I would encourage you to apply if you are an experienced programmer who has worked for a company for too long and is considering changing jobs for any reason.

Note 11/5/22: A few days ago, I thought, "Eff it, let me just hit publish so I can move on with my life," and I had no idea this post would receive so many views! I appreciate everyone's comments with new ideas that helped give this issue more depth because I actually experienced writer's block as I was writing the second section regarding subjective interviews and interviewers. I appreciate you reading!
Hi There, I'm Yahya, and I enjoy sharing knowledge and experiences.