February 17, 2015 Leave a comment
Whiteboard problems are like tests – hard to take, even harder to write well.
Scratch that. A whiteboard problem is a test. And like any test, its success is based on how well it reveals the capabilities of the person taking it. A bad whiteboard problem is therefore worse than none at all. It may show a competent person to be incompetent, or worse, allow an incompetent developer to appear capable. Why is that worse? Because if a good developer doesn’t get a job, that’s a tragedy for them. If an incompetent one does get a job, that’s a tragedy for their entire team.
Before I became a developer, I was an expert in adult education, writing such great books as How to Teach Adults, and How to Teach Adults, 2nd Edition. So I’ve done some deep thinking about tests. My conclusion is that the purpose of tests is not to make people fail. Their true purpose is to show how much people are capable of under pressure. With that in mind, I’d like to cover here what makes an effective whiteboard problem. I hope this is of value to founders at startups building their first-10 team, veteran recruiters looking for a new perspective, and other junior develoeprs looking for insight beyond “Here’s How to Hack Your Whiteboarding Session.”
So what does a whiteboard problem test?
This is low-hanging fruit, but important fruit. (Note to self: improve this metaphor later) Make a list of terms and concepts – stacks, factorial time, etc. – that succesful employees for the position for which you’re hiring must know. Then use them throughout the whiteboarding session. If the applicant doesn’t understand them, that’s a big red flag.
Clarity of Thought
How does the applicant approach the problem? Do they solve it by rote because they memorized the answer? Do they go at it by throwing darts, trying different ideas until one sticks? Do they waste time solving for complex edge cases first? Do they even ask about edge cases?
A good whiteboarding session is an x-ray into the applicant’s brain. Pro-tip: If the applicant works silently, give them a prompt or two to verbalize what they’re thinking. Speaking of which…
Ability to Communicate
“Without clear thinking there can be no clear communication.” A whiteboarding session is an applicant’s chance to show how good they are at communicating, and, therefore, how smart they are at thinking. (Note to self: Change blog tagline to “smart at thinking”)
In all seriousness, clear communication is the heart of effective collaboration. It’s been said that your success in technology is directly proportional to your ability to accurately communicate about technical ideas. Watch how well the applicant does when it comes to talking through their general approach, their understanding of edge cases, where they are in their mental state and so on.
This goes without saying. Decide how much of the problem(s) applicants must be able to solve. Should they be able to solve the first one, then solve the base case for the second one and ID all edge cases? The above factors are important to better weed out people who have just memorized a book of interview algorithms. But at the same time, if applicants can’t solve problems to the degree that you need, they’re probably not a good hire.
Grace Under Pressure
I learned this one in the dojo. The whole point of testing, as my sensei once taught me, is to see how well people can perform under pressure. So make sure to apply some pressure. If an applicant looks like they’re solving the problem a bit too easily, it is your obligation to give them a challenge.
This may be as simple as telling them to solve for an edge case first. Check their response: To get riled up? To totally lose track of what they’re doing? To politely ask if they may continue with their approach before returning to the edge case?
The point is not necessarily for them to jump up, salute you and say “Yes, sir!” (unless you’re Jeff Bezos) Instead, see how they respond to the pressure. This is the person you may be working with through deadlines, server outages, and other crises. If they can’t handle a little pressure in the interview, you probably shouldn’t hire them.
Whiteboarding is an important part of the hiring process. Make sure it serves that purpose by carefully choosing a problem that allows the applicant to demonstrate their knowledge and problem solving ability. Then see how well they can think, and communicate about what they’re thinking. Finally, make sure they can do all this under a little bit of pressure.
If you follow these steps you’ll be better than many, if not most people who present whiteboard problems. Who knows? You might even find the best person for the job.