My experience is that knowing who's a good programmer is like knowing what's art: you know one when you see one. That's why I don't get the coding interview. Just an everyday conversation with a coder will give you a better idea whether he's any good or not, and it will do this without stressing him out or impugning his integrity (which is exactly what you're doing when you ask someone a bunch of trick questions on a…
There's always a set of programmers who sound erudite because they are erudite. It's typically not that easy to fake being erudite, so it naturally follows that programmers who sound and behave like they're competent are usually competent.
A simple strategy would to always select from that pool. It might even be a relatively optimal strategy too if you account the time and effort to interview people.
However, my experience has show me that assumption has been wrong on a number of occasions. People have both surprised me and disappointed me. I wish I could say it's been the rare case, but it's happened a lot more than I would have liked.
I've considered I'm not the best judge of people, but I can't help but notice a lot of my colleagues aren't the best either. Some are and I envy their talents to notice some set of heuristics I haven't picked up yet.