There are good and there are bad developers. No, let me correct that. There are only developers. You can't really say that a developer is bad. What you can say is that he is one of the following
An inexperienced developer needs guiding. He needs to know what books to read, how to solve a specific problem and he need reviews of his work so that he gets the opportunity to develop and become and experienced developer. This should be his main goal.
I would have no problem working with inexperienced developers, but I need to review their work before I merge their changes in to the trunc. As long as there is a strong will to become better, there is no real problem with being inexperienced.
I really hate lazy people. I can't stand half made job because the developer didn't have the will seeing it all through. This kind of attitude is something that you would want to keep off a project team and just get rid of as soon as possible. Lazyness fails not only in software development, but it fails at life completely.
The passive developer will only do what you tell him to do, and nothing more. He will not seek out knowledge or try to learn new things. He will just keep on doing what he was designed to do, for as long as he has to. I've been working with these kind of people and it can be a drag since you always need to keep an eye on what they're doing and make sure that they got something to do, since they won't make any decisions or initiate any actions by themselves.
These kind of people may actually be created by a too active project managers that wants complete control and plan everything down to the smallest amount of work. The developer gets used to being told what to do, and if he's got no active task, he will - kind of - do nothing.
The code of a passive developer will always need a refactoring, since it is not really thought through, but clearly working.
Alpha Beta Omega
The alpha beta omega developer will try out new technology long before it is ready, write stubs and tests and then throw it away. He is eager to test stuff out, and he has lots of ideas on how to solve a specific problem with the latest, not yet released software.
If you give him a task, he will try to complete this with the latest of frameworks, but the result will also become like many of those tests that never ends up in something that is finished. You will get rushed code, and if the task itself is uninteresting he will try to complete it the fastest and most dirty way possible in able to move on to more fun and innovative project.
Avoid the alpha beta omega developer and do not in any case introduce a framework into your software that has not been released as RTM, whatever this developer's praises are.
I would not say there are bad developers. There are just people. Some people have personalities that makes their coding very hard to put in good use. These developers needs to work harder and realize why their code is not usable for production.