Bombing technical interviews: a retrospective
I used to give some killer technical interviews.
“Describe, in your own words, how to build your own implementation of a hashmap in C.”
I remember the programmer getting red-faced, struggling to find a way to explain his way through it. Generally the questions I asked stumped the interviewees. They had two choices: struggle to explain something they didn’t know, or flat out say, I don’t know the answer. I would recommend the hiring of whomever gave me the straight dope.
On another occasion I asked the coder to explain to me the red-black binary tree algorithm. No cheating. No Googling.
I remember this guy presenting himself as a hot-shot. I wanted to stump him.
Truth is, at any given time in the history of my career, unless I’d just been working with a red-black binary tree, or has just been studying the algorithm, I wouldn’t be able to answer the question either.
After sitting at the other side of the desk a few times, through some very frustrating technical interviews, I realized just how sadistic I had been putting these applicants through the process.
I’ve bombed three technical interviews in my life. One of them today.
The first time was with the company RackSpace. It was a phone interview, a 2nd interview with their architecture group.
I had all of the experience to bring to the table. At that time, 12 years of C++ and Java coding, lots of work with VMs, extensive experience managing Linux resources, extensive knowledge of the xen hypervisor.
The interviewer asked me to describe my three favorite Design Patterns.
I had been such a fan of the Gang of Four book. It sat proudly on my desk and I referred to it almost everyday when I was a c++ coder.
But it had been three years since I’d cracked the book. I looked to my memory and nothing was coming up. Just a big empty blank. I was on the spot.
I could have Googled to help me. But for some reason I was paralyzed. Where was the information? Why couldn’t I recall this basic information that I’d studied at such great length in the past?
I sat silent and when I tried to speak I couldn’t. It must have been a form of stage fright.
I ended up murmuring a string of indecipherable sounds and hanging up the phone.
I’d blown it.
The second time was an interview with a company doing work for Monsanto. Again, I had the experience and talent. I’d been slinging Java code since 2000, but had been away for a few years doing Python work. At one time, I could have answered just about anything. I’d written dozens of programs and servers and websites in JAVA using technology from up and down the stack, from Tomcat to J2EE to JSPs, threads to semaphores.
But the questions were specific to new trends in JAVA, and frankly I didn’t know much about them. This doesn’t actually matter much when you are working with seasoned software developers. Throw a new language at us, or a new stack, and we'll learn it and we code. It’s how it works.
I found myself, again, struggling to answer questions that I should have been able to answer. I could envision the topics and their parts in the abstract, but couldn’t think of the formal names of the technology I was quizzed on. I struggled. I bombed.
I told myself that day I’d never do another technical pop-quiz or exercise on the spot to try to land a job. I have plenty of experience that can be used as a testament. Many, many people have worked with me and can attest to my work prowess.
But it happened again. As part of an interview process, I was placed in a room, surrounded by coders. I was asked to produce a very simple function along a unit test to verify it.
Now keep in mind that I’ve been coding since I was 13 and I’m 46. My life has literally hours, days years of writing functions, with some wives and babies thrown in to fill the gaps.
But what happened? I froze up. I typed the first few characters mentally short-circuited. I stared at what I had just typed. Wait, was I writing a javascript function? Is it def or function?
Stupid thought. I was paralyzed. I had to check some of my other source to verify that I remembered how to write a function.
Did I mention that on any given day I write a dozen functions on auto-pilot? It's like typing itself, everything I do flows from muscle memory.
It bothered me that everyone was watching my every keystroke. It bothered me that I could hear the mumbling of others in the room. I almost stopped and said I couldn’t do it.
The only thing that kept me going was Google. If I couldn’t think clearly, I would just let StackOverflow show me HOW TO WRITE A FUNCTION.
Now apparently I didn’t appear panicked. The project manager, when we spoke later, said she thought I was as cool and collected as they come. But I wasn’t.
Somehow I made it through the stress and half-completed the exercise. They gave me another assignment.
This time I pulled the plug to the video monitor. “I can’t work with people staring at my screen,” I lamely told them.
But without the eyes of the room I was able to calm down, get over my stage fright, and complete the task. Still it was half-assed, as I just don’t perform well under certain high pressure situations.
It’s really nothing new to me. Back when I was performing as as a musician, I once walked off stage in the middle of a show. It was a solo gig, just me on the stage, working with some sequenced (computer-driven) music, and suddenly I couldn’t go on. All of the lights were on me. Everyone was staring.
I just let the music play and I walked off the stage, music still booming and lights flashing, leaving the audience confused and my friends asking, “why the hell did you do that?”
I know myself. I get stage fright sometimes, out of the blue. I feared I would bomb the technical portion based on past experiences, and, like a self-fulfilling prophecy, I did. So why didn’t I just say, "Listen, I don’t do these kinds of tests. I get a weird performance anxiety and freeze up. But I’m happy to do a technical assignment tonight, or off screen, and deliver it to you by morning."
Could have. Should have. Would have.
As you can probably tell by reading this, the technical exam left me feeling humbled---no, embarrassed is a better word. I feel apprehensive about working with this group now, even though I generally like everyone I met at the company, and even though technically we would all get along just fine once we start working. (And despite my bombing...the reality is that I’m a pretty kick-ass coder.) And as for the way the team feels about me? Who know? If I were in their seat I would probably pass on me.
The takeaways.
For the interviewee, don’t be afraid to say what you are really thinking. It’s probably better to just opt out than put yourself through an experience that doesn’t work for you.
For the interviewer, consider performance anxiety when you put anyone on the spot for any reason.
Nice article. I also have been coding for a long time. Most of my career has been as a contractor, so I have done a lot of interviewing. The best of my coding interviews were on whiteboards with only 1 or 2 devs in the room. Most were Microsoft style, so they expected you to talk as you thought. The worst was a phone tech interview that asked about design patterns :> Like you, I just blanked. Sad part was I gave a brown bag lecture on them 6 months earlier. I did help hire a guy who blanked on coding a linked list reversal in C++. I could tell he was in a panic and moved on to the next question. We came back to the linked list and he was able to get it. He later worked out well for the team, so it was good all around.