In Jeff's latest post on Coding Horror, he talks about the "bad apple" effect:
What [the research] found, in short, is that the worst team member is the best predictor of how any team performs. It doesn't seem to matter how great the best member is, or what the average member of the group is like. It all comes down to what your worst team member is like. The teams with the worst person performed the poorest.
On a software development project, especially a large one, there are several things that need everyone's support: source control, requirements gathering, design, bug tracking, schedules, and so on. Looking back on my own software development failures, I can often find one single point of failure that brought the whole thing down.
And the terrible truth is that in a lot of those cases, it was one person that started the downfall. It might even have been me.
Jeff suggests that the solution to this problem is simple: just get rid of the bad apple. But sometimes this just isn't possible, especially in government and teams where seniority (or one of the -isms, like favoritism or nepotism) comes into play.
So my question to you is, how do you deal with the bad apple(s) on your team? Given that the research says that "if you can't beat 'em, join 'em" is the status quo and we know that doesn't work, what is the realistic alternative?
EDIT: I'm not talking about people with low skill, I'm talking about people with bad attitudes, like the ones who think they don't need to use SCM because they're expert coders, or the ones who don't want to fix bugs because it's boring, and so on.