57

Short version: I had an experience with a recruiter that I think was not fair, due to how much time was spent responding to emails and calls, and then being presented with a test. Where's the line to asking to do tests?

Long version: A few times I get in contact by a company for a job interview after they see my profile online. They ask me to do one of these HackerRank or LeetCode tests. I've done a few. Sometimes it goes good and sometimes it goes bad. But the annoying part is that if the result is bad I just get dismissed without any feedback.

Recently I was contacted by a company, who got my two-page CV with all my accomplishments and skills. (Stack Overflow account + Git page + a public GitHub repository for a long term project + binary program for another project + website that I designed) and a few other things with that. All that + a 1 hour discussion on the phone about my work and my history with the recruiter.

In addition to that I told the recruiter from day 1 on the phone that I don't do those tests. So what happened after that: I told her by email something in the lines of "I'm sorry, if I have an ultimatum to stop the recruitment process or do the test, I'd stop. I have principles, and this is disrespectful".

My question: Am I exaggerating and overeacting or this is normal? Isn't this abuse in a way? Like what's the limit to this "abuse" so to say?

Don't get me wrong; I'm not all against tests. I did tests for many companies. But this felt kind of excessive. I'd like to know where I should draw the line.

14 Answers 14

124

What's fair or not is going to depend on everybody's definition of fair and ultimately it doesn't matter. That company has a process, and it sounds like they make everybody go through that process regardless of credentials. Whether their process is good or fair is a separate discussion. You felt it was excessive so you decided to move on and pursue other opportunities, which is your right to do so. I know a bunch of programmers who would have no problems with that interview and a bunch more who would have made the same decision you did.

What it boils down to is only you can decide where you should draw the line and how willing you are to tell a company you don't want a position if they try to cross that line. You will probably lose some potential job opportunities but that's the way it goes. Again only you can decide if you're willing to lose those opportunities in exchange for not putting up with such interview processes.

78

