Conducting interviews is hard. Hard enough to make Google fail. In fact, so many companies are bad at it that failure is standard, and finding one that does it well makes you wanna hop on board without asking much else.
The question we face is whether this candidate can succeed. The question we seem to answer is whether she interviews well. Let's not substitute –– Daniel Kahneman, Thinking, Fast and Slow
In all fairness as an aspiring developer, I always felt something's off, and I'm sure many of you did too. I mean, why were they asking me how to traverse a graph depth-first if they were hiring a web developer to work on their badly written monolith? It wasn't until later when I had to conduct interviews myself and miserably failed when I started to slowly understand.
Bluntly put, we're humans, biased, sometimes a bit lazy, and not that good at estimating complex things as we think we are. That hurt a bit, ah? I can almost hear you say "speak for yourself". That's because there's more to it: the ego. We need discipline and determination to overcome this.
But is there any hope we can fix this? Do we want to fix it? The answer to the latter question is easy, you can substitute it with: do you want to hire the right person? As for the former, on a large scale, I'm not sure, but here are a couple of things that helped me:
1. Define the scope Make a shortlist with all the skills the ideal candidate would have. Keep it simple, 5 to 10 skills, weighted by importance. This usually emerges naturally from your tech stack, but you could also include soft skills. In any case, it has to fit your project/team/company. Also, a good way to ensure you don't overdo it is to consider how many of your current colleagues/employees including yourself would score enough to pass.
2. Let the data decide for you Grade the candidates' competency on each skill and simply select the one that ranks highest.
3. Stop having "a feeling" If you drive your candidate selection based on intuition, I have bad news for you, you're better off shuffling the screened résumés, pick one at random and call it a day.
4. Don't substitute skills for likeness You might like some candidates better than others, that doesn't make them a good match, and not even decent persons (remember, you've just met them). Extroverts are overrated in our society. Focus on finding someone that can get the job done and brings value to the team, else, you might end up working double-time just to have someone nice to chat with during the ever-shrinking breaks.
5. Be fair If you're looking for tricky questions on the Internet to prepare for the interview: you're doing it wrong. The things you're asking should organically emerge from the things you already know and encounter in your daily coding activities. Otherwise, you're not qualified to hold the interview in the first place or you're hiring for a different position.