making the interview process similar to the job is a good first step. when I worked at Invitae this was my proudest achievement from my time there. I suggested that we change the interview process to a paired programming session that were situations from our day to day work. the candidate brought in their own laptop or was provided one (their choice). the session was 90-120 minutes and didn’t involve leetcode hard problems, just practical day to day stuff a web developer might run into on the job.
I think this would be the most fair to the candidates, especially ones with prior experience who don’t want to spend time on useless leetcode questions that have zero to do with the job itself. I can’t help but feel this is just gate keeping.
The problem with this is that many jobs require weeks worth of on ramping into internal systems, code bases, etc, not to mention many aspects of the job would be working on otherwise secretive stuff. I don’t think this would work at a FAANG, and many bigger companies.
of course — so you have to make it accessible to the candidate. using the internal code base is probably not the best choice. we had them write up a small API with specific requirements in the tech of their choice, and tried to have someone programming with them familiar with their choice of tech.
There will always be burning mistakes, or people who lie or are otherwise hard to predict will be a disaster. What else would you propose?