I have great faith in people. I believe that everyone deserves a chance to prove themselves. But if one fails... that's a different story.
In the past week I've been interviewing computer scientists for various jobs. Usually, I'm looking for those top 20%. It doesn't matter it they excel in programming, algorithmic thinking or other technical topics, only that they excel at something. I don't mind spending time at teaching the material required to successfully fulfill a certain job, only that the person would be one that I'd know I'm not completely wasting my time on. Some of the best computer scientists I know, haven't touched a computer until they started their degree (or even later), the others are programming since they were 10-years-old, and speak Java better than Hebrew. So there is no formula to find the best people for the job. This is why interviews aren't simple, for both sides. It is very important to ask technical questions from different fields of computer science, and also to test the way one is thinking. So the interview might be long, stressing, dynamic and tiresome. But those who made good impression would usually know that, since they'll have this good feeling inside them after leaving the interview. I'm not a bad person, but there are some people who made me (yes, they made me) ask them "So, why did you learn computer science?", in the end of the interview (such question at the beginning is legitimate and makes sense). Think about that.