I think it is important to distinguish between a bad programmer and a bad developer. Being a programmer, delivering code is one part of our job. But being a developer, making the project happen, is much more than just delivering code; it is working in a team, sharing knowledge, and most important, helping the customer get the product they need.
I have met great programmers, which are poor developers, and vice versa. However, the two are often related, and then you basically just have a bad resource.
In my opinion, being a bad developer is a lot more expensive for a project than being a bad developer.
Here is my list of top 10 characteristics of a bad developer:
- Has a big ego and is more interested in his/her own success than the success of the team/the project.
- Does not want to share knowledge of technology or domain.
- Protects his/her own code at all costs, that is, does not let others criticize the code.
- "Never does anything wrong".
- The best defense is an offence. Attacks others before they can attack them.
- Writes code in their own style, they are above any standards set by the project.
- Only accountable when it suits them.
- Often leaves others to solve their problem.
- Talk about other team members behind their backs.
- Usually delivers poor quality work, but not because they cannot do better, they just don't care to.