A friend of mine asked me today, "How should I fire someone the right way? What are the tricks to do it nicely, gracefully, and professionally?" I responded by saying that if you question yourself about how to do it right, you're doing it wrong in the first place. If firing is a painful and unpleasant process for you, there is a problem with your management model. Firing must be an easy and open procedure, visible and understood by the entire team.
I mentioned this problem before in my post about team morale. I said that firing someone should not be done behind closed doors. Instead, the assessment of individual performance should occur openly and be visible to the entire team. If you need to close the door in order to talk "privately" to express your concerns and eventually to fire someone, you are a bad manager.
I also explained some time ago that a perfectly managed team is working for the project, not for you, the boss. The team must share the same goal and work towards it. The boss (or CEO, CTO, project manager, Scrum master, team lead, etc.) is there in order to enforce the rules accepted by the team. The team agrees to the rules, so the boss is just making sure they are enforced.
If firing is unpleasant for you, the rules are not clear.
If the rules are not clear, you're a bad manager.
The firing is unpleasant only when your decision is not supported by the team. You feel you're doing something wrong to the person you are firing and to the people who stay on the team. You feel it only because you don't have enough support from your team. You're acting as a dictator, not a true leader.
The firing decision should not be your decision. It should be derived from the rules your team agreed to work with. You should not fire when you don't like the person. Instead, you should fire when the person doesn't comply with the rules, like when there's a lack of performance.
When the rules are clear, everybody understands them, and reconciliation of performance is done regularly and openly, everybody will understand your firing decision and support it—including the person you're firing! Because it won't be your decision, but rather a decision logically derived from the rules. You will work for the project, not for your emotions or personal feelings.
By firing a person who is causing problems for the project, you will be doing a good thing for everybody—the project, the team, and the person who will go and find another place for his or her skills and talents.
Let me reiterate: If firing is unpleasant, there is a problem with the manager and the management.