The written portion is part of our take-home coding test. We have the candidate do a short and simple coding exercise, and at the end, there's a couple open-ended questions about their approach, what they could have done better, etc.
I find it really insightful to give people a simple exercise to complete and then ask them to talk about it. The answers to the questions are almost more telling than the code itself. You can easily see who is struggling to understand the concepts, versus someone who just didn't have much time to complete it, just by reading their responses.
Even for the same exact code, someone might answer "I completed all of the requirements", and another person might answer "I wrote this in a hurry and it doesn't meet requirement [x] all of the time, but to handle circumstances like [y], I'd implement [z]". The latter person is always a better engineer.
If you want a job, about the last thing you are going to want to say is that you were in a hurry (meaning "I didn't care about this job enough to pay proper attention to this"). This is going to be your calling card, so it has to look great! You make it appear as if you are penalizing people for going the extra mile to complete all the requirements.
And I’m in no position to expect candidates to treat a take-home code test like a real job. These are all experienced engineers that already have good jobs. They don’t need my job.
I 1000% prefer someone who didn’t spend much time on my code test but knows what they’re talking about, to someone who spent a bunch of time and is a bad engineer. The time constraint will be resolved when they quit their existing full time job.
Yes exactly! If you need to have a take home coding test, do something simple and then use that as you discussion starter! Your developer is making decisions everyday on problems they may not have experience with. They are never making decisions in isolation without any internet connection.