It's a myth that developers have a ton of offers. There are few developers who got lucky to have multiple offers at some point in their life. It won't last forever. They will eventually face a bad situation trying to get a job after being laid off or being on extended paternity or medical break.
Consider the current recession with record high unemployment, countless employees are desperate to get a job, including developers. Yet companies still prefer to have impassable interviews and hire nobody, than to give a trial.
The next challenge is it’s unfair to weight too much on referrals because it punishes people who don’t know insiders. It also fuels a monoculture.
Also, training a new employee or intern in your systems, code, company procedures etc takes a bunch of time and investment so it's not like you can intern some higher multiple of people than you'd hire.
Why not? If the position isn't a fit for either side after X time on-the-job, that's OK right?
In the US at least, health insurance is a big one.
How are you going to convince me to leave my current job for a 10 week trial period? That right there loses you the set of all people who are currently employed and are fine where they are right now.
For health and safety, security and tax purposes you would likely not be able to have an extended period of more than a couple of days without some form of contract for that 'trial' period.
If you are an 'established' professional then you most likely would interview for a new job while currently employed. So even in the remote scenario that you would take a couple weeks holiday for a 'trial' you would likely violate the contract with current employer by signing a 'trial' contract.
This would only work for junior positions or for senior professionals who have taken some time away from work. But if you make this a part of your recruitment process, there is the risk that you are discriminating against 'currently employed' candidates.
I believe companies fall into two basic structures:
1. agency / consultant model - implement short-term projects, specific tasks, etc. It's easier in this approach to swap employees in and out as new projects start.
2. software product model - the company's entire business model is built around or highly dependent on internal software projects. Institutional knowledge is very important. It's really important to protect the product process and plan for the long-term implementation of strategic vision.
Contract-to-hire works well for #1. But for #2, the overhead and cost of disruption to the core process is too high. Top-tier software products require a relatively smaller number of highly engaged and skilled people to drive projects to an optimal point. These people need to also be directly involved in hiring and onboarding to maintain the culture and high standards. Bad hires can destroy such a team. Thus you end up with the current interview processes as they're efficient and err on the side of rejecting qualified candidates accidentally. If they spent 10x as long on hiring, they could improve the accuracy, but then they wont have as much time to build product which is the key tradeoff involved.