 <p>Well, you deserve a medal for putting that much time into this issue.</p> <p>I'd suggest these things:</p> <ol> <li>Make him read <em>Code Complete</em>. <ul> <li>Treat him like a senior programmer, but check every step he makes until you see good results.</li> <li>Don't take over or he won't learn. Let him make mistakes, but then make him fix it.</li> <li>He should always make estimates. Then have him acknowledge when his estimation is wrong.</li> <li>Always encourage him to <em>think</em>. Fresh CS students hardly think; they code like robots.</li> </ul></li> </ol> <p>Give him some ground rules, like: never write the same code twice, and if you do so, check your design, etc.</p> <p>Also remember that he is afraid from you as much as he wants to learn from you. You may have forgotten things that he is learning, so you need to push him to ask questions and make sure he doesn't feel stupid in doing so.</p> <p>In six months he will be good and ready! (to leave and look for a better paid job :-) )</p>