As a candidate, I have only worked with an external recruiter once. I found it interesting that they told me almost the exact questions to expect during my interviews. After the interview, they asked me what questions I had to answer. I assume this was to improve their data for future candidates.

I’ve been told that this is both common and considered a good thing. Candidates who have a chance to prepare for the interview are more likely to succeed. Companies succeed when candidates succeed.

This statement is false. Companies succeed when employees succeed. This is a small, but extremely important distinction. The goal of interviewing is to find a candidate that will actually be a successful employee. If that is not the case, it is in everyone’s best interest for the candidate to look elsewhere.

This is where the idea of preparing for an interview becomes a problem. Preparing by learning about a company and its product makes sense. But preparing for an interview by cramming/studying material that is supposedly needed for the job makes no sense. A candidate should have the experience to do the job well.

Do you think cramming for 1-2 weeks can make someone as qualified as someone who has years of experience?

Probably not. Cramming may get a candidate a job. But they won’t succeed at the job if they don’t have the skills and experience needed. This also isn’t a “you’re either good or enough or not” statement either. Think about science. There are many different types of scientists. A biologist would not do well teaching physics. A physicist would not do well teaching biology. They can still be good in their respective fields, but terrible when doing something they are not trained in. Software development is also diverse and has similar issues. It’s not about being good enough. It’s about a developer finding a position where they can realize their full potential.

That recruiter shoved me into 5 interviews for positions that were not right for me. It showed. Each interview was extremely stressful and I struggled in all of them. No surprise that I didn’t get any of the jobs.

Funny side note: one company was told I was an expert in Scala despite it not being on my resume. When the interviewer asked “How’s your Scala?”, my response was “Zero.”

Now you may be thinking “Well you should have prepared and got those jobs! Why are you an idiot?”

The reason is that I want to succeed at a company. That means being able to leverage my experience to its fullest and that means the company needing the type of experience I have. You can’t study to get experience. It only comes from doing the work and well… experiencing things. Even if I had received a job offer from one of those five companies, I would have struggled just as much when on the job. It’s not a guarantee that I would have failed, but the odds would have been against me.

The next interview that I went, which I got on my own, went very differently. I didn’t prepare for this one despite failing five times in a row.

The interview was objectively stressful. It was 4-5 hours long. They forgot to schedule me lunch. They had me talk to engineering managers, software architects, product managers, the vp of engineering, the vp of HR, and the CTO. I was asked to write code on a whiteboard. I was asked to architect complex systems. I was asked a number of leadership questions. I was asked to explain bad decisions I made in my past.

In the end, the interview was easy for me. I didn’t feel stressed at all. All the questions seemed like they were tailored exactly for my experience in a way that I could explain well. It was like having a series of enjoyable conversations with interesting people than it was having an interview.

And note that none of that means that I am the best software developer to ever walk the face of the earth. I’m not. Five failed interviews straight proved that. And it’s not like this company had low standards. The stream of failed candidates before me proved that.

What the ease of the interview meant was that I was right for the company. I had the exact skills the company needed and that meant that this was a place where I could succeed. It was the right position for me at the time. More importantly, there was no way to prepare for the breadth of questions I was asked. They all relied on experience that I actually had.

Getting one of those other five jobs would have required me to pretend to be someone that I’m not. Taking one of them would have set me back in my career since I would not have the skills I would have needed to do the job well. I would not have been able to realize my full potential at one of those jobs. This would have been bad for me, but it would have also been bad for one of those companies. They would have hired someone who provided them less value than another candidate would have.

The job I did get is one where I utilized the skills that I had gained over years. It also gave me an opportunity to continue practicing and improving on those skills. That makes me more valuable to companies that need that skillset, which consequently is good for my career growth and my wallet.

Granted, all of this implies that companies have actually created an interview that actually tests the skills needed for the position they are hiring for. It is in their best interests to do so though. In doing that, they make interview preparation pointless since studying is no substitute for actual experience. Every developer should have confidence in the skillset that they painstakingly built and trust that it will get them a job that is right for them.

This post was originally published on blog.professorbeekums.com