58

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.

DarkCygnus
  • 83,211
  • 31
  • 198
  • 309

14 Answers14

125

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.

Nathan Hughes
  • 189
  • 3
  • 10
Working Title
  • 2,770
  • 1
  • 21
  • 28
81

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.

Old_Lamplighter
  • 159,693
  • 108
  • 436
  • 585
  • 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 '19 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 – Old_Lamplighter Jan 11 '19 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 '19 at 18:21
  • 1
    @Joe yep, and then there are those that test well, but cannot innovate or break the rules EVER and everything in between. Then there's when they slip through and you end up having to teach someone with a bachelors in computer science how to write a for - next loop..... – Old_Lamplighter Jan 11 '19 at 18:47
  • 4
    @Joe see, this kind of interview I love. Where I work now, when I applied, they invited me on their expense, and got a pro guy who diced the hell out of me asking me all kinds of programming questions. After an hour of questioning I failed to answer only 1 question, and that's how I got my current job. –  Jan 11 '19 at 20:03
  • 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 '19 at 23:19
  • 1
    What about the part where he worked three days for free? – Mazura Jan 12 '19 at 00:02
  • 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 '19 at 01:51
  • "greatest program ever" is a bit too loaded. Too extreme. But if it takes a dev one day or one season, that is in fact what most of us are evaluating to a large extent. – Kirk Woll Jan 12 '19 at 05:19
  • 1
    though I'd add the caveat that what I'm really looking for is whether or not they can become that efficient. I don't care what you know, I care what you'll learn. – Kirk Woll Jan 12 '19 at 05:22
  • @KirkWoll So true. The ability to learn is much more important than why they might already know – Vahid Amiri Jan 13 '19 at 07:56
  • @RichardU Was their job to program in VBA each day? – Brandin Jan 14 '19 at 08:08
  • @Brandin yes it was. Don't even get me started on passing arguments by value vs by reference. – Old_Lamplighter Jan 14 '19 at 13:06
  • 3
    I think people would be shocked at how poorly applicants do on these exams. As in, 90%+ fail rates. It would be such an incredible waste of time if a human needed to filter out these people at the first stage of the application process. If the cost is losing a few good candidates at this stage, that unfortunately is an acceptable cost. – Chuu Jan 14 '19 at 14:19
  • @MasonWheeler If they take 4 months to write something and a competitor company takes an hour, you just lost 100% of your market share to your competitor. – alephzero Jan 14 '19 at 15:17
  • @alephzero yeah, but you'll get it back when your competitor's client base goes nuts over the rush job. – Old_Lamplighter Jan 14 '19 at 15:21
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.

pushkin
  • 485
  • 3
  • 11
20

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.

dbeer
  • 11,944
  • 8
  • 31
  • 39
  • 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 '19 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. –  Jan 11 '19 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 '19 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 '19 at 21:43
17

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.
Benjamin Gruenbaum
  • 5,340
  • 4
  • 29
  • 35
  • 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 '19 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 '19 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.

Peter Mortensen
  • 1,003
  • 1
  • 8
  • 8
Ertai87
  • 45,600
  • 9
  • 73
  • 144
  • I'm OK with a coding test with a human. My problem was that no one wanted to meet with me and test me. –  Jan 11 '19 at 17:06
  • @TheQuantumPhysicist Was this a company recruiter or a third-party recruiter? Third-party recruiters usually don't have anyone on staff qualified to do an interactive coding test; it would be mostly an hour of dead air on their end while they listen to you talk about something they don't understand, making notes that may or may not even be useful. Likely your code is going to be straight-forwarded to their client and the client is going to evaluate it themselves, pending your code getting an "acceptable" score on whatever automated smoke tests they set up to filter out obvious idiots. – Ertai87 Jan 11 '19 at 18:02
  • @Ertai87 it's a recruiter of the same company. –  Jan 11 '19 at 18:16
  • 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 '19 at 19:12
  • @DavidThornley Hence why I didn't say "guarantees", "promises", or any other similar absolute word; I simply said "with high likelihood". Most people who are good enough to pass coding screenings are probably employed themselves. As an employed software engineer myself, given the choice between relaxing and playing video games on my couch after work, or writing an hour programming test for a someone who I know will fail the in-person interview anyway, I would probably not choose to code. – Ertai87 Jan 11 '19 at 19:15
  • I find you are proving OP's point to a better degree than OP did. These tests are taken on the internet. The idea I can't paypal someone to do it for me within minutes is laughable. 30 mins to evaluate someone face to face is not unreasonable. – 8bitwide Jan 11 '19 at 19:16
  • @8bitwide That depends on the recruitment structure. If you only let a small percentage of applicants get to the programming test stage, then sure, it's reasonable to spend company time screening applicants in coding tests. However, if you don't screen out a lot of applicants prior to the first programming test, then you could spend a lot of company time on tests. Whether this is an effective recruitment strategy is not in scope of the question ;) – Ertai87 Jan 11 '19 at 19:21
  • 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 '19 at 19:29
  • @8bitwide "Whether this is an effective recruitment strategy is not in scope of the question" ;) – Ertai87 Jan 11 '19 at 19:34
  • 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 '19 at 19:39
  • @8bitwide Why would you pay good money to someone to take a test, where if you pass the test, the reward is an even harder test that you can't use the same method to cheat on? I could understand cheating in this way if you could do it for free, but why would you pay to do it? – Ertai87 Jan 11 '19 at 19:58
  • 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 no longer trusts SE Jan 11 '19 at 20:35
  • Faking a programming test isn't necessarily that hard. However, when we recruit we're going to look over the code with you and ask you questions. Good luck explaining someone else's code if you couldn't write it yourself. – Nate C-K Jan 11 '19 at 22:11
  • @Ertai87 Someone good with BS can likely stay employed for a while, even with minimal skills. Unfortunate but true. – David Thornley Jan 11 '19 at 22:40
  • @NateC-K OP was complaining about taking a test that was just going to be scored by machine. If you're going to sit down with the candidate and the code and discuss it, OP's objections no longer apply. – David Thornley Jan 11 '19 at 22:42
  • @8bitwide - "after investing several hours in their [own] recruitment already" maybe that's all they're after. That and a piece of paper saying you can deal with that kind of BS for 4 years straight. – Mazura Jan 12 '19 at 00:08
  • The "with high likelihood" is very questionable ... I'm currently working remotely/on my own via some "freelancing sites" (don't know a better description and linking isn't necessary/appropriate). While I don't do such jobs (due to obvious ethical reasons) there are in fact lots of jobs for freelancers to do exactly those tests; usually priced between 10$ and 50$. So if someone got someone else to fake them an entire github account etc ... don't You think they'd "invest" 50$ to pass such a test..? – Daniel Jour Jan 12 '19 at 10:48
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.

Mast
  • 622
  • 1
  • 12
  • 19
4

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.

J. Chris Compton
  • 9,392
  • 1
  • 25
  • 48
  • 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. –  Jan 11 '19 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 '19 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 '19 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 '19 at 14:51
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.

P. Hopkinson
  • 8,451
  • 2
  • 20
  • 36
  • 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 '19 at 16:40