I recently was at an interview that I think was actually good: they showed me a pull request of their code and told me to do a live code review on it. Not only could they determine if I have experience with the process, they could also see if I can understand what the code I would work on does.
I would use this on all the interviews in the future.
I had a similar one, it was the best tech interview so far! They left me for 10 minutes with some intentionally bad code and then asked to tell everything that I think was wrong with it. I had a blast there. :D
The interview process is completely terrible across so many companies. I think more people should stand up and try to change it. Whiteboard interviews came around the same time the whiteboard was invented. It's fake. No one can code fluently on a whiteboard - it's out side of the programmers natural environment.
And these stupid riddles - ugh.
Now with the rise of bootcamps, the line in the job description "4 year degree or equivalent work experience" is scaring a lot of perfectly qualified people away.
But I completely agree Ben - You don't know what's going to happen, and you shouldn't hold back in fear. If it's an opportunity you're excited about, apply and prepare the best you can.
Well It's depends. On my first job as a development, HR was a external company, they work like for 30 companies and they don't know about the actual job. I saw the announcement online they needed a PHP MySQL developer with knowledge on linux, something simple. In the interview they asked a lot of common questions and technical questions were "do you know windows?", I said "yes and linux too" and they continue "but what is linux? Never heard of it". They just published the announce without knowing.
Then they referme to the company (the actual IT company) where I meet my future boss, he make me another interview asking "do you know about PHP and SQL?" and then "we use windows 7 and will upgrade to windows 12 soon" I just agree and leave.
Later they called me to do a practical test. A CRUD test for a small system. This test was to prove skills and to see how people work. The test was maded by one of the developers because people lie to try to enter. No time limit, you can use the internet and any tool.
Was easy and I started weeks later. Now I'm the one who does the interview and the one who aply the test. We encourage to use the same rules for every one, some people don't finish the test or takes more than 6 hours. So we try to look for someone who work clean and at least has knowledge about the basics, so we can train as a jr developer.
This post is excellent! I often disqualify myself all the time because I feel like I am inadequate, but reading this article makes me realize that I need to take more risks and not play it safe in my job search.
There is this one aspect of whiteboard interviews that is really interesting and is: logical thinking. You should be able to formulate a possible solution in pseudocode without it having to be correct. The problem relies on what the companies made out of it.
For example, implementing a well known algorithm in a whiteboard is kind of bullshit, trying to give a possible solution for some short problems like "is this word a palindrome"? Or that kind, I think is really important.
Lately I have been interviewing for some positions in India, and since I am in the US, I just let them use an IDE or what ever editor they feel like and try to work on the problem together. I have had some rough bumps so far, hoping that might work out. Soon we will be hiring some interns, and again will be interviewing them as well. So just need to work out the logistics so we do not do a white board problem. I am not so much looking for them to come up with the right solution, but can they work well with me and can they break the problem down. Bonus points if they know about TDD or at least try to test the code while we are working on it.
Interviews and education suffer similar shortcomings, they are by definition both outdated (especialy given today's paces) and partially irrelevant. You can't possibly answer today, tomorrow's questions and no matter how many shorting algorithms you can dish out in x y z languages it's most likely you'll never need them in your day to day responsibilities.
So follow what comes more natural and promising to you (tech wise), take your shots and hope for the best.
This is a half-serious suggestion.
Why not do a cursory interview to check whether someone has the technical skills and cultural fit, and then randomly pick from the remaining pool of candidates? Such a system would be fair, since every candidate in that pool has an equal chance of getting accepted (after passing the initial check). It's also a formal process, which should please engineers' need for "order". And it's cheaper than calling people for repeated interviews and coming up with whiteboard puzzles, so you're saving the company money.
It's not an ideal solution. But it's better than pretending we know how to identify candidates' competencies accurately.
You're also likely increasing your talent pool by not maximizing for people who are interested in preparing for and going through with the whiteboard interviews. Good programmers tend to have good jobs and lots of options already.
Ah thanks, Ben! This is good. 😊
Great article. One question, though: is
"or pray on companies"
intentional, or should it be
"or prey on companies" ?
(although - depending on your skill set or the (lack of) sanity of the interviewer - praying might be involved, too :-) )
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.