I've noticed a trend where despite passing recruiter screens as well as initial technical screens, the "on-site" phase with a full interview loop has been a barrier for me. This has happened at both start-ups as well as public companies (not Big Tech, but publicly traded). As for any glaring mistakes, maybe I just go too far down a given rabbit hole, or just don't code up the perfect solution immediately and instead have to actually work through the problem-solving and having that dialogue with the interviewer.
How much of this problem is down to the market or forces out of my control, and how much can I actually influence? The technical questions themselves are easier than the ones I answered when I interviewed (and got hired) at FAANG two summers ago.
I really don't feel good blaming things on blind luck or random chance, but it's either that or the hiring bar is literally absolute perfection.
This is tough. The job market is tough, figuring out why we don't get an offer is tough, getting interviews at all and then performing well through all of them is tough. Interviewing when you're not just passively looking but in fact need a job is very tough.
Here are two things from your post that tell me you can succeed sooner and more easily than 90% or even 99% of people though:
This means you will be getting a lot of interviews relatively and the part that most people spend the most time worrying about isn't a big deal for you.
So what is in your control that you can practice?
Perhaps most importantly, stay positive. As a both a hiring manager and a candidate, I think a huge signal is if one is relaxed, happy, confident, open to conversation, present, and engaged. This is hard to practice, but possibly there are a few things you can do here:
Ryan gave a great detailed answer. I'd like to add a small thing: you need a feedback mechanism. You'll never know why you failed unless the company tells you, which is rare, especially for them to provide the objective reason. And a lot of it is not dependent on you, such as the performance of other candidates interviewed for the role. To improve on the part that is within your control, you need to get feedback.
Try to get some mock interviews. Get them with different people who have experience interviewing for the roles you are applying for (e.g. software engineer roles). There are services to do this, but I'd advise getting friends, colleagues, or fellow Tarodactyls. You want to get different, quality perspectives, so you can filter out the noise. Getting that feedback is invaluable.
Again, there are a million reasons that someone may not get a role. A competitive market. Funding drying up for a role. A manager looking for a specific skill. A start-up CTO finding a candidate who is incredibly passionate about their company. A lot of that is not in your control. However, if you want to become the best candidate you can be, you need to get and integrate interview feedback. Mock interviews are a great place to do that.
Note: After typing this up, I realize Ryan mentioned recording yourself and creating a feedback mechanism that way. That is a great approach. I do think mock interviews get even closer to a real interview situation and get you feedback from others, so they are a valuable addition, but that's a pretty ingenious approach to bettering yourself that I'd definitely give a try.
Ryan and David knocked it out of the park with their answers - Definitely take their advice 100%. I'll add 2 more things as well, one of which is much more important than the others.
Lastly, I recommend going through this playlist if you haven't already: [Taro Top 10] Effective Interview Prep
I could script and prepare all sorts of answers, but what's the backup plan if I have to come up with something new on the fly?
Start from first principles and generate an answer on the fly. Your goal is to say something that reflects one or more of the following:
I talk about this in-depth in my article here: Software Engineer Interview Guide - Behavioral Questions
As Grace also mentioned, you also want to build the muscle of being flexible and able to go with the flow when you get an unexpected question. This is just a core social skill, so there's no way to really "game it": You get better at it by doing it more. Mocks are super helpful here, but if you want a single-player experience, you can ask ChatGPT to generate a random behavioral interview question for you, respond, and record your response.
In 95%+ of interviews, you are going to get a question you have never seen before. Instead of just trying to memorize everything which creates a very brittle mental state (unexpected question -> crumble into immediate failure), it's best to also train up your "recovery" state where you can bounce back quickly when random stuff comes flying your way.
I love that you raised this question and the responses it brought forth.
To your follow-up Q, I think this is the more the life part of this entire process. We can't expect to be prepared for everything; optimistically speaking, this is the serendipitous part of our every day, ultimately what keeps us on our toes, challenges us, makes living interesting. That said, I do believe we can train to be adaptable, (be agile as a human being not just in software development); I think this applies in every area, physically, mentally, socially, etc. For interviews, I want to say it would be great to train to be socially (conversationally) agile. This is quite difficult to practice in solitude, here are some ideas:
You are not looking closely enough at your performance or your approach to problems. You are only matching result to effort. That is, you believe that your thinking is right only when you get the right answer and vice versa.
That's incorrect. What matters is the thought process and questions you ask yourself to get to the right answer. Think about how you scope, plan, design, test, and improve solutions to DS&A + system design problems. Is it systematic? Do you have a set of questions you can ask to parse the problem down to a unique and stable design? Can you scale the system? Do you avoid obvious pitfalls and repeated debugging of code?
The name of the game is efficiency and risk in the procedure you take. Not result.
Your quote: "instead have to actually work through the problem-solving and having that dialogue with the interviewer" indicates that this is lacking.
The way to beat out luck is to become skilled. Over a large enough sample size, skill beats luck and results that derive from luck revert to the mean. Which means that over time, the underserving may get 1 offer but never will never get them again.
If you disagree, here are some things you should ask yourself:
Is your approach to problems consistent? Can you prove that across 30 random problems, you can get the answer or close to it on at least 70% of them?
Are you keeping track of every time you fail to answer a question? Are you considering the questions you need to ask yourself to avoid failing in the future?
Are you able to explain your thought process clearly and simply to a 5 year old on how you derive the answer? Are you able to defend your approach and answer?
PS. You will not get an answer from the company because they do not want to say anything that might get them sued. It does not do them any good either to help you. Worse, they may give you misleading information to make you feel better. Bad information is worse than no information.
Thank you all for the input. I've also been seeking out platforms such as Interviewing.io in order to get interview reps in an environment where the interviewer can safely give detailed and actionable feedback. My challenge with behavioral questions is really when there's some sort of new or novel question. I could script and prepare all sorts of answers, but what's the backup plan if I have to come up with something new on the fly?
For what it's worth, I have received some interview feedback from recruiters saying positive things about exuding enthusiasm. I also got some more detailed feedback from a connection who pointed out that I can be unknowingly letting my frustration/resentment about this whole process leak through in my interviews.
What I try to do is if I am talking about a negative experience, I try to frame it as a challenge and then explain how I dealt with the challenging situation. I hope that's a helpful framework.
Chalk this up as another point in favor of networking and having strong connections, but I've been able to lean on them for more detailed pieces of feedback. This has led to creating more action items after discussing and getting into the details. If you're able to get a referral or get connected with an opportunity, then that gives you another possible source of feedback that won't be generic or purposefully vague.