Before I get to the point in this post I should say that this is my first post in English and because of that I'm sure that it's going to have a lot of mistakes. Knowing that, I would like to ask you to correct me whenever you find one of them. Ok? Let's go!
I've been working as a professional developer since 2004. At that time I didn't really know anything about software development. Nowadays, almost six years later I still don't know much, but one thing I do know: only people can make a project succeed.
Since I started working I talked to many people from many different companies (clients and co-workers) and for a little bit more than two years i am in a position where i can choose if we should hire someone or fire someone. During this time I've heard almost nothing about people getting fired for being a bad professional. That's a strange behavior and made me think. Why don't I see many people being fire? I think I can count on my fingers how many times I saw someone getting kicked out from a company. If we pick my team as example I can tell you that we worked approximately with thirty different people in these years and I can only remember of letting one person go.
After gathering this personal experience, watching a lot of presentations and reading books and articles I realized that projects and products that were successful had one simple thing in common: good people.
I think that the modern companies that are full of those "quality guaranteed" processes (ISO, CMM, ITIL and [put another silver bullet process in here]) forget how to make people perform good on their jobs. They put too much effort in the belief that the process is enough to keep things great and forget that people doing mediocre work are very bad for business.
By doing nothing to this people, we are encouraging who doesn't do a good job instead of congratulate who really does. If I stop and look backwards I'll see that i did that myself a lot of times. I saw someone on the team that was not up to his/her tasks and even seeing that I kept myself quiet. This is very harmful for everyone involved.
Another reason of why it happens is laziness. Managers and leaders often see that a team member is not corresponding well but they are too lazy and accommodated to do something about it. It's easier to let things just happen than change the situation and hire someone more skilled to do the job.
I could seat here and write until sun shines again how a bad professional looks like, but I'm pretty sure you know how to recognize one. Everybody knows what a bad professional looks like, but still, they have jobs and they make my job (and yours, good one) more difficult.
So from now on, promise yourself that you're not just going to keep the wheels spinning. Propose changes, challenge people, force them to do their best. If after all this hard work you still have a bad team member, fire him/her and give his/her place to someone who deserves it. This is the only way we can build better teams and make bad professionals go away (or improve themselves).
 Yeah, it's pretty simple once you've figured that out.
 By skilled I meant technical and personal skills that are very necessary to make a person able to be part of a team.