Here're my points:
1. Supply candidate with a challenge that I built myself, tested with a co worker
2. Test should have many small goals and bugs: Get more data points on what they achieved, don't make it binary!
3. Challenge should include real bugs from when you built it. e.g. typos, wrong attribute names like 'innerHtml' instead of 'innerHTML', forgetting an import, etc.
4. Make results runnable / viewable (for front end work)
5. Explicitly tell candidate that Google is not just allowed, but expected
6. Allow candidate to ask questions so you're not dehumanizing them (but don't always give a straight answer)
7. Follow up with questions like "what do you think could be improved?"
8. If candidate spends more than 10 minutes on any of the challenges, allow them to skip it
Get as many data points as possible from an interview. Make it as close to real life as possible.