Just read this excellent article by Eric Elliot, Why Hiring Is So Hard In Tech. Here’s my favorite part:
These don’t work:
- Puzzles and riddles
- Whiteboard code tests
- Big O notation quizzes
- Detailed quizzes about the mystery corners of the language
These work great (in order of value):
- Pair program with candidate on an actual issue from your ticket queue (let the candidate drive)
- Code samples / OSS contributions
- PAID Sample project assignment (err on the side of paying fairly — say $100+/hour for estimated completion time — if the problem should require 2 hours to complete, offer $200)
- Review past work / portfolio
- Read candidate blog, publications, watch candidate talks
- Ask candidate for input on a real problem you’re currently working on
- Ask specific questions about software problems and solutions from candidate’s resume
IMHO puzzles and riddles as part of coding tests are the WORST. First off, no one is thinking their best during an interview. Second, solving riddles is (bizarrely enough) not a regular part of a dev job. Neither is whiteboarding (at least not like it’s done in interviews) nor chats about Big O notation. If you are interviewing developers you should ask questions that relate to what they actually might do. Recently, when I’ve been talking to candidates, I have been talking about actually problems that we have and it’s definitely helped me judge how great a candidate will be by their suggestions.
If you are looking for a job as a developer or hiring one, you should absolutely read this article.