On interviewing

by Jason on April 3, 2015

We’ve all heard horror stories about terrible tech interviews. What makes them bad?

I’ve recently interviewed at a few places just because I was bored. It’s been 4 years since I’ve done this so I was curious how interviews were conducted today. It was never super serious nor am I unhappy at my current position.

One notable terrible tech interview process has been Uber. It went something like this:

Day 1: Introductory email from recruiter
Day 2: Phone call with mostly clueless recruiter who couldn’t answer any tech questions I had.
Day 2 (continued): Phone call with tech lead. No discussion about my background just discussion about general Uber tech. Ok..
Day 3: Given a week to complete a programming assignment. Took me 5 days while working full-time.
Day 8: Send code to recruiter. Wait… wait some more.
Day 9: Email recruiter to ask if there is any feedback
Day 15: Receive “feedback” that they liked my code and wanted to move forward
Day 17: Simple frontend remote pair programming exercise with frontend engineering lead from SF.
Day 20: Recruiter wants to schedule me to fly to SF to interview in person. Travel is to be paid for by me then refunded at some point.
Day 21: Email recruiter to ask if I can be interviewed in NYC instead… the position is in NYC after all and would rather not fly 8 hours to interview for 1/2 a day.
Day 22: Recruiter agrees, sets up interview in NYC.
Day 25: My schedule changes so I email recruiter to see if they can switch my interview time. Response from recruiter included: “but I wish you would have told us about your time constraint beforehand.”
Day 25 (continued): Told them to cancel interview

I don’t mean to single out Uber. But I think their terrible interview process highlights some fairly common mishaps in tech interviews.

Have a plan

It was clear that Uber didn’t have a solid game plan for the interview from the beginning. Why have someone spend 5 days on a relatively involved take home test only to follow up by quizzing them on fairly basic front-end techniques?  Even though I enjoyed speaking to all of the individuals in tech it still doesn’t make any sense.

It would have made more sense for Uber to start with a simple remote pair programming exercise to ensure that I’m competent and then follow through with a take home test.

Don’t waste peoples time. Have a game plan and know how and, more importantly, why you’re choosing to interview the way you are.

Take home tests, for example: they are controversial because they take a lot of time for someone to complete but they offer a great discussion in subsequent interviews. You can discuss the code, how you might optimize it, issues you faced/overcame, etc. In Uber’s case there was no mention of any follow up so it seems their take home tests are just a barrier to entry.

Just pay for the travel

You want the right people working for your company but they’re not always going to live within commuting distance of your main headquarters. Interviewing is hard to schedule as it is. Just pay for the damn travel – this is a no-brainer. You’re supposed to make it easy for the people you’re interviewing.

Uber: YOU’RE A TRANSPORTATION COMPANY. If you wanted me to interview in SF I am willing to bet you could have made that happen without putting the burden on me to schedule and pay for it. Kudos for adjusting so I could be interviewed in NYC instead but as you’ll see below that wasn’t really enough..

Skip the recruiter nonsense

The first step in so many interviews is speaking with a recruiter of some sort. Why? My opinion on this might sound callous (it probably is) but why am I talking to you?

Typically this phone call only answers one question: “Does this person have basic communication skills?”.

Good technical recruiters would also answer a second question with this phone call: “Is it worth investing another engineers time to speak with this person after me?”.

This first phone call, just like any work meeting, should have a purpose and a clear outcome. The vast majority of these first phone calls I’ve been a part of have served no purpose. The recruiters aren’t able to answer technical questions I have and don’t know enough about my background to decide on their own whether I am savvy enough to be interviewed.

So why do it?  Just stop.

I’m interviewing you too

Anyone who thinks interviews are one-sided are out of their minds. I absolutely love my job and I am in no rush to leave. I do what I love and I’m quite good at it.

So if I’m talking to you you aren’t just interviewing me. I’m also interviewing you to see if I want to give up my great job in exchange for the one we’re talking about.

So when I see a completely disorganized interview process, pointless phone calls with clueless recruiters, and attitude-laden statements like “but I wish you would have told us about your time constraint beforehand” I think I know what my decision is.