| distinct lack of focus on code reviews as part of the assessment
"Writing code is easy, reading code is hard"
An interview based on reading, explaining and critiquing complicated code would give a better window into a candidate's skills than having them solve the kind of coding challenge that can be completed in a short interview.
Also, being able to identify which algorithms would be useful in solving a unique problem and explain what the pros & cons are would go further than implementing an algorithm abstractly.
It’s my personal interview approach, I have a some 60 lines of code example I will ask questions about. What does it do, if I wanted to change x, where would I need to do this, etc. Seniors will take 30 seconds for the first two questions. I‘ve had junior applicants where I had to stop after 15 minutes of trying.
I think this format is very conducive to leveling because there are some tells that are really obvious. Like input validation, error handling, database indices, database column types, race conditions, etc. You can't fake these easily, but with experience, they surface quickly.
Interviewer had a small API. Found missing error handling, missing validations, poor choice of ID column type, missing index for a high volume read query, possible XSS vector.
Loved the format so much I ended up making a small FOSS tool for code review as interview: https://coderev.app
I tried this and found that there are a set of potentially good candidates who simply cannot bring themselves to criticize anything in front of an interviewer due to the power dynamics of the interviewer/interviewee relationship.
"Writing code is easy, reading code is hard"
An interview based on reading, explaining and critiquing complicated code would give a better window into a candidate's skills than having them solve the kind of coding challenge that can be completed in a short interview.
Also, being able to identify which algorithms would be useful in solving a unique problem and explain what the pros & cons are would go further than implementing an algorithm abstractly.