I don't really have an answer, but I've thought about this problem too. It can be uncomfortable to fire people for things that aren't transgressions (such as laziness, irresponsibility, rudeness). Some people don't do anything flagrantly wrong, they just don't have the level of ability required for their job despite otherwise exhibiting qualities of a good employee. I'm sure many HackerNews readers work at companies that are serious enough about performance that it seems obvious to simply fire under-performers as such. But in my experience, the average company is much more forgiving than this.