I've had all sorts of experiences: fired people who were good but their minds were elsewhere, fired bad people that shouldn't have been hired; I have waited too long to fire someone, and also I have kept people I intended to fire and seen them improve.
Outside of the obvious cases you cite, firing should be the end of a process, not an isolated action. As soon as you start having real doubts about the performance or fitness of an employee, have at least two meetings with them to discuss the issues and create improvement plans and actions, before resorting to firing them. Those meetings are hard to approach correctly, but not as hard as actually firing the person, so please do not wait to have them, and make the most out of them. They will not just benefit the employee (clarifying your expectations of them), but often also yourself (understanding your own mistakes as a manager).
Having been on the other side of a 'improve or leave' action, and then getting an out of cycle raise six months later. I think the most important part is simply clearly informing someone they are below expectations. Many people, myself included tend to look for the upper and lower bound of expectations. Or as a friend said, you never show up barefoot on the first day.
As soon as you start having real doubts about the performance or fitness of an employee, have at least two meetings with them to discuss the issues and create improvement plans and actions, before resorting to firing them.
Sure, as long as you understand that the need for improvement is as likely to like with management as it is with the employee. Shitty morale because of management political shenanigans, lack of engagement because nobody bothers to share the big picture or any information about what's going on, or boredom because the employee's skills aren't actually being utilized, are all management fails which can look like an employee problem. If management is going to sit with a "problem" employee, they better be prepared to look in the mirror a little as well.
While all of that is true, in my experience, quality people choose to end a relationship rather than allow others to drag them down.
I agree that that is true in the long-run, but there may be temporary circumstances where someone will bear some pain longer than they might otherwise... maybe they don't want to create a "job hopper" look on their resume, maybe they feel dedication to (some) of their colleagues, maybe it's a down economy and jobs are scarce in their market, etc. In either case, I contend that management should, ideally, be willing to accept that sometimes the required change is on their side.
That said, my experience is that poorly run companies usually don't seem to improve, and that the best option for an employee is usually to just leave, depending on any mitigating circumstances.
However, let's not overlook the fact that there are a proportion of managers who view termination as both the start and the end of the process with no conversation taking place. I think that's the "at will" part of the "at will termination" clause everyone signs. And I have a sneaking suspicion that this proportion is much larger than we might hope to think.
Outside of the obvious cases you cite, firing should be the end of a process, not an isolated action. As soon as you start having real doubts about the performance or fitness of an employee, have at least two meetings with them to discuss the issues and create improvement plans and actions, before resorting to firing them. Those meetings are hard to approach correctly, but not as hard as actually firing the person, so please do not wait to have them, and make the most out of them. They will not just benefit the employee (clarifying your expectations of them), but often also yourself (understanding your own mistakes as a manager).