It's a tough situation. I'll give you my experience and you can take away what you wish from it. I'm 1 of 4 partners in a company that does consulting work as well as some products. We've been growing for a few years, and about a year ago we were doing well enough that we were starting to turn away consulting work and product improvement was getting behind, so we decided we'd hire someone. We didn't have a lot of cash, so we decided we'd get someone right out of school, someone bright, and train them up (there are no schools that really offer curriculum in Windows CE and Windows Mobile work anyway).
First we posted on CareerBuilder to get resumes. We got everything from developers to forklift operators sending us resumes. To prevent having to actually look through all of them, we can up with a 20-question skills assessment that we sent to everyone who sent in a resume. If they sent back the skills assessment, only then did welook at the resume. That meant we only had to read about 10% of them.
The skills assessment was basic. It had problem solving questions and questions on general technology concepts. Development questions were left open to allow them to use any language they wanted for an answer because language can be taught, thought process cannot.
We then looked at the results of the assessments and the reumes and lined up interviews for 4 people. I interviewed them at a local coffee shop to keep intimidation factor low and to have them relax. I asked about their experience, history, goals, etc. The usual.
We ended up selecting someone who graduated from DeVry and therefore had some classroom C, C++ and Java experience and even a slight bit of embedded (used a PIC) work.
He came to work and almost immediately needed constant management and direction. Not his fault, we thought, he was new (though he was a "team leader" at his previous employer).
Any time we walked in, he seemed to be texting on his phone or IMing and not doing work. Well, we IM during the day too to communicate with each other (all partners are in different locations, the hire was working directly in my office).
I gave him a fairly straightforward project to give him focus, and hopefully teach him some stuff. Extend an existing sample web site for our web server to include a page that displays log data. He had questions at every step so I had to stop doing my work to help him. My productivity went way down. He's new, we thought. Give him time.
After about 6 months of working with him, I gave him a new task. Extend a task manager type application to show all threads in a given process. The API work for getting the info was already done, it was basically just a "get it into a Form that the user can see, select, etc. on. He then asked how you add an item to a ListBox. Seriously. After 6 months of working with us, and after getting a supposed technical degree. I let him go that day.
In the end we ended up flushing roughly $30k down the toilet. I could have hired an experienced contractor part-time for work for 30k on a 1099 basis and ended up way ahead. That doesn't even count all of the headache associated with doing payroll, etc that bringing him in caused.
So now when we need help, I turn to a small hand full of experienced contractors I know I can trust. The cost per hour is substantially higher, but I know what I'm going to get, how much it will cost, and how long it will take. I also can hand it over and walk away, knowing it will get done.
I'd only take on a new hire again if I could devote at least 3 months solid of my time to sit with them and train them day in and day out. Even then I'd require that anyone I hire had been programming since they were in grade school. If a person started programming in college then they don't have the drive or interest I want.