What is the point of keeping an employee who fails to do their job?

We are firm believers in giving someone a real, proper chance when they start a new job. We hate it when we hear of employees getting fired a week into a new role because they didn't live up to some unrealistic expectations from management. Getting good at a job requires proper guidance and hard work, which cannot happen in a matter of days. It takes time, patience, and effort from all parties involved.

That being said, there should be a time frame by which a new employee should be measured. While you can't expect an employee to become excellent at their job within a week, if they still struggle after two years, it might not be the right job for them. Keeping an employee for that long while they fail to meet expectations is as odd as firing someone as soon as they were hired. Give it time, sure, but too much time is also a real issue.

The manager who shared the story below on r/managers on Reddit has raised some questions regarding their inability to fire an employee who's been underperforming for the past two years. No matter what this manager did, the employee refused to get better at her job. She doesn't want to receive feedback; she hates being given tasks, and she fully knows this is damaging her place in the company, yet she doesn't care. 

Recently, she asked her manager to attend a training on critical thinking, which the company would have to fund. But why would they spend money on an employee who is basically one foot out of the door? She clearly isn't good at her job; why should her manager pay for more training?

But then again, if the manager doesn't want to give training a try, why didn't they fire the employee already? What is the point in keeping someone who can't and won't do better?