Click here to Skip to main content
15,894,291 members
Articles / General Programming / Algorithms
Tip/Trick

Programming White-Boarding Interviews Suck

Rate me:
Please Sign up or sign in to vote.
2.60/5 (13 votes)
31 Jul 2015CPOL4 min read 9.6K   1   2
Read why

I believe I expressed my main idea in those four words in the title. They really do.

Why?

Come on, it’s not the 90s anymore! When developers’ beards were longer, and we didn’t live our lives online, this kind of interviews were cool, and useful. But today…

Today, we have the Internet (thanks for that by the way). And the Internet is literally full of white-boarding algorithmic questions. Almost every problem that can be solved in 40 minutes on a white-board is there, with tons of solutions. And that’s too bad.

If you ask any company why they do white-boarding interviews, the answer will be “It helps us to see how a person thinks”. No, it doesn’t! Not today. Today, such kind of interviews help to show how good interviewers and applicants are in exploring the Internet and memorizing existing solutions.

Let’s discuss why and be honest with ourselves. One note here. There are always extremities. There are always people who are exceptionally good with algorithms. But in today’s world, they are not average developers. They’re scientists. Here, I’m talking only about average.

So how does an average interviewer look like? Companies don’t hire specially trained people for that, that’s for sure. An average interviewer is a mid-to-senior level developer, who is busy enough with his own code, and last time used algorithms in college. He has a couple of algorithmic problems in mind (or just looked up these problems on the Internet before the interview), and knows solutions for them. The worst part, he expects an applicant to give the same solution! If not, well, “Good luck. See you next time…”.

Yeah, yeah, I know what companies say: “This helps us to see how a person thinks”. It’s not true. Let’s be honest, if you don’t give an expected solution, most probably you failed in the interviewer’s eyes. Unless interviewers teach CS in a college and work with algorithms on a daily basis, they expect a solution they know. Even if an applicant starts thinking about cool but different solutions, the chances are the interviews just won’t recognize this. Just because it’s not the solution they expect. Seriously, you should be way above average in CS to be able to adequately evaluate applicant’s logic and way of thinking.

What about an applicant. Well, if he is lucky enough, he happened to read a solution for the same/similar problem earlier on the Internet. If not, the only hope for him is to quickly think about a solution an interviewer has in mind. And be able to do this loudly on a white-board.

Don’t get me wrong. I love CS. Any developer must know CS basics. And some CS questions must be asked during the interview. How binary trees work, how linked lists work, what is a hash-table, how well-known algorithms work, and so on. Just basics.

Software engineering is mature enough. It’s mature enough to be tightly related to CS, but to be separated at the same time. You wouldn’t ask a structural engineer to create a new kind of concrete, right? Physicists/chemists did this already. A structural engineer should know how to use it.

What To Do?

So, what to do now? If you hire a software engineer (not a scientist), ask questions about software engineering. Ask to design a small feature, ask to write a simple code and check how clean it is. Ask what is happening on a background when the code is executed. Ask what is happening when a thread is created. And so on, and so forth. The sky is the limit.

These questions will help you see what kind of code an applicant is able to produce. They will help you see how experienced an applicant is, how well he knows internals of the technologies he is working with. What are the benefits for you and your company from hiring a person who is perfectly able to memorize solutions from the Internet, but can’t write clean, testable, scalable, efficient code?

Look at the big companies that persistently keep practicing white-boarding interviews. When was the last time they innovated, not acquired a small cool startup, but really innovated?

Next time, when you’re choosing an algorithmic problem to ask during an interview, find a couple of them with no solutions. Go to the white board and try to solve them in 30 minutes thinking loudly. Managed to do that? Ask 2-3 teammates to do the same. After that, are you still sure these problems are the best way to find a right developer for your team?

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
General[My vote of 1] My vote of 1 Pin
SublaidM18-Aug-15 1:18
SublaidM18-Aug-15 1:18 
Ok I'll give you that some companies do have a bad choose of questions they present to candidates. As you mentioned most commonly its the repeated algorithmic questions which are all well known and the platform or the framework that you are working on probably has an out of the box solution for it.
But there are jobs where this is important and the position itself would require someone that can invent a wheel on spot, but in most cases its not...

Either way no one is looking for a guy that can memorize existing solutions, this would be a false positive result of a whiteboard testing.
Also most companies allow (I would even say prefer) if you write a pseudo-code, but it needs to be detailed enough so that it is obvious how to convert it into a real language (no one should care about the syntax so much anyway...).
Nevertheless the whiteboard testing is not useless, on contrary its very efficient at detecting the programmers that are only able to code by googling. These kind of programmers, even dough it may not seem to you that way, are rather inefficient developers and the code they produce will, among other, be rather unreadable, unmaintainable and unintuitive.

Also if you think about it what is this person's contribution to a solution, he copy-pasted someone else's work and tweaks it to its requirement. First don't you think that this will most likely result in a spaghetti code and second do you really think its such a big achievement for him to be able to change an existing code to suit his needs?
I mean common, do you really believe that this is a mid-to-senior level developer's skill set?
Also you really believe that a copy-pasting can result in clean, testable, scalable, efficient code?
Well honestly I don't believe that...

In your everyday job as a developer you'll constantly encounter problems that need to be solved by creating so called "mini-algorithms" (basic algorithms and logics). You'll need to know how to choose the right data structure, how to approach the problem at hand and also how to tell how efficient your solution is. You need to be able to do this without the use of internet.
You see that is essentially what a developer is, a problem-solving guy not a copy-paste guy. The only thing that is mandatory for looking up on the internet is research for a complex problem (which you would then break into a smaller ones after the research), looking up at the API documentation or learning new developments and frameworks.

What we do for whiteboard test is we take some recently solved problem from our code base and we create a general story for it. This can be any kind of problem, from bug-fixing, specific feature implementation or yes even algorithmic problem. You can see what kind of tests I'm referring to by checking out some of the programming tests from TestDome[^], we give our candidates something like that. Also note that what I'm referring to with a general story is that a problem is presented in a general manner, something that anyone can understand and relate to (like putting a book on shelves in specific order).
GeneralMy vote of 4 Pin
newton.saber1-Aug-15 15:33
newton.saber1-Aug-15 15:33 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.