I’ve been thinking about the interview process recently. I’ve been on many interviews over the years in a number of disciplines and the software engineering ones have been the worst by far. There’s something of a prevailing attitude and approach to the process that interviewers seem to not be able to help but engage. One of esoteric and specific questions designed to really make sure that you “Know your stuff”™; almost designed to make you feel like an ass unless you have, off-hand, an encyclopedic memory of anything and everything programming related. If those conversations took place outside of the interview process you would, without question, just assume that some fragile ego was starting a petty, geeky pissing contest.
But at the heart of the problem is the vastness of this field, the technologies, and the focuses. I mean, if you’re interviewing to be a game programmer in any general sense, how could someone actually ascertain your quality from a series of queries like that? Would not knowing the bigO notation of a hash lookup mean you can’t program? How about knowing the endianness of any platform? Or the myriad implications of the “const” and “inline” keywords in C++? Optimization across linker units?
Me, I look these things up when they become focal. I focus on other parts of the process. Broad strokes and then shore things up. It’s a creative process at the end of the day and that’s how I do it and I like the results.
But how does one represent the fact that, in absence of any rainman-esque reciting of language or platform specs, communicate and prove that it won’t be a problem to figure these things out?
Just saying “I am smart” doesn’t seem right.
Let’s try an arbitrarily numbered list of things, all of which seem ridiculous to have to say:
“I am smart”
“Trust me. I’ll figure it out”
“I’m a little embarrassed that I can’t do this on this sheet of paper, but you’ll need to trust me that I could write this in 10 minutes”
“I’m sure I could pick that up”
“I don’t know that, but I’m a fast learner of things”
All of these seem extremely boastful and a little bit like bullshit. If I ask someone a question and they respond without any real information, alarms go off. But regardless it comes up all the time. #4, by the way, is taken directly from my own life from when I was asked to write a recursive directory traversal script in perl on a white board… something which still seems subversive to ask someone to do while they sit and watch you. As an aside I ended up being an engineer at that company after I got tired of being the Systems Administrator and things worked out just fine. I had no problem working alongside the person that asked me that question, despite my failure to perform during the interview.
But then there are all manner of other interview tricks and “Accidental tactics”, if you will, that don’t bother me at all. Such as asking an open-ended question and then just blankly staring at the person (I kind of perversely enjoy that one to be honest). Meaning it’s entirely possible that I’m just bad and uncomfortable with these other elements part and parcel of tech interviews.
Then again, maybe I should just be embarrassed that I still look up some of the things I look up or that I don’t know from memory every implication of every keyword and memory access pattern.
Maybe I am a hack.
A charming, dashingly handsome hack.