Pamela Fox recently posted about her experiences with technical interviews and how they make her cry, but I have to admit–I rather like technical interviews.
I certainly understand her points. Interviews can be intimidating, and frightening for many people, and as an interviewer these things should be in the back of your head. When I was conducting interviews at Labs, I attempted to make our interviewees as comfortable as possible, though when there’s a rigorous, 4-5 hour process and lunch with the team, it’s a bit daunting anyway.
Recently, I’ve been on the interviewee side of things, and have interviewed with 9 companies1 to date. I have to admit, I’ve enjoyed the interviews from all but 1 company, and have done very little to “prepare”2 for them.
It’s likely that you, dear reader, don’t believe me, or think I’m batshit crazy, but here me out. Technical interviews, when done right3 (or remotely right) bring with them a large variety of interesting programming challenges and puzzles. By puzzles, I don’t mean how many barbers are there in NYC, or why are manhole covers round? Real puzzles. Like, refactor some code, or build a Minesweeper clone. Or, puzzles stemming from a real problem that the company has that they want your (free) ideas for solving.
So far, I’ve written a date parser (actually, given a bunch of dates, figure out the format), built a food truck map of San Francisco, wrote a text indexing engine, thought about algorithms for reconstructing a jigsaw puzzle, built a simple key-value store, replaced nagios, spec’d out a real-time HTTP request debugger, designed tumblr’s infrastructure, designed heuristics to cut down a search problem, and built a Texas Hold'em game. Where else do you get such an interesting and diverse set of problems to tackle?
I’ve found the key to interviewing is simple–be yourself, and let your past experiences guide you. And if you truly don’t know the answer, talk it out, make some reasonable guesses and let the interviewer guide you. If they’re worth working for, they won’t leave you hanging.
3 in person on the west coast, 2 phone interviews with invitations to fly out, 1 offer before deciding we were staying in NYC (4 here so far, no offers yet). Why should you trust me? I’ve had a bad interview/offer ratio. Well, everyone keeps assuring me the lack of offer is a result of other non- technical reasons, meaning philosophy, work style, etc. Of course, I have no clue if that’s true or not.↩
I’m not being cocky, but I don’t find it necessary to prep. Unless I think it’s going to be heavy on math–my math skills have severely atrophied over the years. It’s just too difficult to predict what kinds of things to prepare for, and preparation only serves to make me more nervous. My advice, relax by writing some code or read something technical the night before. Get yourself into that type of mindset.↩
The best experiences so far have been writing code in front of a computer. Even better was the company who asked that I bring in my laptop so as to be as comfortable as possible.↩