It's my personal belief that technical companies should encourage their candidates to expose students to an actual project that a team is tackling before extending an offer to join that team.
On the candidate's side there is value in learning more about how the company works and a chance to get used to your potential collaborators. A fuller and more comprehensive decision can then be made after looking at the team, the codebase, and the way the company operates internally.
On the company's side, there's an upfront cost of an NDA and the intangible cost of draining current employees with a new hire that may ask questions. But the upsides in my opinion are huge:
- You're gaining a candidate who's is able to start meaningfully contributing to the team from the day he/she starts.
- You're able to see how your candidate actualy works in a team setting (rather than indirectly asking about team experiences/projects).
- You hire a candidate who is making a well-informed and complete decision that apparently enjoys working with the team enough to commit to it.
This entire process is not unlike the rotations that grad students to through before settling into a lab. In the academic setting, the system encourages you to explore your interests outside of the binding commitment that the lab you rotate into is the one you'll spend the next 5-7 years working on your thesis.
It's only natural (and the norm in the academic community) to give graduate students the freedom to explore an academic setting that they'll potentially build the rest of their academic careers on. Why don't we open up the same opportunity for technical hires?
Understandably, the risk on the company's end is losing precious time/energy on-ramping a candidate that may not join the company in the end. But if the candidate is truly wants to work at this company, he/she will be putting their best foot forward. That's a great use of time for both sides here - the candidate gets meaningful work experience and an opportunity to put their best foot forward. In return, the company not only gains value from the work being done but also chances to iron out on-boarding and getting more eyes + perspectives on the product.
Another counterargument is potential ramifications from allowing candidates to interact with the codebase and product before employment. But this shouldn't be more than a standard NDA that candidates sign before starting work. Given that these sorts of agreements have been part of the onsite process for some hiring procedures, I don't imagine that the friction here will be too large for employers to handle.