Больная тема.
В интернете можно найти различный опыт:
Пример обманчивости субъективных оценок
Не нанимайте умных
Советы Пола Грэма
Если первая статья просто занимательная. То вторая скорее сюрреализм. "Надмозги", нанятые автором, создали дерьмовенькую глючную инфраструктуру вместо использования стандартной. Много мозгов для этого не надо. В третьей статье скорее адекватные советы, с которыми в большинстве согласен.
Я тоже задался этим вопросом. Затем я перечислил список критериев, которыми на мой взгляд должен обладать программист. Для каждого критерия предложил способ проверки.
1. Уметь писать код. Да-да, очень многие просто не умеют писать код.
Нужно придумать простую задачку строк на 100. Затем предложить соискателю реализовать ее за час-другой.
2. Умение разбираться в чужом коде. С этим у большинства тоже проблемы.
Вот зачем давать в тестах на c# вопрос, как установить в комментариях ссылку на другой элемент? Лучше включить несколько примеров кода, потребовав разобраться, что он делает. Можно также дать програмку строк на двести с багом, и попросить найти ошибку.
3. Умение учиться).
Это, видимо, надо пытаться понять субъективно.
4. Мозги.
Пара задач на сообразительность не помешают.
5. Все остальные человеческие качества. Лучше отдать hr-ам; пусть делают вид, что нужны-)