Deliberate Software

With deliberate practice come consistent results

Interview Humiliation

(If you feel like you have all these great ideas but no one will listen, check out my in-progress book: Convincing Coworkers)

One day, I went into an interview, and I was humiliated.

The Setup

I used to think very highly of myself. This was early on in the Test Driven Development (TDD) craze, and I was one of the best I knew at it. I knew interfaces, classes, mocking frameworks, and best practices. I’d been taught all the tricks from some very smart people, and my confidence was high. Not only that, but I’d just finished at work the restoration of an abandoned legacy codebase to a bug-free, fully tested state completely on my own.

I’d shipped Java, PHP, Perl, C#, and VB.NET, and I hadn’t been programming more than a couple years. My first job, they’d made me a team lead over some very senior developers within a year of my hire date. I was learning Clojure and Common Lisp, and had just shipped an Android game I made entirely alone (including the 2D physics engine).

I thought I was incredible. Yet, due to an overwhelming sense of Imposter Syndrome, I keenly knew that there were things I didn’t know. I’m mostly self taught, so a lot of common CS concepts felt alien. I was waking up before work and teaching myself algorithms, lisps, and math.

Enter Company A.

I flew through the phone screen “this is the best phone screen we’ve seen!” Of course it is. “Your resume is very impressive.” Oh, I know!

I get to the on-site interview.

The On-Site

I hadn’t been thoughtful enough to ask what to wear, so I wore a suit. I was asked to present a project I’d worked on, and I picked my recently shipped physics game that was up on Google Play. I walked into the reception area a few minutes early.

"You are 25 minutes late."

What?! I explain that I have the email saying 9:30! No matter, “hurry, they are waiting!” Maybe I can salvage this. I walk into a conference room with a dozen people sitting around a table looking bored and pissed.

"Let's see your presentation."

I start to open up my laptop. Meanwhile they start to joke around to each other:

"Oh, wow, Linux, what is this, 2003? I'd hoped I'd never have to see the
grub boot screen again! Can't you afford a real machine?"

I try to joke back while multitasking with my laptop. They only have the Mac projector cable. No adapter. I’d thought ahead, and handed one of the developers a thumb drive with the presentation and code. Meanwhile the interviewers are joking and laughing to each other at my choice of clothes.

"A suit, classic, where are you interviewing after this, a sales job?"

I roll with it, make some joke about “styling”. I start presenting about the 2D physics engine I’d written as a learning project for my game. One of the most interesting parts to me was how I’d first written it without any unit testing, following just Clean Code practices. I then re-wrote it using heavy TDD. The design turned out very different both times, which I thought was interesting to see how TDD had influenced the design.

About five minutes in, I am cut off:

"This presentation is bullshit. You have no evidence, nothing valuable to
show, just spurious subjective opinions. You've put up a straw man and now
are trying to knock it down assuming we are idiots. I've seen enough."

At this point, it has been barely 15 minutes since I walked in. I remain calm and professional, and start to address the raised concerns. I play the meta-game, wondering if perhaps this is a test to see how I’ll react when questioned and embarrassed. Even if this wasn’t a test, I was determined to be at my most professional and finish with my head held high.

Five developers walk out before I can finish my first sentence. One of the remaining six interviewers looks embarrassed and asks if I could live code them a web scraper in any language instead of the presentation. I turn my laptop around (still no projector) and ask if PHP is acceptable. They are a Python shop, and PHP is the closest to what they use that I am comfortable using when this nervous.

"PHP? Gross. I suppose if it is all you know..."

Unfortunately, I’ve got so much adrenaline in me that it takes me a few tries to log in. I get on a roll after five minutes, and write the scraper. They throw me a few more requirements, and within a half hour I’ve written stories for and completed them all. At least two of the interviewers seem quite impressed. Someone looks at their watch, “well, that’s all the stories we have, I guess let’s break for lunch.”

Lunch is a 35 minute walk up a hill in humid 93F weather, and I am wearing a suit and dress shoes. When we get back from lunch I am hot, tired, and foot-sore. I distinctly remember my feet blistering inside my sweat-soaked patent leather shoes. I am called into the conference room again. At this point, I am genuinely curious if this is some sort of extreme patience/calmness test, or if I am being filmed for a reality show. No such luck.

At the head of the table is the developer who “called me out” for my presentation. Apparently my lunch mates were supposed to only take an hour, we took almost 90 minutes. He looks at me, rolls his eyes, and asks in the most sarcastic tone I have ever heard:

"So, got any questions for me?"

I ask a few normal questions, meanwhile he is constantly checking his watch and rolling his eyes. He answers briefly and rudely. I thank him for his time, and ask him if there is more. He laughs.

"Oh, we are done here."

I am shown to the door.

I sit in the car for a half hour, wondering what just happened. I look over to the passenger seat piled high with text books I have been studying, books on language design, compilers, algorithms, physics engines, TDD, and productivity.

I was asked none of it. I threw up from stress out the car door into their parking lot.


I found out later their recruiter had given me and many other candidates the wrong time. She was fired shortly after.

I never found out if I had done something to make everyone so angry. I now suspect that they were massively turned off by a host of things. Polyglot programming, practicing TDD, the suit, the not Mac, the late arrival, and a bad presentation probably all contributed to an immediate disqualification. I rationally realize they were terrible and treated me terribly, but the embarrassment is still there. I suspect my presentation was terrible from the get go: that they were expecting some rock-star and instead got me.

A number of times I have woken up in a cold sweat having dreamt about that interview. In the large scheme of things, a bad interview is such a small thing, but fear is fear. I still to this day wonder what I did wrong. Was I arrogant, cocky, insufferable? Did my ego cause them to treat me that way, or was it all them? What could I have done differently? I was only in there for a few minutes!

Few events in my professional life have shaped me as much as that interview. I have turned it into a forge for my talent, the anvil on which I beat my pride. When I don’t know something, I am more willing to shrug and laugh it off, all while learning as fast as I can. When I am humiliated professionally, I know I’ve come through worse and thrived.

Break The Cycle

This story fills me with an overwhelming desire to never continue the cycle of abuse. I strive every interview to try to respectfully work with the candidate, and never humiliate them. I want every person I interview to leave feeling loved as a human and respected, even if they are completely incapable to perform the duties of the job.

When I ask a question, if they struggle, we work it out together. When I ask for code, we write it together, even if that means I have to do all the work. I can make myself their servant, while still assessing their skill with accuracy and dispassion. Those with the skill will show it, and those without will not feel humiliated. I let them interview me, and if that means they want me to go up to the whiteboard and struggle through a merge sort, so be it. In this way, I push back against the interview culture that normalizes degradation and humiliation.

If you are interviewing others, take a serious look at your practices. Would a failed candidate feel humiliated and disrespected? What will they tell their coworkers and friends at meetups about your company? Will they talk about feeling respected, and how they hope to get the chance to work with you one day? Or will they talk of a group of self-righteous jerks who abuse their power to make others feel small? You can break the cycle.

(If you feel like you have all these great ideas but no one will listen, check out my in-progress book: Convincing Coworkers)