Please see the disclaimer.

Introduction

I was recently hired at SchedMD, LLC, and while SchedMD did everything right when they hired me, I was rejected at other companies for reasons that did not make any sense.

This post is about what those companies could have done better. I will talk about one company I interviewed at that I will call TBC for “The Big Company.”

What Was Done Right

TBC did some things right, and SchedMD did everything right.

Costs

One thing that TBC did correctly was that they made sure I was taken care of during my time interviewing. I didn't have to worry about air travel, hotel, meals, or anything else. That was nice, and it should be standard.

Trying to cheat interviewees out of money, which happened to one of my friends with another large company, is unacceptable.

Lunch with a Host

My favorite part of interviewing with TBC was my lunch with a good host. I did not have to worry about impressing him, and he and I just talked. It was an important break in the middle of a long day of interviewing.

Cultural Fit

When the CEO of SchedMD sat me down for an interview, it was to see if I would fit in, literally, with everyone else. He made sure that I had what it took to make it at SchedMD.

I can't talk much about that interview, since part of the reason it worked is that I didn't know exactly what he was going for, and I just had to answer honestly. But it worked.

What Was Done Wrong

There was one big company that I interviewed at, which I will call TBC for “The Big Company.” TBC did several things wrong.

Pet Programming Problems

All of the technical interviewers I had asked me to implement their own pet programming problem. It was obvious too, since I would implement it correctly and quickly, though not in the most efficient way. I did this to move onto other questions quickly, or to allow them to probe deeper if they wished.

All of them elected to probe deeper.

Pet Programming Solutions

However, when I would start “thinking out loud” about better possible solutions, it became obvious that each of them wanted a particular solution to their problem, a pet solution, if you will.

For one of them specifically, I implemented a better solution using a data structure that I knew was optimized for the problem and the work that the company did. However, my interviewer said that it wasn't ideal, even though it was; he had wanted me to find his pet solution and seemed to think I didn't know what I was doing simply because I thought differently from him.

The end result was that my interviewers said that I did not know how to code.

How to Fix It

For people who actually know me, the assertion that I do not know how to code is simply ludicrous. As some examples, I have:

  1. Implemented a nearly-perfect bc and dc,
  2. Implemented a library of dynamic data structures in C,
  3. Started building an extensible programing language.

So, obviously, TBC and its interviewers got it wrong.

How could TBC have prevented getting it wrong?

Code Portfolio

For one thing, they could have asked me to submit a code portfolio. I would have submitted everything I listed above and more. Then it should have been obvious that I knew how to code.

“But, wait, how would they know that you were the one that wrote the code?”

Easy: I would have submitted the git repos, in which I have signed nearly every commit.

Assign Interviewers Questions to Ask

Each company should compile, and continually add to, a list of programming questions to ask, and to prevent interviewers from constantly asking their own pet questions, each interviewer should be randomly assigned a question for each interview.

Interviewers Should Do a Mock Interview

Then, they should be put into a mock interview, where they are the interviewee.

This means that someone else, who already knows what they can do, will be the one judging how they do on the interview.

This will do several things:

  1. Since the person “interviewing” the interviewer cannot really help them (since it will be the first time they saw the question), it will hobble the interviewer a little bit. This levels the playing field between them and the person they will interview.
  2. After having had to answer the same question that they will ask, also in a high-stress environment, the interviewer will have more empathy for the person they are interviewing.
  3. The interviewer can only judge the interviewee on how they do compared to the interviewer, in the same situation and with the same practice, not compared to what the interviewer can do after asking the question over and over again.

Conclusion

These changes will increase the amount of effort required for each interview by 3 times. I understand that it's a lot to ask.

However, if companies will do this, I would bet that they would reduce their false negative rate by more than 3 times.

I guess it will take some company trying it out and seeing if it reduces their hiring costs before we will know for sure.