I Bombed A Coding Interview. Now What?
Even though the above reads like horror story, if you’ve applied to a software engineering position to a major tech company in the last decade or so, you've likely had a similar experience. To make matters worse, if you’re actively searching, this is the norm, and you’ll likely go through this multiple times before you land an offer you’re excited about. Given that the system is designed to put you through this trauma multiple times, I thought I’d spare my fellow tech enthusiasts some pain and share some tips and coping methods I discovered along the way.
The Interview
You did everything right:
Studied, and then studied some more for good measure. You even binged all the suggested Leet Code questions for that company, including the ones you’d solved previously in other study bouts.
Researched the company on Glassdoor for any insight on that companies DS&A question distribution.
Got your full 8 hours of sleep the night before. Hell, you haven’t even had a drink in the last month, gotta keep that mind sharp.
Stalked your interviewers on LinkedIn as if the mere sight of their visage, held hints as to what type of algo question they’d ask.
A couple hours after your intellectual battle with the companies interviewers, the dust has settled, and you’re second guessing everything you did and said. As you involuntarily traverse your memories of the day, you find your mind relentlessly returning to your second round coding interview. That’s right, the one you couldn’t find the optimal solution for despite your tireless preparation, the one you grappled with fruitlessly while your interviewer checked their work slack and email for the 50th time, waiting for you to produce an elegant solution. You begin to spiral, calculating your odds of receiving an offer, something along the lines of:
“I think I did well on the other 2 coding questions, and the system design one must’ve been at least above average. I’m pretty likeable, I’m sure the behavioral round will push things in my favor...”
You seek refuge under your blankets, as you internally judge your worth and reevaluate your convictions until your addled mind invariably succumbs to sleep and mercifully ends your ruminations.
Now What?
Even though the above reads like a horror story, if you’ve applied to a software engineering position to a major tech company in the last decade or so, you've likely had a similar experience. To make matters worse, if you’re actively searching, this is the norm, and you’ll likely go through this multiple times before you land an offer you’re excited about. Given that the system is designed to put you through this trauma multiple times, I thought I’d spare my fellow tech enthusiasts some pain and share some tips and coping methods I discovered along the way.
Break Away
If you’re anything like me, the most traumatic aspect of the anecdote, was actually the post-interview rumination and not as much the interview itself. To curb this I always try to plan something fun and most importantly distracting, right after my interview is over. Most times, it’s a mental and emotional palette cleanse, which allows time for the initial shock to wear off, so that you can approach processing the event with a better head space and on your own terms.
Despite the immediate mental exhale, it also builds self-care and rewarding yourself into your study routine! Remember, interviewing is inherently challenging as it forces you to perform at your technical peak from an emotionally vulnerable position, attaining proficiency will inevitably require you get some reps in. So regardless of the outcome, each interview represents personal growth, which you should reward yourself for. It’ll recharge you in the short term and will help prevent burnout, keeping you motivated and in the race long enough to get an offer you’re excited about and wont have to comprise on. Lastly, planning something fun immediately after your interview, gives you something to look forward to. I found my mind wandering to my “reward”, leaving it less room to anxiously fret and stress about my interview mistakes.
Here are my top 5 post interview rewards:
Grabbing drinks at a new dive bar with friends. Nothing better than a change of scenery and some group therapy.
Take a trip to the movies and watch the latest blockbuster.
Host! Have your friends over, bust out that mixology kit that’s been gathering dust in your cupboards, setup some board games, order takeout, and enjoy their company.
Gaming marathon! I like to pick up a brand new game, and just completely immerse myself in it for the rest of the evening.
Go on a challenging hike, minimal planning required.
Bonus Tip: Be spontaneous and try something new with a friend.
Learn and Adapt
Now that we’re in a better headspace, we can backtrack a bit and methodically address the elephant in the room. Looking forward, one of the keys to improving your overall interview performance is to learn from your mistakes. This might seem obvious, but even this mantra can become a bit of a slippery slope, forcing you to pick at fresh wounds while you identify mistakes “growth opportunities” in the first place. What if you identify too many shortcomings? How many of them are valid (we are our toughest critics after all)? How did they impact your performance?
My tip: Firmly end your post interview introspection after you’ve identified 3 areas which you’d like to improve in. From those 3 areas, pick 1 and dedicate your next week’s study efforts to improving it. This does a few things for you:
The first 3 growth areas you identify are most likely the most important, your subconscious has already stack ranked them for you. So trust your gut, it’ll save you from wasting time over analyzing every single “mistake you made”. Also allow yourself to consider both the technical and social aspects of the interview… as engineers we tend to myopically focus exclusively on technical skills.
Choosing 1 growth area to work on for the week, provides you with a clear and measurable goal to work towards. Keep in mind, you can always passively target your growth area, it does not need to become the central focus for that week. The key here is to gauge the severity (trust your gut on this too) and plan your preparation efforts accordingly.
Sometimes it’s just bad luck 🤷
The interview might’ve gone poorly through no fault of your own, this might sound like a cop out, but in reality it’s a completely valid point. The intention here isn’t to deflect responsibility from you and your preparation, but to highlight that interview loops are designed by people and are by no means perfect at selecting competent candidates. As someone who’s conducted 100’s of interviews, here are few factors that are out of your control that can have a pretty large impact on your interview experience.
“You’ll quickly find that each person’s “go to” interview question, is as unique as their fingerprint! ”
A lack of a standardized question bank
This leaves the onus of selecting and understanding the interview question on the engineer that will be interviewing you. If you put yourself in that engineer’s shoes for a moment, you’ll quickly start to see how things can go wrong. If you’ve ever worked at a company without a standard question bank, after chatting with your teammates, you’ll quickly find that each person’s “go to” interview question, is as unique as their fingerprint!
To make matters worse, there is usually no standard definition of competency either, so it’s left to each individual to decide where they set the bar for a passing interview. This is a deep topic in and of it self, as I feel competency should also be a function of your interview candidates level, but let’s leave that for another blog post! As you probably already inferred, this introduces a pretty large “luck” component when interviewing at companies like this - sometimes you just end up with a series of tough interviewers!
The underprepared interviewer
If you’re new to software engineering and you’re on the hunt for your fist gig, this may come as a surprise, but sometimes your interviewers are less prepared than you might expect! As an interviewer, I’m ashamed to admit that I’ve conducted a few interviews where I was forced to choose a coding question last minute, leaving me with no time to fully grasp the nuances of the question. Again, it helps to (know your enemy 😛) empathize with you interviewer here, sometimes engineers are pulled out of their work at the last minute to sub in as your interviewer. Early in my career I dreaded slack messages from HR, they almost always requested that I conduct an interview that was slated to start in 10 - 15 minutes! This is a perfect example of a human problem (bad planning) leading to a very unfair and stressful situation for both the interviewer and interviewee!
Unfit Interviewers
I can honestly say I’ve met colleagues and been interviewed by engineers that simply lacked any form of interview training. In my humble opinion this makes them unfit for the task, and is completely unfair to everyone who’s had the misfortune of being interviewed by them. A good interviewer, among other things, is unbiased (conscious and unconscious), and most importantly responsible for keeping the interview flowing while creating opportunities for candidates to showcase their skills, all of which is a skill itself. Again, this mostly falls on the company’s culture and care for building solid hiring practices, but can play a huge role in your interviews.
Get back out there
Hopefully after reading this you’re able to pick yourself back up and get back into interviewing. Most of all I want you to walk away knowing that the interview process isn’t perfect, and a bad interview is nothing but a speed bump on your journey. I’d love to continue giving back and sharing what I know, so drop me a comment with tips of your own, or future post requests. Let’s make this a safe space for sharing our experiences, and giving great advice!