Let. us. fire. people.
The current environment in tech is as follow: Someone goes through an interview process. Depending on the result, they get brought in or not. If they are brought in, they accept an offer. Usually it will contain some kind of language about blah blah trial period 3 months blah blah, sometimes in precise terminology, sometimes vaguely.
If someone is absolutely useless right off the bat, immediately everyone's like "but but we need to coach them, they just started, they'll get better". If after 3 months they're still useless, then it's "Blah blah it's the company's responsibility to keep them around and coach them because we hired them and we failed at interview".
That can only happen so many times (and can ruin teams or entire companies) before you start getting downright paranoid when interviewing. Maybe you have a lot of false positive and false negative, but if your interview process is Google-like enough, on average you'll turn out okay-ish (source: Google/Facebook/Netflix/whatever other company with such an interview process. They have some pretty strong teams in there). But since it's so hard to get rid of a bad apple, you can't take risks (Im being told Netflix is good at getting rid of people).
Change the game a bit: make it easy to get rid of bad apples early on. You know the interview process is bad anyway. Give people a chance. If they're actually competent, they have nothing to worry about. They'll get hired, prove their worth, and stick around. If they're bad, well, bye bye. Then we no longer have to rely on excruciatingly stupid interview processes.
A lot of people think this is inhumane/heartless. That big evil corporations MUST provide people with jobs and must keep them no matter how bad they are because they have bills to pay. I say its heartless to not give people a chance to prove themselves (or to fail while at least trying).