Code tests. Developers almost universally loathe them.
Whether you are for or against the practice of code tests, they exist and they are a part of today's developer culture. And they aren't 100% bad. Statistically, I myself have landed a fair percentage of jobs after taking a code test. As unfortunate as it may be, I have to attribute some of my current financial position to a willingness to complete them (and basically work for free).
Reality bites. But it doesn't have to bite so hard. We developers can bite back and mold the system to collectively save all of us some time and heartache. It just takes an understanding of economics and a willingness to do a bit more bargaining up front.
How often have you run into this one? You apply to a job, only to get an email from a recruiter directing you to a code challenge. Upon completing the code challenge, you are told someone will get back to you, and they never do.
It's pretty common, and dare I say it, utterly infuriating. You just gave them a few hours of your time, and you got nothing in return. They didn't even bother to speak with you. The experience, on the whole, is just as bad as being stood up for a date.
So why do we do this? Why do we brew up a pot of coffee, put on our thinking caps, and go to town solving problems for people who aren't even willing to do so much as send us a semi-personalized email indicating the slightest hint of interest? Would you do the same for a person you are attracted to who doesn't seem to reciprocate your affections?
Of course not, and that's how we should treat code challenges. They are a part of this particular mating ritual (although it is debatable if they are necessary or not), and we shouldn't engage in them unless the other party has sent some clear signals that they are interested. Otherwise, we are just wasting our time.
Think about the economics of this situation. It costs this company nothing to ask you to do a test. They can sit back on the sofa and watch as the results roll in, deciding to only go with someone who arbitrarily fits their numerical definition of "the best."
Whoever did the test in the shortest time with the "cleanest" code wins. Everyone else loses.
Now ask yourself if you want to support that kind of hiring practice. The answer should universally be "no." So don't do it. Just don't.
Do this instead.
Whenever I get one of those emails with a link to a code test, I try my best to turn it around. I reply with nice email saying I would feel more comfortable taking the test after putting a human face to a name. Then I ask if there is a time I could speak with an engineer on the team.
If they can arrange this call, I do it, and then I take the coding challenge afterwards.
This works for a few reasons.
It makes them "invest" something in the job interview transaction. If they are truly interested in you, they will give up some of their engineers' time (an extremely valuable resource) to speak with you.
It communicates a desire to feel a human connection in your work. You aren't just doing this for the money, and you aren't some code robot. You want to be friends with your co-workers and feel good about working together as a team.
If they agree to it, you've basically gotten the first interview for free. From this point forward, if they decide to reject you, they won't be merely rejecting a submission to a code test. They will also have to think about that nice human being they chatted with on the phone. It's harder to reject someone when there's more of a human connection.
If everyone drops their pants at the smell of money, we all lose. I encourage you to engage in the job interview dance. Just do it more cautiously. Be generous with your time, but only after a prospective employer has demonstrated a willingness to give you a little bit of theirs.
If we can collectively reject awful hiring practices, we all win. Employers already have most of the power in this relationship, so we need to band together and consider how each of our individual actions affect the community as a whole.
Don't ever do a code test before speaking with an engineer on the team. You have the power to stop employers from lazily looking at your "hacker rank" or some other arbitrarily defined score. If you want to be treated like a human being, just stop doing things that put you in a box and force you to be seen as a number.
You have the power. You can do this.