Unfortunately, those damn tests are part and parcel to the application process these days, thanks to all the antics out there. (I could write a book on the scams I've encountered)

From a pragmatic standpoint, I'd have to say that this is not a hill you want to die on. It's annoying, insulting, and downright irritating, but unfortunately, it's part of the process.

You said:

I told her by email something in the lines of "I'm sorry, if I have an ultimatum to stop the recruitment process or do the test, I'd stop. I have principles, and this is disrespectful".

What principles are those? Would you stand by them at the price of your dream job?

Doing things like sending emails of that nature can get you a bad rep fairly quickly.

My answer here sums up how you might be viewed.

TLDR:

You are overreacting. This is a normal part of the process, though irritating, and unavoidable. Companies have policies and procedures they must follow, and often these tests are part of it.

  • 59
    I think the key perspective is that it's not about you. It's just that there's so many liars, cheats, and fools out there, and they have to verify that you aren't one of them. Arguably, you could consider it as partially for your own benefit: if a company has weak recruiting practices, you'd probably end up working with a bunch of incompetent coworkers. – stannius Jan 11 at 17:35
  • 4
    @stannous No lie: We had a case where someone didn't know the difference between a sub and a function in VBA – Richard U Jan 11 at 17:40
  • 7
    @RichardU : I've interviewed people for a PL/SQL position and they couldn't tell me the parts of a PL/SQL block. (and this was my weed out question -- call them up, ask them if I they have 10-15 minutes to talk, ask them for some clarification on their resume ('what was your role in the project' type stuff ... and then half of them can't answer making me think they've only done SQL, not PL/SQL.) And besides, even if they had the greatest program ever ... did they whip it out in an hour, or struggle through it over 4 months? – Joe Jan 11 at 18:21
  • 9
    @joe If they had the greatest program ever, does it matter if it took them an hour or 4 months to write it? Because if it's that good, I guarantee you that the only way it was possible for them to write it in an hour is because they had years and years of practice learning to become capable of producing something good within an hour. – Mason Wheeler Jan 11 at 23:19
  • 12
    @MasonWheeler : when you're holding up other people on a team because your part isn't done, then yes, how long it takes you to get the job done matters. I've worked with people who were so slow at their job that it was more efficient to assign them to documentation ... and over a year later, they haven't even done that. – Joe Jan 12 at 1:51
28

Is it fair to ask someone for a non-human coding test if they have lots of demonstrable material online?

Yes, it's fair.

  1. How do I know that it didn't take you a year to create that HelloWorld project on Github?
  2. How do I know that you created it in the first place and didn't copy it from somewhere?
  3. How do I know that your coding skills are current? (maybe you accrued the SO rep years ago and haven't coded since)

Having you complete an online coding test verifies that you know how to code, and you don't spend hours on simple problems. Looking at your Github doesn't really help me verify that.

From the company's perspective, hiring a bad apple can be a very costly mistake. These tests helps recruiters sleep at night by decreasing the chance that they're hiring a bad candidate.

Am I exaggerating and this is normal? Isn't this abuse in a way?

This is normal, and I would say that you're over-reacting. I don't see how this is abusive in any way.

  • Comments are not for extended discussion; this conversation has been moved to chat. – Snow Jan 15 at 6:49
19

Am I exaggerating and this is normal? Isn't this abuse in a way? Like what's the limit to this "abuse" so to say?

Personally, I agree with you. Essentially, a company that makes you take a programming exam before they will even speaking to you is trying to demanding a lot of your time before they'll even look at you. Obviously, the company is within its rights to do so, but I have to want a job very, very badly if I'm going to take any kind of test in order to apply. It's hard for me to think of many situations where I'd be willing to do so.

I also have extensive examples of code I've written in the past for people to evaluate, and not only does that not require a bunch of my time, I feel like examining code I've written in the past is more likely to reflect the kind of work I would do than a coding exam.

Of course, in deciding not to take exams, I'm ruling myself out of jobs that require these coding exams. That's something I'm okay with for now; the decision that matters for you is whether or not you are okay ruling these jobs out and only looking at other opportunities.

  • 5
    But the company already spoke to OP. They spent an hour with HR, and then another 45 minutes answering more questions. This isn't a first step of the interview for this company. – Catsunami Jan 11 at 17:14
  • 5
    @Catsunami You're the second person who thinks that the company spent another 45 minutes with me. May I ask where you got that from? I said that I spent 45 minutes writing the email. I never said they spent 45 minutes reading what I wrote. – anon Jan 11 at 17:22
  • @TheQuantumPhysicist, I didn't say the company spent 45 minutes with you. I said you spent an hour with HR and then YOU spent an hour 45 answering more questions (via email). The point is, the coding question wasn't the first thing the company asked for. – Catsunami Jan 11 at 18:26
  • 12
    You need to remember that YOU are also Interviewing THEM. If you think they are abusive in their hiring practices, then it sounds like you don't think they are a good fit. The selection process goes both ways. If you have skills that they need, then you have at least some power in the hiring process. Sometimes people forget that, because being unemployed can be maddening (and sometimes your savings starts running out before you find a good fit). – Kyle A Jan 11 at 21:43
16

You were absolutely in line.

Note: this answer might not apply to most people. Specifically it's what's been working for me after getting "points" on Stack Overflow / GitHub. YMMV.

Hey, so from the privileged place of someone with quite a bit of "points" in GitHub and Stack Overflow I'm going to disagree with most answers here:

  • The fact you are even talking to recruiters is... surprising. I stopped answering recruiter emails ~3 years ago when the volume got to about one a week. In fact I've been trying to avoid them for years now. I've found recruiters to be routers at best - testing and moving you on to someone more relevant.
  • I do however respond to engineering managers and people who want me for their team. Since that's the "end point".

It's a developers' market. You get to pick who you work with and you are entirely allowed to not waste time on people who waste your time.

Generally, I don't do long coding exercises. I have my GitHub, talks, Stack Overflow and a bunch of other things to show for that. Someone who would cheat on those would cheat on a remote coding exercise anyway. Surprisingly and contrary to what people will tell you - big companies (Facebook, Google and Microsoft) were absolutely OK and understanding with this.

I did turn down a few jobs because of this - but the amount was mostly negligible.

What went wrong

Just like when buying a car you wouldn't go to whomever is soliciting offers but would research and look for a good deal. I recommend approaching job-hunting in a pull rather than push method. That is:

  • Think about what you actually want in a job.
  • Talk to people actually doing that job in companies you find interesting.
  • Ask them what it'd take for you to get a job there.
  • If OP's account SE account is the only account they have, I don't think you are really on the same level in terms of reputation, and probably in terms of who would like to hire you. – jcaron Jan 13 at 17:09
  • 1
    To be fair, it's also still completely acceptable for the company to ask for you to do this test. It's just up to OP to recognize that it may be an issue with overall incompatibility. They have a right to get you to take the test, and you have every right to say "that's not worth my time". The consequences would vary significantly depending on your knowledge and options. – JMac Jan 14 at 13:51
11

Here's the thing about a Stack Overflow account or a GitHub account or any number of code samples you can send to a recruiter: There's no actual proof that you actually did it. Of course, it would be unethical to say you did a bunch of work that someone else actually did, but truthfully speaking there's no real way to guard against that. That's why you have to do a programming test somewhat-live. This provides some safeguards (from the recruiter's perspective).

The below is all assuming that you are lying when you say that all the code samples you provided are your own (I'm not saying you are lying; I'm saying there are people out there who do lie, and the purpose of this coding-test exercise is to catch those people, and this is how these sorts of things help catch those people):

  1. If you are told to do a coding test within two days (or whatever), it's unlikely you can call your programming-whiz buddy who wrote your code samples for you to come over and do the test on such a short timeline.

  2. If you are asked to do many tests for many recruiters, then it is unlikely your programming-whiz buddy has the time/patience to do all these tests for you.

Therefore, with high likelihood, if you are asked to do a coding test, you will actually do it yourself rather than cheat (remember the presumption from the recruiter is that there is a possibility you could have cheated when you sent them code samples, this exercise is to negate that presumption).

So that's why they do it and what they gain out of it.

As for whether that's a reasonable thing to ask, after spending a bunch of time on the phone with you or whatnot, that's up to you. How badly do you want the job? If you're not willing to spend a couple hours of your time on a coding test, maybe that's a barrier for entry to the company: "we only want people who are devoted enough to our recruiting process to spend time doing this coding test". Maybe you don't think such a rule is reasonable, and that's your prerogative. However, many companies do this, so you are going to restrict yourself by not playing along.

  • I'm OK with a coding test with a human. My problem was that no one wanted to meet with me and test me. – anon Jan 11 at 17:06
  • 10
    If I were the sort of person to help others cheat on tests, I don't see why I couldn't do it on short notice, or charge money to keep my interest up. The only way to make sure the candidate is the one taking the test is to have physical presence. – David Thornley Jan 11 at 19:12
  • 2
    @Ertai87 As opposed to guarding against someone who possibly faked large amounts of qualifications with a test that can be easily faked; after investing several hours in their recruitment already....... – 8bitwide Jan 11 at 19:29
  • 3
    @Ertai87 "Therefore, with high likelihood, if you are asked to do a coding test, you will actually do it yourself rather than cheat" And yet that seems to be your very flawed conclusion. – 8bitwide Jan 11 at 19:39
  • 3
    There's no real proof you're the one taking the automated test assigned to you either, honestly. I could always get my buddy to take it for me. – Draco18s Jan 11 at 20:35
5

Once, a few years back, I... coded for 3 days straight and submitted the code

That's about two days longer than I would spent on it.

My question: Isn't this abuse in a way? Like what's the limit to this "abuse" so to say?

Bottom line is that you'll have to decide that.

I'm not all against tests. I did tests for many companies. But this felt kind of excessive. I'd like to know where I should draw the line.

Again it is for you to decide. Since you seem to want opinions I will tell you that I wouldn't have snapped at the point in the process which you did - that isn't a criticism of you.

The reason I would not have snapped at that point is that I suspect you passed all of the really important tests and the coding test was a formality required by the company. If the recruiter and manager put a lot of value the coding test you would have been given that first before you talked to them at length.


Perhaps we look at things differently, which is fine - but just FYI the thing that would have set me off is this line you wrote:

Then, after that she contacted her manager and told him about me, and he also asked me again the same questions we discussed over the phone, to which the answers are in the CV.

If the hiring manager doesn't read my resume before the interview, I consider that a bad sign.

  • Thanks for the valuable answer. Honestly I sensed the bad sign you talked about which encouraged me to do what I did. My patience made me postpone the action more or less. – anon Jan 11 at 19:53
  • 2
    I wouldn't have thought nearly as much about the duplication of things between the CV and the recruiter. As a hiring manager, I did both almost all of the time. In re: the CV, it's a chance to get the applicant to open up about the details of the experience. In re: the recruiter...do you trust a recruiter to appropriately grok the finer details of technical experience? I sure don't. Not as an applicant, not as a hiring manager, not even as the punchline to a joke. – Alex H. Jan 11 at 20:45
  • 2
    @AlexH. Oh yes, I expect someone to ask me details about something on my CV/resume when I'm speaking with them (phone/video/in person). I have done that - for the same reason you mentioned. My impression was that the questions were emailed (because he talked about how long that email took) and that strikes me as odd. – J. Chris Compton Jan 11 at 20:52
  • "That's about two days longer than I would spent on it." that's something that many people don't realise or don't want to to follow - you are allowed to skip the test. It might very well mean that you skip this job opportunity, but you aren't obliged to do a very big coding exercise (which two days is). You can answer that you don't have the time to commit for this and suggest they look at other samples of your work - on GitHub or otherwise. The hiring company may just do that and still give you an offer but there is no guarantee. Still, you're allowed to say "no". – VLAZ Jan 14 at 14:51
5

Life isn't fair. If your actual question is why it isn't, your question is too broad.

You don't earn a job with a job interview. You don't earn anything. You provide an effort, they provide an effort, and if the results are satisfactory it might end up as a job.

If you had wanted something for the effort you provided, you could have made this clear from the beginning. Should they decide that's not worth it to them, you both go your own ways. If there's no such agreement, it all hangs on assumptions. And you know what they say about people who assume.

You feel unfairly treated. That's ok. We all do sometimes. But it's not abuse and whether you should've drawn a line somewhere in the process is something only you can answer. It all depends on how much it's all worth to you.

People desperate for a job are often willing to do a lot, just to get a shot at it. People already in a comfortable job are often only willing to do a lot if it's a decent chance at a sizeable upgrade. Your situation is probably somewhere in between. Pick what it's worth to you and stick with it.

2

Different people will draw the line in different places. You need to compare the payoff (a new job) against the drawback (wasted time). Personally I would consider the payoff to be high and therefore would take the test only if I considered that the drawback was high.

A good metric for judging time expenditure is to consider money. Ask yourself: "is it worth asking to be compensated for my time?"

You described a three day coding test for which you received no feedback. This is clearly unreasonable and it would have been worth asking for compensation in advance.

On the other hand a 60-90 minute test is, while irritating, not equivalent to a stack of cash in lost time (you'd be asking for less than £50?). It would be nice to be paid for it but at the end of the day you haven't made a significant investment if things don't work out.

  • + 1 Additionally, it might cost the candidate an hour of his time, but a code test with one person may actually cost the firm several hours of time, not just of that person, but all the other people impacted by having to reschedule their meetings with that person. – Chan-Ho Suh Jan 12 at 16:40
2

IMHO you are asking the wrong question. Is it unfair? Maybe yes, maybe not. What's the difference?

What's really important is: what to do? Looks like you don't want to invest much time in boring online tests; that's understandable. On the other hand, snapping and making ultimatums is counterproductive. You should realise that the recruiting side has also probably spent much time on interviewing incompetent applicants, so they have introduced a process to weed out the incompetents. Maybe the process is imperfect. Maybe some worthwhile applicants, like maybe yourself, are weeded out. But what you want is essentially to bypass the HR and go to the technical people. You want them to invest time in you, not the other way round. Put yourself in their shoes: would you like to spend an hour a day reviewing Github projects? Would the company approve such usage of your time? Once again: maybe yes, maybe no. If no, then you're out of luck.

So you should state your position as clearly and early as possible. It sounds like this is a recurring problem to you. In this case, I'd recommend to create a template letter, not unlike a cover letter or CV, along the lines of:

Dear HR Drone,

I realise that your SOP requires candidates to take an online test to prove their knowledge of X, Y and Z technologies. However, I believe that my proficiency is better proven by A, B and C projects freely accessible on Github. I hope that it would take your technical specialists just a few minutes to review the code and make sure that I know what I'm talking about. Otherwise, I am unfortunately too busy at the moment to spend time on yet another stupid test.

Well, maybe a bit more diplomatic than this, but you get the idea. Will this guarantee that your CV goes through to the tech people? No, I'd assume that most times the HR will reject you at this point. But at least you'll have wasted 5 minutes of your time instead of 90.

1

Yes, it's "fair", and no, it's not "abuse" (?!).

You are applying for a job doing computer programming. Part of the application process is to prove that you are capable of computer programming. That is completely expected and reasonable.

Of course a demonstrated history of achievements is nice, including school qualifications and GitHub profiles, but none of that equates to showing there and then that you are actually capable of performing the role for which you're applying.

Responding to a request for a programming test in the sort of prideful manner you've described, is quite bizarre.

Where I will agree with you is that three days is a long time, and having you do this using some third party tool feels a bit impersonal. Ideally, after your CV and online profile has been used as a first-line filter, you will show up for a face-to-face interview, and the face-to-face interview will include an in-person test. Perhaps on paper, perhaps on a laptop. Thirty minutes or an hour seems like enough time to figure out whether the details on your application are accurate.

Personally I have interviewed people with excellent CVs and loads of supposed "evidence" of good quality programming. It wasn't until I brought them in, asked them questions, watched them actually attempt to solve fairly simple programming problems in front of me… that I realised I was better off not taking those candidates any further.

Interviewing for computer programming roles and not actually setting a programming test is crazy.

  • Comments are not for extended discussion; this conversation has been moved to chat. – Snow Jan 15 at 6:49
1

I'm going to add my experience of the past few months here.

TL;DR; : I agree, most of the time these tests add little to no value to a recruitment process. However:

  • They're useful for those attempting to recruit you if they give everyone who comes along the same test in order to be able to compare your knowledge versus other candidates/employees
  • Give insights into your proces, capability etc etc when it concerns an assignment with a time limit
  • When discussing face-to-face, you have the opportunity to discuss something your recruiting party is already familiar with

Granted: these are all in favor of those doing the recruiting. Beware the "feedback" on whatever you create: it's to justify a lower salary, not in your best interest.


So, past October (2018) I started looking for a new job. Announced it to my employer as well. Signed a new contract just before Christmas to be able to start the coming February 1st.

I ended up doing 2 of these tests. One was a logic test, to be done at the office and they expected it to take about 2 hours. The other one was building the "crazy eights" game for back-end, so fully automated on a refresh/cli command (PHP ;) ).

Next to this I have a bunch of repo's up on Github & Bitbucket, verifiable experience (listed on Li, SO Jobs) and my own website.

As such, these tests didn't really make me blink much. However, I am of the opinion they're only intended to give the employer-in-waiting an advantage in any negotiations. Namely to be able to give negative "feedback" remarks on this, that and something else, in order to be able to give you a smaller monthly salary for your efforts.

I chose to do the 2 tests I did, mainly because the companies sounded alright, at the time.

In hindsight, I disagree (with myself).

I've ended up signing with company that looked at the code I already had publicly available. They asked if I could explain some of it to them. Presented a use-case and "how would I apply what I have there on Github to this use-case?", which we discussed then and there, no preparation, no code, just an instant opinion. A few questions about more recent work which I could show them (implementing my stuff online) and then we started to work out the contract.

(Note: the above paragraph was a total of 3 meetings, but all 3 meetings just had a subject: "get to know you", "show us what you can do", "what would you like for your time")


To defend these tests though. Apart from the things in the advantage of an employer-in-waiting these tests can be useful things if you do not have any verifiable experience. Verifiable experience can be a multitude of things, not limited to:

  • public repositories over time (Github, Bitbucket, Gitlab, etc.)
  • contributions to (open source) projects
  • projects on your name, e.g. websites, applications, apps, etc
  • work history with references

In such situations, yes, you should do the tests. Same thing if you're starting out or are in the first few (2 or 3) years after your study and without the above.

In pretty much any other time, I would from now on decline doing these tests (with my own experience) and offer to discuss what I've created and use-cases presented by them on the spot instead.

0

Trivially, of course you can just refuse to do those tests. That will severely limit your options however, so I'm going to approach this from a slightly different angle from the perspective of you wanting a good job - if you wish to avoid doing those tests, then you must first do those tests.

Those tests are normal. If you don't want to do those tests long term, and still want to obtain good work, you need to make sure you're in demand enough so that you're snapped up before having to do one.

That will likely involve shooting for some higher-up, higher-risk roles on a regular basis to aggressively search for promotions. At that point, you can shape your CV into something that makes you look like a rare, impressive opportunity for them - and at that point, they may well be likely to waive any obstacles (such as coding tests) because they really want you on board.

Before that point, refusing to do those tests will severely limit your available work, and that will have the opposite effect on your CV, requiring you to do yet more tests to obtain a role you believe is worthwhile.

0

Yes. it is quite common. Recruiters do not have easy ways to judge your technical skills just from your CV or the skill to read the code you link on github, so there might be a simple coding test before you get invited to the first round of technical interview.

As you said yourself, you are doing well at times and sometimes you are not. This tells me that it actually isn't a bold waste of your time, but adequate to test your skill level.

From your question it is hard to tell whether the recruiter purposefully wasted your time, by having you spend an hour on the phone after you already said you will not take any test. Maybe the recruiter didn't feel sure about your skill level after the phone interview and suggested taking the test, to give you a chance to advance to the next round.

Either way, you are not entitled to get to a technical interview round, just because your CV looks nice. In fact, your are not entitled to anything, some employers might decide to roll dices to see who goes to the next round.

So if you decide not to take tests, because it is a waste of your time, you end up limiting your own chances. And really what much harm does a 30-60 minute test do in an interview process that takes about 1-2 days of your life (assuming you have to travel for the interview).

protected by Jane S Jan 14 at 6:15

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?