>
>I'm trying to figure out how to point the guy I'm working with in the right direction to help him bring his level of knowledge up to speed.
>
Yeah, it's not easy. Part of the problem is with trying to explain the types of constraints that are imposed in any programming language and the level of abstraction they allow you to work at.
You almost have to start very basic and help them to write pseudocode. They're bound to either oversimplify, or undersimplify solving the problems put to them. Once the pseudocode is written, you begin to have them fill in the blanks. This might mean they'll spend all day looking stuff up in the manuals, but it will help to get an understanding of the language. You'll probably have to work with them to convert the pseudocode into "real" code.
Of course, this is all based on the assumption that the person even has the mindset to do programming. There are a lot of very smart people who just can't work in the level of abstraction required to do programming. But chances are if they can solve problems logically, they can program.
You might also suggest they buy a copy of "Code Complete" by Steven McConnell. It's an excellent book.