I think the problem these days is that it’s so hard to fire someone. I’m not sure if it’s legal, cultural or otherwise, but I constantly see coworkers who are at best useless and often detrimental being kept on and on and on.
So the game becomes to avoid hiring someone like that at all costs, because once they are hired they are impossible to get rid of.
I wish employment was more like contracting - you give someone a trial for a few weeks and then end it it’s not a mutual fit. No long interview necessary - the job is the interview.
Maybe a little more tricky in Europe, but in US and Canada, all you have to do is pretty much “this isn’t working, you failed your (unachievable as needed) PIP, you’re out in two weeks”. In some states you apparently don’t even have to pay accrued but unused vacation..!
Unless the person is truly a net negative producing programmer - firing, hiring (1-2 month process), onboarding, and then hoping they don't job hop tends to be even more expensive for an organization than having them plod away slowly.
If they are a NNPP, gathering the necessary documentation and putting them on a PIP or shuffling them to another team is likely an easier path.
First, many more applicants than positions. If you've got 100 for a single position, then selecting the best 10 out of that set will look like a high hiring bar when it is 'just' a "we don't have time to interview everyone." And many positions get many more than 100 applicants per position.
Next, the aspect of job hoping that has become fairly common in the past decade. If the average tenure of the person hired in the last 10 years is decreasing because the person can get paid more by switching companies then the other side of the push will be to raise the bar so that the new hire will require less onboarding and be able to be productive faster. If the company is using Kafka in house, and it takes two months to really get to the point of understanding it and the person leaves after a year, that's two months lost. So, instead hire someone who understands it and only requires a week to pick up the peculiarities here so that when they leave in a year you haven't lost a portion of the time getting them familiar with the tech stack.
Lastly, it is a pain to fire someone. You need documentation about their issues and that it is performance related and that its not done during a 30 day window where they've fired 49 other people and that HR is ensuring that they've got the CYA on a wrongful dismissal documented. And then, even when you do fire someone, you've got to go back and reopen the position and hire again and that takes two months from the time you submit the job description to HR to starting a new person along with at least a week of manager and interviewer time in the process.
The safest thing for a company to do is move them over to a team that does low priority, low impact things and never promote them in an engineering capacity. Note that sometimes when you move a person from a dev job to a QA or operations job you'll get the person coming back with constructive dismissal which takes time to handle.
So the game becomes to avoid hiring someone like that at all costs, because once they are hired they are impossible to get rid of.
I wish employment was more like contracting - you give someone a trial for a few weeks and then end it it’s not a mutual fit. No long interview necessary - the job is the interview.