I'm curious what this means. Whiteboard style interviews aren't perfect, but at the very least they demonstrate 1. You can communicate with another engineer on a technical problem (simply writing the code with no explanation isn't sufficient), and 2. You have the determination to study CS topics for a long enough time to be prepared for an interview.
Both of those skills should have at least some correlation with success at your job, certainly better than a coin flip.
An interview only has one question to answer: How long will it take this person to do what I need? Everything after that is you trying to sell the company to the candidate. After you do the interviews, you pick the person who needs the least ramp time.
Quietly staring at a person writing on a whiteboard while taking notes isn't communication. It isn't normal. It tests nothing except the candidate's whiteboard interview technique. You test their communication ability... by communicating with them. Have a conversation.
Testing someone's determination to do useless studying for your ridiculous company is pointless. I am not here to get you to join my cult. I am here to pay you to do things. That's it. Unless your job is to design and review algorithms, I don't care if you can draw depth first search on a whiteboard blindfolded.
There are a million ways to figure out how long it will take to get a person up to speed. I make a list of the skills needed for a position. I write down an approximate time to learn each one. In each interview, I figure out what skills the person has by discussing that skill. That's it.
You'd be shocked how many people that write years of relevant programming experience and fail that. Do we get some false negatives, probably. But it's a reasonable price to pay compared to hiring someone unqualified.
I think a big reason for this, is that you can teach yourself to be a developer, and all the millions of articles and videos on the topic mean you can get something done without understanding the fundamentals. I think this, for some, create a false sense of competency.
It's easier with say, structural engineers - if they have an exam and or relevant work experience, there is a pretty high chance that they're up for the job. And you wouldn't hire a junior engineers without a senior person overseeing and checking their work for grave mistakes.
I don't think false negatives are good. How many positions go unfilled for months and years? A lot. At a larger company, it won't take long before they remove the position entirely. They might not be wrong to do so either. Eventually your bus factor goes to zero, and whole teams go away. I have never seen anything beyond FizzBuzz, experience, and conversations be predictive for actual work. Even these only weed out the most outrageous candidates.
I work in the chemical engineering industry. They sort resumes, ask questions, and call references. They don't ask them to do sophomore level process energy and mass balance with multiple components and vapor-liquid equilibria on a whiteboard. Most aren't Professional Engineers either. Junior engineers used to be a crap shoot. Now there are so many graduates compared to junior positions that most companies will only hire people that interned with them.
I'd rather that happen, than hire unqualified people. Hire and then fire someone is damn expensive - months of salary and a lot of hours wasted. If you don't get them out of the door fast enough, the damage they can do with incompetency is even greater.
Doing 7 hours of whiteboarding interviews for every candidate won't flush out any of these. Not a single one. If you can tell me the magic 8 ball I need to shake to fix this, I am wide open to suggestions.
You would have considered me a false positive then, despite the success of my career.
A phone app is one thing, ERP or accounting is another, avionics is another.
That's not saying much. I'm in my 40s, been in the industry for a long time, studied CS, etc ... but put the proverbial gun to my head and ask me to perform with judgement like that, I'd probably forget how to spell my own name.
There was some research into this, and IIRC, only half the programmers, both experienced and junior, got a while loop right (IE: no off by ones etc) the first time.
I wouldn't say getting it right on the first try is the most important thing. Writing code, logically thinking it through, and running through test cases to fix mistakes is pretty similar to how coding on the job is, albeit with less contrived problems.
Do you find people who did well on a preliminary test where they wrote some code fail this? If not, then why do the whiteboard? If people do fail, do you assume it's because they cheated on the previous test?
I think your stated explanation is incoherent, because you are claiming that self-taught developers can "get something done" without being able to write your ultra-simple algorithm. How can that be? You're not saying that someone can't handle B-Trees and you therefore won't hire them, you're saying they can't do anything and yet somehow they were hired and do stuff at other places. If they can "get something done", why are they useless?
If your comments are based on a lot of genuine experience and sincere and heartfelt, had you considered that maybe what's going on is simply that a large percentage of the people in the industry do not and cannot do whiteboard programming, but only write code at a computer? I have literally never had to, to get a job, and I'm not sure I can remember doing it in undergraduate classes either.
Joel Spolsky (and no doubt others) wrote something about how you can't hire the best people by just advertising a job because mostly the same people apply to all the jobs and the really good ones aren't in your pool.
But a corollary to that, I think, is that when you do hire some decent people, and you go on doing it, because it worked adequately, you are likely to wrongly conclude that is what decent people look like. It's not just the rock stars that are missing from your pool, it's the people who are terrible at interviews and are much more loyal to a job than those who can handle whiteboards and small talk. You may be in a bubble where you, and the people you hire, are working much harder than people in another bubble, but it's just a different way of doing things, not the only way.
I think this idea of your hiring pool not being representative and getting wrong ideas of what good and bad people are like has implications for diversity of various types, but I'm not going to flesh that out here.
My preliminary test is a phone call if there is more candidates I want to interview than I have time for. No coding.
> you're saying they can't do anything and yet somehow they were hired and do stuff at other places.
I have not stated that they've worked other places. I said that they claim to have worked at other places - that is a very important distinction.
> If they can "get something done", why are they useless?
I don't need people that can "get something done", I need people that can work in a team, do code review on both sides, do pair programming when the situation calls for it.
> It's not just the rock stars that are missing from your pool
I do NOT want a rockstar. They're expensive and not that much more productive. I want a great team and you build that carefully with hard working people that complement each other.
> it's the people who are terrible at interviews and are much more loyal to a job than those who can handle whiteboards and small talk.
We've had our share of people unable to perform a whiteboard "problem" as interns and for one-off things. Commonly for those that was unable to function in teamwork, was that they want a task and be left alone. That is not how you produce great software, and it certainly is not how we do it because of the software we write.
> I think this idea of your hiring pool not being representative and getting wrong ideas of what good and bad people are like has implications for diversity of various types, but I'm not going to flesh that out here.
Again, my goals are people that can work in a team. A whiteboard is representative for both communication and a basic level of competency.
Ok, but what does that have to do with writing code on a whiteboard? I'm telling you a fact - there is a whole world out there that doesn't do it, before or after a hire, and yes, of course they work in teams. I'm not out for an argument on how people should do things, so don't make it into one.
I have had a team that wanted to just chat on Slack and approach the tasks in a divide'n'conquer fashion. It does not work, and introducing a "lead architect" to structure everything is like pulling the reins of a mule - it will move backwards. Everyone needs to participate and feel shared ownership.
So if people cannot code simple shit on a whiteboard, it's my experience that they are a poor fit for this way of working.
I work really bad under pressure and don't like memorizing algorithms. I hate programming anything complex on a whiteboard or anyway on-site.
Simple stuff, like your example is fine. It's a good way to weed out charlatans. A few points what I consider a good test:
* No previous algorithm knowledge required.
* No ticks.
* An average candidate should finish it in 5 minutes. (So we gave them 10 mins)
* It can be written in 10-15 lines.
* Pseudocode is fine
Why should this be inadequate to demonstrate technical skills?
I can write Rubyish, Goish, Pythonish or PHPish pseudocode, but the syntax will be only 90% correct. I remember distinguishing features(like Ruby blocks), but features that all language has always a blur.
All interviews could be simple Q&A sessions to make sure the person isn't a charlatan and then sell them on the position.
HR isn't a science, and it never will be. The FAANGs spend god knows how much time and money on it, and they admit that their interviews aren't better than a coin flip.