... 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.