When I hire people (developers) I focus on the following things:
1) Do you understand the basics of programming? The exact definition of "basics" will vary by the job. Writing basic scripts probably just requires an understanding of how to use classes, functions, etc... Some more advanced roles might require more complex data structure and algorithmic knowledge but this really needs to be targeted to the role being hired for.
2) Can you think? More specifically, give the person a hard problem and see if they're able to adjust their thinking when it becomes apparent that the initial approach is flawed
3) Does you ask questions? I've found that people that won't ask questions in an interview also won't ask questions on the job leading to them taking many wrong approaches. I intentionally under specify things to encourage questions.
That's about it on the technical side in my opinion. If they have those things they're probably able to learn anything else you require. I have some additional things I look for while hiring into my current company because I know the personality characteristics required to survive here but that's going to vary from company to company.
With your bare hands?!?