 <p>One thing I have noticed through the years is that people never improve their performance if you fix their mistakes. (Most of the time they won't even realize you changed it because something was wrong; they will think you are just a control freak who can't let anyone else's work stand unchanged.) Identify the problem and ask him to fix it. Do as many iterations of this as it takes. </p> <p>Make it clear that a question asked early is far better than a missed deadline because he didn't understand something. Don't get snippy and snappy when he asks a question either. If he thinks he is bothering you, he won't ask. </p> <p>Take some time at first when you give him a new task to sit down and discuss possible solutions. You can save a whole lot of time by directing his design process rather than waiting for a final result to check.</p> <p>Code review his stuff and have him code review yours. Seeing better code will help imporve his process. His questions when trying to understand your code will help you better understand his thought process. </p>