The problem seldom lies upon the implementation, but within the people and communication.
Programming is not a solo task (unless you do something alone, for yourself, without anyone ever using it). It's all about communicating your deadlines, issues, successes, problems, estimations, risks and decisions to the team/client.
Programming itself is a form of communication. You're usually writing the code for the next developer that's going to have to read it (which might be you in a few months).
As a manager/client if you're not sure if you have a good or a bad programmer, you certainly don't have a good programmer. If you have a programmer that always keeps you up to date and makes sure you understand what's going on, you do have a great programmer in your hands.