It was Monday morning. I woke up early, too nervous to stay in bed. I got my coffee mug and a bottle of water side by side. I double-checked my internet connection, video, and audio. I moved some things in the background out of sight to make it look less cluttered. After reading a little more about the senior software engineer role, I checked my interviewer’s LinkedIn profile again.
I joined the call precisely at 9:30. The interviewer was a senior engineer with a respectful beard - the kind of guy who always seem to know what they’re doing. He was friendly and calm. After some chit-chat about the guitar in my background, he sent me a link to an online editor and started talking about the technical challenge.
The challenge had three parts, gradually increasing in complexity. The first one was pretty simple: revert a string.
I asked questions, discussed the requirements, wrote some comments (some input examples and the expected results), and got ready to start.
Then it happened.
Blank.
Null.
Undefined.
It was like I had never typed a single line of code in my entire life. I didn’t know where to start. I searched my mind for any common code expressions to handle strings.
Every JavaScript keyword was unreachable in my brain.
I asked if I could do the challenge in Ruby despite having checked “Advanced level in JavaScript” in the job application. “Ruby is just plain English,” I thought.
It turned out I couldn’t speak English anymore either. There wasn’t a single word available. My hands were sweating, and the silence was getting too uncomfortable. My mind was wandering away, and I caught myself thinking about how I couldn’t actually think.
The interviewer noticed something was wrong. He reassured me it was okay to be nervous. “Do you want to drink some water?” I surely did. I took a deep breath and started over.
I couldn’t stop thinking about how terribly I was failing at the interview. About the funny story that the interviewer would tell his coworkers about our call. About how I wasn’t able to solve even the first and simplest challenge, so I most definitely wouldn’t be able to solve anything else.
The time dragged on for a terrifying 15-minute window, the longest of my entire career. Not a single line of working code. I wrote comments, moved strings over from one line to another, and created an empty function declaration (wisely named function revertString() {}
), and that was all.
Visibly intrigued, the interviewer suggested we end the call early and promised to give me feedback should they decide to continue with my application.
It goes without saying I didn’t get an offer. Not even an email explaining why they decided not to follow up - probably for the best.
The next day, it took me 5 minutes to work out the solution. I mean literally - I sat down, started the timer as if I were being interviewed, and solved it.
The thing is - I was really interested in that position. The company held technical competency to a high standard, but my lack of confidence and fear of failing to meet the expectations produced a self-fulfilling prophecy. I was so afraid of losing the opportunity that I did precisely that.
I knew I could still write good software, solve complex problems, and learn new things quickly. That didn’t change.
This humbling experience from years ago made me realize I can fail, even when I know the answer.
It’s a complex mix of thoughts, expectations, and knowledge that defines how we perform at any given moment. Failing an interview is not indicative of one’s true ability and potential.
As a bonus, this also challenges our perspective as interviewers.
Just because someone is having a hard time answering our question, it doesn’t mean they don’t know it. There’s so much more going on in their heads than simply crafting an answer.
Especially when talking with people whose first language is not the language you’re speaking. Native speakers might not realize there’s yet another “transpiler” executing in the background of the candidate’s brain.
Coding challenges are hard enough. Going through them while speaking another language is an arduous task. Interviewing after a full day of work is exhausting. Add a timer and an expectation of a job offer, and you have the recipe for losing a great candidate.
So, please, let’s keep the human aspect in mind when discussing technical interviews. Pressure, nervousness, and a multitude of other factors can lead to poor performance, especially when the candidate is highly invested in the outcome.
Have you ever faced this situation?
If you’re a developer, don’t sweat it. A technical interview is just like running your code - if it crashes, restart the server and keep coding. Every dev knows anything can be fixed after a little debugging.