Objective, across-the-board incompetents are very rare. Generally, companies that are well run are going to have very few people (at lower levels) who actually should be fired. Oddly, the levels at which firing 10-30% of people make sense are the managerial levels where people almost never get fired (and if they do, they get huge severance packages that include outplacement assistance).
Most hiring mistakes are bad matching, not bad hiring. The right person was brought on and put in the wrong place. So the correct solution is to pivot: help the person find a transfer to a more appropriate team.
In very small companies, this may not be an option. If there's only 1 project, and you hire someone who's a bad fit for it, you have to fire him, because there's nowhere else to put him. But companies at that size generally don't have HR departments or company-wide stack-ranking.