what I learned about interviewing

This was my first rodeo through the ride that is tech interviews. I had escaped the necessity that is formal technical interviews previous to this point. Oh buddy, did I end up with scabby knees. It was a steep hill to climb, especially when my previous job didn’t necessitate any of the skills they were interviewing on (pair programming with strangers, system design, etc.). It’s been said before, but interviewing is a skill in of itself; if you’re bad at technical interviews, it doesn’t have strong correlation to whether you’re a good programmer. This leads me to my first point about interviewing that I learned.

  1. The company shouldn’t only be looking at whether you can deliver a correct solution.

By this I mean that it should be obvious that they’re also screening for how pleasant you are of a person to work with on technical problems. If they’re not, well, it’s probably not a place you really want to work at (your coworkers aren’t guaranteed to be – let’s say fun – to work with). And this makes the technical interview so much less daunting imo, because you don’t have to get 100 percent correct to pass; you have to demonstrate that you have active listening skills (meaning take hints from the interviewer while iterating on your solution), and be able to verbally communicate your thought process when working through a solution.

In the end, though, you will have to learn what they’re looking for in a candidate, and be prepared for the format of the interview. It’s extremely difficult to practice for this because the live nature of these interviews is what makes it hard.

  1. Always cringe forward, not backward.

If you can, schedule your interviews in the order of importance for what job you think you might want an offer for. This isn’t to say that you should in any way not prepare for those earlier interviews; you might realize too late that the importance you’ve assigned each potential job. But you should be strategic so that you can approach each mistake as an opportunity for learning.

Despite my preparations, I fell on my face during my first systems design interview. Granted, I had had only a few days to study, but I had no feel for how the flow of the interview was supposed to go. One could argue that if you know how to design a system, you’ll do fine. To that I call bull, because the reason that the company is using this type of interview in the first place is that you’re supposed to be fitting a mold. For example, if an airplane started loading coach first, people would notice and be unnerved. It’s not necessarily wrong, it’s that it’s different than what they’re expecting and they will find a reason to hate it because of this. Humans are habitual creatures. There’s no other sane reason that they would use this sort of interview to screen for a position (mid-level) that will most assuredly not be choosing whether to use a SQL or NoSQL database for a service at the company other than “does this person fit a mold”. This isn’t to say that they are useless at determining whether a candidate knows how to handle tradeoffs, but at a certain level, asking someone to design a system in an hour that would typically take weeks requires a certain amount of playing to a script. /rant

So I took that botched system design interview, and I looked at what was asked, where I went wrong, and used it to inform my studying for the next interview. In my next system design interview, I was actually surprised to find I was able to design the system satisfactorily. Practice!

  1. When you falter during an interview, pay attention to how your interviewers respond.

You may work with these people. You will likely make mistakes. How do they react when you make a mistake? If the interview feels bad for reasons other than you just did poorly, it might be time to consider whether you want the job at all.

  1. Communicate with your company contact if you need to expedite the interviewing process.

I had never applied for multiple jobs like this, previously. It was an entirely new concept to me that it’s a delicate balance to sync interview timelines such that a company isn’t waiting for more than a few days after issuing an offer.

  1. Do not put all hope in one offer.

A good way to lose is to put too much mental emphasis in a certain company. It also psyches you out, and makes you much more likely to be nervous during your interview. It’s fine to know which job that you want, but there are really so many unknowns for each position that you really won’t know if you’ve made the right choice until after your first day of work.

  1. Utilize twitter.

I have my current job because of a tweet, and because some great people decided to retweet it and it reached the CEO of the company. Even if you don’t feel like you have a presence on twitter, it’s much more effective at reaching the right audiences than sending out cold-call applications.