I am a team lead dealing with a programmer with a Bachelors Degree in Computer Science. He has a couple of years of experience and is still a code monkey. Having observed him for quite a while, he is very slow in programming even fizzbuzz style questions. For other stuff, he tries to make do with just tinkering with code or asking for help on programming forums. For scripting stuff he get can barely get by with that, but for our core work of embedded systems using our proprietary toolchains, online forums are not of much help. As a result, he is either very late or incomplete so that I am forced to assign his work to others. When confronted he acknowledges all of this, but he does not know what practical steps he needs take on how to improve.
He gets stuck on issues for a long time, being unable to debug. How to develop his skills to the next level, make him a problem solver, develop architecture skills and understand large systems, debugging skills and make him plan his tasks? In all his annual performance reviews he has never rated high. As his team-lead I have to develop a plan of action in consultation with him.
Asking him to quit is always the last option but I would like to avoid that.