You can call me a weirdo but I don't have many non-IT friends. Most of the people I hang out with are somehow related to software development etc. But the few non-IT friends I have seem to not be able to comprehend what I'm saying when talking about how recruitment for a software engineer position looks like. Somehow a very basic, in my opinion, idea of studying for an interview just doesn't reach them. "What do you need to study? You are doing a similar job now, right? You just need to show what cool stuff you did, that's enough right?". And it recently hit me. They are right! So what's the problem?
Being too cool for school
I'm not sure about other industries but in IT if X, yes this cool X everyone is talking about and for which everyone wants to work, is doing something we immediately need to do the same thing! Yes I'm looking at you Google/MS/Facebook and your algo style interviews. Even though most of the companies don't need such skills and/or are not capable of attracting (due to budget etc. constraints) people who are capable of solving those. But that's not the only problem. Github (and other such services) instead of your resume is yet another example. Some people started using this strategy therefore so should we! Well in this case it actually makes sense since what's better to evaluate a coder than looking at his code? The problem is that this requires you to spend your spare time coding on open source stuff. Cool when you're before 25-30, not so fun when you have a family and responsibilities.
Regarding this point I could write a short novel. This is really the thing I despise the most about current interview standards. EVERYONE asks them. Because they are cool. They will evaluate the candidates *thinking process*, they will show you how bright the candidate is, is he thinking in a logical way, can he utilise the pieces of his knowledge to solve a new, complex problem. Perfect! Or not. Or it will just show you that the poor guy has no idea how to solve this particular problem which requires trick Y to be used together with data structure K. But it's all cool because you knew the trick so it's obviously a trivial problem. Testing for algorithmical/data structure knowledge sure is damn important, hell I used to do that too! But it's one thing to check if someone has a good grasp of it, it's another thing to ask ridiculous TopCoder style questions for a position that won't require you to solve those on a daily basis!
There's no empathy
In my previous jobs I often overheard some employees mock the people they just interviewed "hahaha how could he not know P?! [...] did you hear his response to A? he tried to to it with E, with E! (laughter)" the thing is in most cases those were pretty valid answers. Maybe not optimal, maybe not the cleanest but for crying out loud the poor guy (or girl) was locked with some strangers in a room for 45-60mins, nervous as hell. Cut the poor soul some slack. Interviewing isn't about you feeling superior, it's about evaluating a candidate. I think most people performing interview forgot how it feels to be on the other side. I'm not telling you to go easy on the candidates, just remember that it's very stressful and that sometimes small stupid mistakes will appear which wouldn't happen in daily life.
One question interviews
This is usually, but not always, related to "algorithmic interviews". Way too often I see interviews that are basically a single complex/hard question and are supposed to check a wide range of your skills (from basic knowledge through some more advanced theory up to practical skills). The problem here is that if the interviewee has bad luck you won't evaluate anything. So what if he's good at anything else if he flunks the only question you asked him?
Coding on the whiteboard
No, sorry you won't convince me here. This *is* retarded. I don't code on a whiteboard daily, I don't need to think about a semicolon or missing brackets. I have an IDE that will tell me if I made a typo. I don't work with whiteboards, why are you evaluating me based on a skill I am not and I will not be using?! Why is there another interview specific skill for which I will have to prepare?! This reminds me of my university days when I had to write ANSI C on a piece of paper and would get failed for forgetting a ";" or writing a "=" instead of "==". Yeah guess what? I don't need those skills after all, despite everything my teachers told me. "Oh you will be more productive, oh it will save your *** a lot of times". Guess what? I have an IDE at work.
Asking the wrong questions
Go to amazon or google and search for "programming interview". Quite a list of results, right? Let me ask one thing - why?! Why are there so many interview specific books/resources out there? Isn't the interview supposed to evaluate my overall skill as a software engineer? Isn't it supposed to be based on my work experience (or university courses if we're talking about new grads) plus what the potential employer needs? Are you telling me my current work is not important and we shouldn't talk about it? Or that you are not capable of/too lazy to prepare proper questions that will check each candidates skill set? It's quite offensive, it's like saying "yeah you have a nice CV here, let's just completely ignore everything on it" (sometimes they will ask you stuff about it but let's be honest that's just small talk before their templated questions will appear). In the past X interviews I underwent not a single person asked me about general coding skills, practices, real life problems etc. It was either algorithms or some random trivia which, I guess, the interviewer just liked (like asking to write a very specific sed command, well the interviewer was highly displeased when I did it in AWK oh well).
Not checking actual coding skills
I guess it's just a special case of "asking the wrong questions" but I feel like it needs a separate paragraph. Here we usually go from one extreme "no coding whatsoever", through "only short code for the algo task" to the other extreme "I need your full blown github account". Where did everything between go? I'm applying for a position where I'm supposed to get paid for writing code. How come you are not checking how good I am at that?! What will that 5-15 line long method I had to implement for this clever algorithm tell you? Design/architectural questions? Sure let's do those! But still drawing some stuff on the whiteboard is different to actual coding. This is interesting because in my career I encountered only maybe 2 or 3 times interviews where I would do actual live coding with the interviewer so he could see how and what am I doing. And only once was I asked to write a programme over the weekend. This is really perplexing why people won't check for the most basic skill while interviewing you.
Well that was quite a rant, yes sponsored by a failed interview :-) This time it was actually my fault for performing poorly but still most of the points above hold (though in this case an algorithm interview was fully justified). Well I guess I can't do much more than just to hope for the above trends to just pass so we can move to more reliable/realistic ways of checking if the guy in front of you is fit for the job or not.