December 16, 2019

This || this: Whiteboard interviews

Ed note: This is a part of series where an author plays both sides of an issue, one of which is obviously terrible. Can you guess which is which?

Ed note: This is a part of satirical series where an author plays both sides of an issue, one of which is obviously terrible. Can you guess which is which?

Whiteboard Coding is a Terrible Way to Evaluate Candidates

Our industry needs to own up to something we’ve all known for a long time: whiteboard coding interviews suck. At best, they’re ineffective at measuring a candidate’s capacity and aptitude for the real day-to-day work of a developer, and at worst they’re an inhumane ritual that amounts to little more than fraternity hazing.

I have never, in over 20 years as a professional developer, had a single project that required me to stand at a whiteboard and implement an algorithm in front of someone in order to do my job. It’s not a realistic representation of how someone works. Imagine a lawyer in a job interview being asked to write a landmark Supreme Court dissenting opinion from memory on a whiteboard. Or forcing a barista to stand in front of you and implement an eco-conscious coffee supply-chain strategy. Or asking a comedian to write a third funny thing with a dry erase marker that barely had enough dry erase juice to write two things.

It’s just not realistic. The problem at hand will either be too trivial to be useful or too hard, basic, or esoteric to be representative. Not only will your candidate never have a reason to implement their own sort algorithm, but if they did, you’d get mad at them, because whatever language you use has its own already-optimized implementation. And sure, I guess asking someone to reverse a string in place tells you whether they have an encyclopedic knowledge of the language API for those all-too-common occasions when they’ll be working on a feature in an alternate timeline where the internet doesn’t exist, but then when you have them determine if a string is a palindrome, you’re doing so ignorant of the cultural differences that might prevent you and the candidate from having a shared understanding of what a palindrome even is.

Whiteboard coding interviews create and reinforce monocultures. They eliminate candidates who have different strengths and communication styles than you. They eliminate people who don’t have the means to buy books, take classes, or spend all their time studying for whiteboard interviews (the fact that there’s a whole cottage industry around whiteboard interview prep is prima facie evidence that whiteboard coding is not the same as on-the-job coding). They eliminate people who may have a condition that prevents them from being able to perform as well in a whiteboard interview but who would otherwise make excellent teammates.

Whiteboard coding doesn’t help you observe how a candidate thinks or approaches a development task any more than watching a lion get fed in the zoo gives you insight into how she takes down a gazelle on the savannah. A candidate in a whiteboard exercise is in fight-or-flight mode, and the problem you are watching them solve is the problem of how to survive this insidious exercise and get the job. 

If you want to see how someone thinks about doing real work, give them something that approximates real work. Have them do some one-on-one pairing with people they’d be working with. Give them a small open-ended take-home project that shows you how they really approach application development. Even better, pay them a fair price to do a small freelance project and see if they’re a fit in an actual real-world scenario. It’s a small investment in actually finding the right people for your team.

The bottom line is we don’t need whiteboard interviews. The only people that like them are sadistic voyeurs that get off on the suffering of others, and even if that’s you, there is so much reality TV you could be watching to get your fix. Find better ways to evaluate candidates. While there may have been some value in limited situations to whiteboard interviews in the past, both technology and psychology have advanced to a point where there are clear better ways. Just like we created penicillin to cure bacterial infections and created jQuery to cure Internet Explorer, we can cure bad interviews and build healthy teams as a result.

|| 10X Developers are Forged in Fire

I’m sorry, was Ra’s al Ghul being a sadistic voyeur when he was honing Bruce Wayne into a world-class assassin? Was Yoda creating a monoculture when he didn’t coddle Luke on Dagobah? Did Miranda Priestly not mold Andy into someone who could take on the worlds of fashion and journalism with confidence and style? Great leaders know that superstar employees must be hardened by trials.

When I am thinking of bringing someone new into my well-oiled strike team of ninjas and rockstars I have to know that they can hang. If someone doesn’t know off the top of their head how to implement their own inline versions of push and pop on an array to eke out perf gains, how will they ever optimize the code that serves the all-important banner ads to our users so we can make an extra .001 CPM?

What is this constant need to make things easier for people? I didn’t get where I am because I had it easy. I had to whiteboard code, and that gave me the strength to become an engineering manager at a media company. If I hadn’t had to persevere through implementing a linked list in the language of my choice at that interview, I shudder to think where I’d be now. Probably some job that’s a complete strain on society, like Project Manager. And not for nothing, but antibiotics have made the bacteria stronger and now they’re poised to dominate their market. It’s called natural selection—ever heard of it?

You’re living in some naive dream world if you think whiteboard coding doesn’t mirror the demands of the job. Are you not walking around randomly popping into cubicles and demanding that your employees stand and reduce an algorithm from O(log n) to O(n) off the dome? I am. It’s called leadership. Every morning during stand up I make the whole team do 100 push-ups, and on every third one they shout out “Fizz!” because I care about mentoring people.

Since when is a monoculture bad? You know who gets things done? Bees. Ants. Boy bands. Not a single individual thinker among them and they build empires. If you’re not cultivating a hive mind on your team, you’re letting the shareholders down, and I’m pretty sure the SEC can prosecute you for that.

The bottom line is hazing works. It separates the wheat from the chaff and in this metaphor, if you’re gluten-intolerant, that’s too bad, too.

Our related podcast with Dries Buytaert

Tags: , ,
Podcast logo The Stack Overflow Podcast is a weekly conversation about working in software development, learning to code, and the art and culture of computer programming.


code-for-a-living February 27, 2020

The eight factors of happiness for developers

I recently came across this sketchnote by Tanmay Vora, and it really resonated with me. As a developer it got me thinking about how this might translate into the life of a developer and our happiness. Based on this sketchnote here are the eight factors of happiness applied to developer life. 1. Resentment Harboring resentment…