I don't know what's a generally good plan but I'm starting to know what makes me want to hire people:

* 1 skill I really need - a language or a technology

* Attitude

I like to work with nice people and I don't care how "good" an arsehole is. So I'm looking for someone with give and take that my team would enjoy going for a beer with (or just a j20 or whatever) and someone who is interested in programming and computers generally - not doing it just for the money. They must have a little flexibility - be able to take some suggestions and yet also come up with arguments for what they think is best. You have to be able to review code whilst being very nice and not insisting that everything should change whilst at the same time pointing out the critical things that probably have to change. Egos get bruised so social skills help a lot.

I do have a bias towards degrees because I've met experienced programmers who do silly things just because they've never heard of "Big O" notation and never seen a parser generator in their lives so they think they are up for writing parsers manually. Or the one that thought he had sped up an MD5 algorithm by 1000x....... I just feel safer if I'm dealing with a person who groks some of these things but in the end I've accepted people without degrees who just gave me a good feeling about their openness to learning and general reasonableness and thus far in my experience I was not too wrong when I went with that.

I don't care about quickly programing some exercise but I want to give them code to write before the interview so that we can talk about it like a code review and we can see if they understand the ways we might criticise it or suggest improvements themselves. I want to see someone writing stuff that I would feel reasonably happy about maintaining not something that is so clever that everyone is at their limit of understanding when trying to read it.

I've met people who make a lot of effort but don't think in terms of algorithms very well. Their code is full of logical flaws but they are really great at reproducing bugs and doing other technical things - they possibly shouldn't be programming but maybe QA or something similar.

I've met people who can write algorithms but are very quick to give up when they hit a difficulty. They call out for help too soon so I ended up helping them all the time. Often the only real difference between me and them in some situation was that I felt I could not give up because there was no-one after me who could do anything for them if I didn't. I like people who struggle a bit before asking for help - they end up understanding the answers.

I'm not too familiar with bootcamps but I think I value someone having experience with debugging - with working out something that isn't going as it should or which they don't understand well enough to just know the answer but they set out in a logical way to try to work out what the answer is. This isn't strictly about programming but sort of seeing if they get the idea of divide and conquer etc.

I don't want to have to explain why code without tests is useless - and that's something that a lot of "experienced" programmers don't agree with - a bad attitude to that turns me off instantly because I don't want to have to fight the battle to change their minds.