I actually agree with your thesis! You're right that candidates are only willing to put in this level of effort if they are really interested and consider your company a "top 5%" big opportunity.
So it's critical that you convince them that you are in that top 5%! You don't want an employee to join you because their top choices turned them down -- you want to be their first choice.
We regularly won candidates away from Google, Facebook, Uber, Twitter, etc. If you want to build a great team, you're going to need to be able to do this too.
Re: code reviews -- yes, we gave everyone a thorough code review.
Why?
Unless you're offering FAANG levels of compensation, isn't it pretty arrogant to think you're anyone's top choice?
Candidates can easily lie to you about this. In fact in my last job hunt I was instructed to lie about this by recruiters who are actually being paid by the company I'm lying to.
I told every company I interviewed at they were my top choice.
It's not arrogant. It's simply creating a process where you can filter out for folks who are truly excited to build what you're building and believe in the potential future impact. It might also turn out to be a big payday, or not.
Not everyone is simply chasing that 400k TC every year. If you lie about your excitement, a panel of folks who have went through the same process will easily sniff it out.
Your intention is to get candidates to fake excitement or drop out?
- Unit tests? Yes. It will increase your standing.
- Docs? Absolutely. A must have. You will not be considered really otherwise.
- Deployment? See above.
- Support 5k requests? Not unless that is what the test is testing for, pay attention during phone interview about the role and it's requirements, the test will look for this and other generalizations.
- Clean code? Very, very important. Don't try to show how smart you are, show how audience aware you are. Most likely you will be working on a team, a team doesn't want a cowboy programmer.
Something you didn't mention but bodes really well for anything with a front-end interface: hosting. Executives hate running things themselves, so a hosted version will put you at the top of the list.
It's crazy how many coding tests are poorly designed and waste a candidate's time. I'm putting together a list of good practice for test design here: https://candidatecode.com/articles/coding_challenge_best_pra...
Feedback and contributions welcome
That's a problem even if you have reasonable expectations yourself, because the candidate probably has experienced some tests where the expectations haven't been reasonable. For a (real) example: marking candidates down for not having an analytics integration.
How does your candidate know that's not important to you, even though it was important to the last company?
> testing your experience, not your literal skill in pumping out code
Past a certain point, it gets much more efficient to discuss experience in an interview setting. Good coding tests should be designed to test the skills you care about most to produce a strong hiring signal for the next phase - it's difficult to showcase a full decade's worth of experience in 4-8 hours' worth of coding challenge.
> Anyone can pump out code
I've found that to be depressingly untrue amongst a significant percentage of engineering applicants.
This is also a double-edged sword, if the experience is horrible, you can be sure none of their classmates will apply to you or even their school if you blew it exceptionally.
There is an article by Joel Spolsky about Hiring great engineers that touches on this point also: https://www.joelonsoftware.com/2006/09/06/finding-great-deve...
> Even though only about one in three applicants who make it to the in-person interview stage passes all our interviews, it’s really important that the ones that do pass have a positive experience. Even the ones that don’t make it go back to campus thinking we’re a classy employer and tell all their friends how much fun they had staying in a luxury hotel in the Big Apple, which makes their friends apply for an internship the next summer, if only for the chance at the trip.
Honest question: Would you feel differently if these companies had 1-2 days of onsite technical interviewing instead of take-home problems?
In practice, I rarely get pushback from candidates for our 4-hour take-home problem. We provide clear instructions about expectations, constraints, and boundaries. All candidates have thanked us for allowing them to work on their own time in their own coding environments.
... only for the 1-2 top companies they are interviewing for.
I have discontinued multiple interviews because they demanded 4-5 evenings of work for free on short notice, if I am going to spend 10-20 hours per company I have to take two weeks off from my current work to do it. On the other hand I have done the required work if I really want to join a company, but they are only top 5%.
Another problem is, usually what is expected and how the project will be judged is not mentioned beforehand;
- so do I write unit tests?
- do you want docs for running it?
- should it include deployment instructions/code?
- does have to support 5000 req/s?
- how important is clean code for this?
each add more time and these kind of question are never ending.
So unless you are Stripe, Airbnb, Netflix, etc. (Very strong Engineering and better than average culture), I will not bother, will say thank you and be on my way.
Finally, let's say you have done the project and they reject you, they never put a fraction of the time you spent to give you feedback. because that means a lot of time they will spend on someone that will not be hired. Also might open the way for litigation for discrimination in some countries etc.
On the other hand; Once I was managing hiring process of a new grad where we asked her to design a FE+BE system, after receiving it I spent a couple of hours reviewing it, we decided to hire her, she was very enthusiastic and smart, I also sent her our notes and how she can improve the project. Her response was along the lines of "even if you don't hire me I am very grateful for doing the project, did learn a lot" She joined and quickly became a very productive colleague.
Edit: I noticed that the author mentions they keep in touch during the project and provide a code review, had not seen that yet while writing the comment. In that case it makes sense, but the candidate should know they will receive feedback even if they fail which I believe is hard for the team to accomplish but kudos if they did manage to do it.