I think many HR people will just ignore you if you e-mail what OP posted. Once, I wrote a blogpost why programmers don't get jobs due to random factors ("Why software engineers don’t get jobs: Four horror stories" https://goo.gl/v4PUWV), but being patronising and "explaining programming to HR" is one of the things where you just shoot yourself in the foot by being too demanding too early in the process. You can be demanding ONLY AFTER they told you that they want to hire you, but not before.
A tip for e-mailing HR and business e-mails in general: Try to never signal that you will be hard to work with. Always be kind and even a little bit submissive. Don't try to teach people something, don't quote authors and don't do footnotes. Imagine the person will take a maximum of 3 seconds per paragraph and 10 seconds in total to read your e-mail. There is a chance the reader is listening to an audiobook or is watching Youtube while answering e-mails in a cubicle. If you need to discuss something critical, invite the person for a phone call. Salary, negotiating or deviating from a standard process (like here) should be discussed in person/in a call.
Hope that helps to get some insight from "the other side".
There might be ten other CVs of "okay'ish" engineers in HR's inbox and your interview will end by never hearing back the firm. Or if, despite being cocky, you get an offer there might be a note somewhere next to your CV on the CEO's desk saying "easy-to-work-with level: Only 50% score" which leads to 10k less for you in salary. As an applicant, you want to "manipulate" the employer to give you the best possible offer and why shouldn't you be friendly and a bit submissive to achieve your goal?
There is always a shortage of good jobs. You can fight the process all you want, if any job at all will do, and you don't care how long it takes to get it.
> You are often asking accomplished individuals to waste their time on badly compensated job proposals
What do you mean by badly compensated?
Why would you assume someone else knows anything about your accomplishment and credentials and trusts the skills you list on your resume before you've demonstrated anything?
Also, if you're good, then why does a low bar for entry scare or offend you? A screen for basic aptitude is narrowing the field and removing people from competition who can talk well but don't have programming experience. That seems like an advantage for anyone who can pass the easy tests.
Given there is a limited supply, regardless of size, one should try to spend it optimally. That means being difficult when it comes to pay and benefits, and spending some of this capital when trying to determine the work/life balance. Using it to be insulting or patronizing is effectively wasting it with no return.
Still I wish employers would better understand the limitations of automated coding tests. Pair exercises where I can use my own environment and think out loud with an interviewer aren't so bad. Fully automated stuff like HackerRank often make simple things overly complicated because they expect answers to be written a certain way. I think those sorts of tests are only suitable for really low level screening - ensuring a sysadmin can use basic bash for example.
Letting the applicant dictate the terms of the evaluation
That sounds vaguely biased toward the employer. An interview is a a two way process. The candidate in this case will likely have no problem finding a job. In a way, it sounds like he's doing his own pre-screening and the hacker rank request is a non-positive signal for him.Our profession is somewhat bifurcated. There are the developers who only ever do glue code between systems and never progress beyond java 1.4 and work places where that is a valued trait.
This candidate however is in the other camp. He's creative, and self driven in his learning. He's also driven to get better. He won't be satisfied at the kind of place that doesn't look at him as a unique and creative developer.
This was a negotiation not letting an applicant dictate the terms of the evaluation.
I see the appeal of knowing this but I think I'd take a submission from the OP as-is in place of a "coding test."
My thinking here is that I can't recall an instance where I needed to write code at a job with a timer ticking down and someone reviewing my work as I went. I usually have the luxury of doing some research and taking a few attempts at a problem before I understand it and write a decent solution.
I'm not sure what we expect from candidates when we force them into these situations. Am I supposed to be impressed by their solution? I can't think of how I would be. The code I'm most proud of writing took me several attempts to write. Often over a long period of time. Am I supposed to gain some insight into the way they think about problems? I already know how most people tend to solve problems. It's a well understood area of research. What else is left?
All I expect candidates to prove is that they've practiced a problem set and can recall a large number of solutions to trivial problems. Useful but it doesn't give me an indication about how they'll perform. Three months into the job and they'll probably forget 60% of the problem sets they practiced anyway.
Do I want to hire programmers who have an intuition of complexity and know when to use a binary tree or a linked list? Definitely! But I'd rather talk to them about real experiences they've had when they had to make such choices and find out why they made the trade-offs they did. It's hard to do that with trivial problems.
For other development jobs I generally agree with you. The coding screen will not tell you much. Particularly for a mid-level or senior role. In those cases I am way more interested in their portfolio and in having a long casual technical discussion.
This is really important. For any company that does business with the federal government (even if it's only a small part of the company), they're required to keep records to prove that they don't discriminate in their hiring practices. The way almost every company does this is ensure that their practices are standardized and no candidate has any sort of different experience.
If they let this candidate have a non-standard interview, then hire them over someone who is in a protected class, they'd be opening up a TON of liability.
Several thousands of students solve these questions on online judges. These are some of the easiest questions to Google and get answers for.
I would be a 'no' if i were interviewing me. You obviously can program but this makes you appear to be someone who would be difficult to work with.
However if you want to hire people to just complete tickets as fast as possible, maybe that's a valid reason to reject the candidate.
To be clear, I wouldn't rule out someone for this, but I can sympathize with where I believe the above poster is coming from.
In the same spirit you could definitely see it as unreasonable for a candidate to suggest you adapt your screening process because they know better (even if it's said in a polite, validated way).
Not necessarily hiring to complete tickets as fast as possible, but some who can take a task and complete with minimal issues. I don't want to be stuck in meetings or arguing in PRs etc.
Not the OP but, absolutely I want a personalised interview! I want the company I'm working for to care about the people they hire -- not to efficiently fill empty seats. Yes, normally that means I tend to work for startups. I'm happy with that.
It's fair to say that you want to be able to evaluate potential employees cheaply before you invest a full interview. It's also fair for people to offer ways to do that evaluation rather than running through someone's maze. Neither side needs to accept the other's offer, but there's no need for either side to take it badly.
A "no" is quite a good result if the company would otherwise be wasting the candidate's time.
If i had a start-up, i would definitely give this person a good old try, because i can tell that he/she is capable enough to churn out rather advanced projects with complexity higher than just CRUD. Programmers of this type is what i'd call 10x, and one should never dismiss a 10x!
If they're too cool to waste a single second conforming to a basic FizzBuzz test to assert that their resume isn't a lie, they're probably way too cool to do anything but write the most glamorous code in the most visible part of the product - which is the last thing, a startup - with too much work and not enough people, needs.
I'm not doubting this persons ability - I'm only responding my opinion of this person based solely on this email.
In this case, it definitively shows a bent for the innovative and smarts, but shows lack of judgement / wisdom.
For a 10x, merely completing the test is a lot faster and more effective than trying to go change the process from the outside.
For me, this just means, that he is not accepting a solution to the problem, explaining why he thinks it is not a good solution and offering another one, which would work for him. Also, he is not dismissing the hackerrank test, but asking to evaluate his skills on a different way too.
As far as I see, this is probably the best way to argue with somebody, that their chosen solution to the problem is not the ideal based on your knowledge and experience.
If I came across this in the wild, I'd reevaluate the parts of the interview I control to see if maybe I could make it less robotic and I'd probably still bring them in to make sure I'm not missing a good dev, but I would be fighting my bias at least a little. There is a small handful of people I've worked with before that would appreciate this approach and their toxic attitudes would prevent me from wanting to work with them again.
The interview process can suck, but this is not how I'd recommend standing out from the herd.
I would also worry hiring a team lead/senior dev who appears to be combative from the initial screening
I've been a part of two great alternatives: a pair programming session with the lead dev and adding some features/refactoring a sample project.
I'd be curious if anyone here is responsible for hiring devs and finds hackerrank type tests useful.
They serve as a relatively simple early-stage screen for applications from people we've never met. Ours costs each candidate 1-2 hours. But we do not require cover letters, which in the good old days might have taken about half that time, and been thrown in the bin.
Some may think no CS graduate would fail a test that let you choose any popular language to implement some basic string parsing. But in practice about half the candidates fail this stage of the hiring process, which saves us quite a lot of time. Yes, it costs each candidate an hour or so, but that's a feature, similar to the oft-proposed idea that sending email could cost one cent to reduce spam.
>Some may think no CS graduate would fail a test that let you choose any popular language to implement some basic string parsing.
I don't see anything wrong with basic screeners like that, but I have experienced some really silly stuff. Recently I was given a test that asked ~10 questions (some trivia, some paragraph type response), a few small simple questions (reverse a string, etc.), create a class to handle card games (poker, blackjack, etc.), and create a user repository... in 30 minutes. I felt like a dog at a dog show.
Keep in mind that these quizzes are only one single part of a multi-part interview. Also keep in mind that acting offended by whatever style of interview you get may reduce your chances of getting the job you want.
You might be amazed how different answers can be on easy code puzzles, or how deep of a discussion you can have over a single line of code. The easy questions might be easy for you because you're good, but often there is a low bar for the first round interviews for a specific reason: to weed out the people who have less experience than they claim and/or couldn't be bothered to prepare for the interview.
Also, when several or many candidates are being interviewed, it takes a lot of time just to administer low-preparation interviews. Pair programming, as nice as it is, simply can't be done by the lead dev for all the candidates without keeping him from his job coding.
Remember, the main thing your interviewers are trying to do is compare candidates against each other, so they need standard a way to see who's better than someone else. Hackerrank type questions are definitely not ideal, but it does what it says: rank people against each other.
I would absolutely welcome ideas for being able to rank people in programming skill with some method that is closer to pair programming but takes less of my team's time. The suggestions in the article here are lovely, but they don't help someone who's interviewing because they take too long to evaluate, and they're different than anyone else so they're much harder to rank candidates.
That's the problem with HackerRank: You can't! Every single time I've tried one, it was a dismissive "do this on your own time and we'll check your answers".
Not to mention that their question sets tend to be full of puzzles, which are the type of thing where I'll have an epiphany over lunch, rather than something I'll figure out how to optimize in the ten minutes I have to code the solution.
All the caveats this candidate mentioned about standard coding screens are true, but they can all also be taken into consideration by qualified interviewers.
There are flaws in this candidate's proposal too. In particular, their proposal does not satisfy their implicit criteria that the interview should mirror real-world conditions, because they chose their own projects with which they are already intimately familiar but the job most likely consists of working on a pre-existing codebase that they know nothing about.
Real world conditions like these?
>> (1) time limits, (2) forbidding research on Wikipedia or StackOverflow, (3) forbidding collaboration, and (4) forbidding the use of libraries
Seems like a nice way to hire carpenters, not programmers.
Our applicant tracking systems won't be upset if you ghost them/us. Your application will simply expire after a while.
Recruiters acting in a professional capacity or companies, both of whom would ghost you without a second thought? I gotta say I don’t really see the problem.
The above indeed does not make sense, unless you're hiring a solve-puzzles-as-sports person.
I don't think it's enforced by HackerRank, though. It must be the employer's requirement. If so, their hiring process does have problems.
Even a short phone screen where I just ask someone to code a simple question takes 20-30 minutes of my time (plus however much time I need to get back in the zone), so HackerRank is appealing if only to weed out the very worst candidates. I'm not familiar with HackerRank specifically, but I imagine you have some choice as to how to set it up. If I could set it up to give candidates plenty of time and ask relatively straightforward questions to weed out people who don't have the basics down, it would be a huge time saver for me.
But you took 20-30 Minutes of their time too, the only difference is that you get a compensation at the end of theses 20-30 min, they don't. If someone told me, "OK , i m gonna waste 3 hours of your time in exchange of a mere promise of a job", i will simply decline the job.I work 9hr/day , I have better things to do with my free time...
Yeah, with often very high ratios (I've seen above 100:1 in positions where I had information more than once recently) applicants for open positions, hiring simply isn't going to work if it requires symmetric time investment from hiring managers and applicants.
def reverse_str(x):
return x[::-1]
works. If you remember this notation, then you'll have this problem done in 30 seconds or less. But even if you don't remember this notation, I expect a candidate to figure out some way to reverse a string within 5 minutes in some language. I can think of engineering roles that rarely work with strings, but in the roles I hire for, we use them a lot and so I want to know that you have the basics down. If you know that: * strings are simply arrays of chars
* how to access an item in an array
* how to write a for loop
Then you have the tools you need to solve this problem. Are there any common languages where this is a particularly difficult problem (I'm genuinely curious, not trying to be obnoxious... if so, then I might consider changing the question for the future)?I suppose you could make the argument we do have to reverse arrays, but strings? Give me a break, only idiot programmers spend their time practicing for useless programming interview questions.
Reversing a string takes 2 minutes or less even if all you know is how to work with strings and how to write a for-loop.
Is reversing a string something I do in the real world? Very very rarely if ever. But it's not meant to be a question that simulates a real world coding problem. The point is that it's a very simple problem that anyone proficient in almost any coding language should be able to do. And I don't know anyone I've worked with who wouldn't be able to do this in 5 minutes or less, with or without practice.
My opinion is that the company may have two responses that are both valid and legitimate: i) "Sure, go on, nice idea!" or ii) "No, sorry, please follow our established hiring practices".
Now, if the company takes that as arrogance and that email only is reason to eliminate the candidate, the email still actually worked as a great way for the candidate to eliminate the company. If a company punishes a polite, thoughtful disagreement from a candidate, it must be a horrible place to work for.
It'll probably be relatively unsuccessful at a bigger company with worse internal comms, with an HR function that's too far removed from the engineering team.
I'm sure you'll find a job that suits _you_ with this approach, though.
Mind you, this might also depend on the specifics of the ad/request Mr. Fasiha was responding to.
I mean this same letter if received from a senior developer would be received very differently than if coming from a first time or junior developer.
What strikes me as negative, is - beyond the unneeded citation - is the sneaky/flattering tone (IMHO) or - maybe - failed attempt at humour in this sentence:
>I'd never heard of HackerRank, but after you wrote two other employers sent me their own HackerRank tests. Having worked on those tests first (I considered them practice, for the real thing with ABC :)
Then right after having confessed an almost total ignorance on the test, and only two previous experiences with it, the Author goes on at length enumerating in detail why and how the tests are "wrong".
I would have more liked a sentence to the effect of either "after having gone through these tests n times I find them inaccurate" or "never heard about these tests, not being familiar with them I fear they might not reflect entirely my potentiality".
Pontificating on something you just stated not being fully familiar with doesn't sound that good to me.
* 5 x 45 minute phone screens
* 5 x 2-3 hour coding test (some of which will be the same)
* 5 x 3 hour face-to-face interview
Over the course of 2 weeks while attending my current job. Companies should consider this when trying to hire "exceptional" candidates who value their own time.
If I were the prospective employer I'd probably write you back that before we will invest into looking at your production we kindly ask you once again to jump over the low bar that was set for all applicants. Then again, if I were your prospective employer I'd never have used hackerrank in the first place because I feel that to expose a potential recruit to a third party service would be a breach of confidentiality and besides I feel that such services are - as you correctly identify - ill suited to picking the people I'd want to work with.
It's akin to a luxury fizz-buzz test.
If any of the candidates I've interviewed and hired had this sort of independent and outside-the-box thinking, I'd have doubled their salaries when I hired them.
Do you have the power to double salaries of people in your org?
Seems to me like an org that uses a recruiter isn't looking for "outside the box" employees. Obviously they aren't sourcing candidates with outside the box processes.
I can’t imagine hiring to scale product development inside such a dirty room. The most successful businesses I know of simply don’t complain about these things, nor have personnel problems; people do the work that needs to get done with a good attitude etc, with little awareness of title... acting more like “mom and pop” businesses who value relationships.
How is any company building an awesome thing with an awesome team, with word of mouth not bringing a torrent of personal references from the rank and file? The good ones have that going on in my experience, there is just a glut of shit rung employers (and candidates) here shaping our views toward defensiveness.
"Better"
Open source contributions carry a set of particular demographic biases to a hiring process. They skew things towards comparatively well-resourced white men.
There's certainly an argument to say that open source contribution is an indicator of ability, but there are other ways to assess ability which don't introduce such a heavy skew.
A minimal bar test shouldn't take 90 minutes. If you want a test like that, ask a FizzBuzz question, which is solvable in ten seconds and will be just as good a discriminator. Asking people to basically solve riddles isn't productive.
Last year I found myself back on the market for the first time in quite a while and was presented with an online coding "challenge". It was actually really trivial, but I failed it anyway, because I'd never done one before. I'm used to coding in an IDE (or just in good-old vi), not in an online editor, and not with a ten minute time limit. The "challenge" was to write a Java function that would take in a number in words (like "four") between one and ten and spit out the numeric value of that number (like "4"). Well, it was timed, and I sort of panicked, thinking I wouldn't have enough time, so I jumped into it without reading the description. I skimmed over the description, and though I had to write a Java _program_ that would accept a _list_ of numbers, parse the list, and output their numeric values. So I hurried up and started coding in the (completely unfamiliar) online editor. Then I copied and pasted the whole thing into an editor on my local machine so I could compile it and run it and check for silly mistakes (since I was under the gun). Only after I had verified and tested it locally did I re-read the description and realized I had done the wrong "challenge"... so I tried (with three minutes on the clock) to refactor it so that the part that read in the number in words was a function inside my overall program. With maybe 30 seconds to spare I had refactored and re-tested it with a note that (/* here is the function you asked for */). Well, they failed me. Why? Because I took way too long to complete such a simple task...
Now, if I had to take another one of these today, I'd read the instructions very carefully (I'd probably spend the first minute reading and making sure I didn't overlook anything - which of course we should always do anyway) - but it struck me how infinitely game-able and simplistic that portion of the modern job interview is. It doesn't much measure programming ability so much as your familiarity with that sort of exam, which us old folks ain't.
It's important to keep in mind the big advantage of tools like HackerRank: They're scalable for the employer, allowing the employer to take a chance on more candidates.
Without something like HackerRank, recruiters will tend towards lesser heuristics, such as top schools or top firms on candidates' CVs. While HackerRank has its issues, it's certainly a vastly superior heuristic than the alternative for those many of us that don't have that kind of CVs.
It's also relatively scalable for the applicant, because it is asynchronous, and can be taken whenever convenient. For many people in jobs, taking a phone interview during business hours isn't easy.
(Manager, rummaging through an apple barrel)
“... apple ...” (toss)
“... apple ...” (toss)
“... apple ...” (toss)
“... fist-sized lump of uncut diamond ...” (pause... toss)
“... apple ...” (toss)
(Days later)
“Yeah, I found 2-3 decent looking apples... most are pretty bruised, though...”
Even on the surface "fairness" isn't really the objective, because there are going to be different hiring managers and interviewers throughout the whole process. The salary negotiation isn't going to be "fair" in this way.
I'd rather have someone who had a rich github history and a record of real accomplishment than someone who had none but could produce a good hacker rank score. Hiring is the most important thing that we do as managers, I'd be selling myself short if I didn't take it all into consideration.
https://austingwalters.com/you-are-given-a-deck-containing-n...
However, HackerRank is just a screen on:
1. Are you going to be difficult
2. Do you have basic coding skills
Typically, I'd interview at least 10 people before I'd give an offer. Once we added improved screening we got that number down to 5 people before an offer (note screening wasn't HackerRank).
I think it's reasonable to screen and HackerRank is just that, it's not about complexity.
It's good to see someone take the initiative to express this, but IMHO, it would be even better to just take the initiative to contribute to one of the proposed open source projects and put it on your resume, and participate in the Hackerrank part of the interview.
I like the proposals, and I'd probably land on the side of impressed if a candidate I was interested in sent me a letter like this. But, I still need a quick way to screen people, and I also need a set of standard questions that all candidates get so I can compare & rank them. I don't use Hackerrank, but I do ask easy weeder questions in the same style.
Then, after the candidate passes the easy part, I look at their portfolio of work projects and side projects, and consider everything they have to offer.
If you want to be evaluated in a more holistic manner (including side projects) you'll probably have better luck with very small companies. When the people in charge will actually be the ones working with you every day, and they are only filling a small number of positions, they will be more likely to find it worthwhile to get to know you as a whole person during the hiring process.
Unfortunately, once a company is beyond a certain size this just isn't possible because it doesn't scale. They have to fill hundreds or thousands of positions and also maintain a universal set of hiring standards. Things degrade into a game of numbers. This makes cookie-cutter tests almost inevitable.
While frustrating in their own right, for me what makes things worse is that you have to do one of these screens for every single company you apply to. And most companies have the same evaluation goals for the phone screen stage (e.g., do you actually understand data structures & algorithms).
What I'd really like to see is the emergence of something like a "common app" for software hiring. Outsource technical screening to a reputable third-party, and once you've proven yourself by obtaining a good enough "score" you can move immediately to on-sites (what constitutes a "good" score would vary by company). This doesn't solve the problem of the efficacy of technical screens, but it at least cuts down on all the redundant effort.
Two services I've tried so far that are doing something like this are Interviewing.io and A-List. Unfortunately it seems these services merely make it easier to get a phone screen, rather than replacing them. But it seems like a step in the right direction.
The value proposition of investing time and effort into interviewing with this company appears to be less than, say, interviewing companies whose priorities are well-aligned with OP from the get-go. That being said, these kinds of "coding puzzle" screeners aren't going anywhere, and may lock him out of great opportunities at great companies.
"I'd rather have it and not need it, than need it and not have it."
I have taken a number of HackerRank screens myself, and I have never seen one that either (a) tests beyond the coding level that would be expected of a fresh CS graduate or (b) is not vastly exceeded in scope and complexity by the coding challenges given during the onsite, which do allow considerably more flexibility and relax some of the artificial constraints.
Why attempt to circumvent a test that is meant as a slightly less trivial FizzBuzz?
This response seems like an attempt to engineer that path out of nothing. Good luck, but you can also avoid these interviews if you can make those connections/build your reputation to the right extent.
But most developers (and I'd venture most good developers) don't have reputations that proceed them. Since it's hard to separate the wheat from the chaff, I think that a quick coding quiz is fair game so long as it doesn't waste too much time. For example, if I were interviewing, I'd probably be willing to devote about 30 minutes to this sort of thing, but more than that and I'm probably not going to bother unless I'm very interested in your company.
I tried to build my own coding test that is based on refactoring based on changing requirements: https://alexrohde.com/public/zennish/index.html#/challenges
That being said, depending on the type of company and the number of candidates they are dealing with, I wouldn't be surprised if they simply ignore your letter rather than trying to deal with it. If you have 60+ more or less qualified applicants for a single job opening your first job is to get that down to less than 10 as quickly as possible and throwing out anything that doesn't fit into your template is a quick and popular first step.
What are the alternatives?
They need to minimize time, give everyone a fair chance, and improve the signal. I certainly wouldn't say the current method is great at meeting those criteria.
IMO If employer is adamant to rely only on cookie cutter first round interviews, then it’s probably not worth joining such places. It’ll be filled with people who are great at cracking such interviews and believing that these cookie cutter interviews are the only way to go.
There will be people on both sides of this debate, pro and anti.
If you don’t believe in solving algorithms/ hackarank type initial interviews, it’s good to challenge such requests.
If you are fine with it, that’s great. You and the employer have the same thinking. And it’ll/ May work great!
Without even addressing the sour grapes attitude about coding interviews, the sheer arrogance with which you try to dictate someone else's process is a red flag in the first place. That, plus the fact that you're refusing to do what they want, is really bad for your chances of being hired.
My experience doing so falls into exactly two categories:
+ Companies that get very upset (one even had the CEO email me cursing me out after I said I wasn't going to remake a twitter API client considering I had a github full of API clients including one for twitter already!)
+ Companies that go "Oh, actually yeah, that seems to make sense. Can you highlight a few repos you'd prefer to show us, or do you mind doing some whiteboarding with us?"
You never, ever, want to work for the first category. The first category of companies are the same people who usually expect you to work a lot of additional hours for free, have poor internal practices at least around work/life balance, and generally treat their engineers like code monkeys instead of people.
So, I usually push back against these tests because it's very revealing to do. Even if you end up caving, it's important to test the companies response to a bit of polite push back.
By definition, if they have a job, they want to fill it with a qualified person. Jobs aren't (usually) charities to the person working.
This isn't a one way street. As an employer I want the best possible candidate. I want someone who can think on their feet and is able to say no to unreasonable demands. I want someone that brings his own perspective to the table.
If I want a code monkey - I would advertise for one.
And as an employee I want an employer who values my brain and my problem solving ability in complex and ever changing environments more then arbitrarily idiotic coding tests (or in my case analytics problems removed from anything resembling real world situations).
I am glad to be working at a place that enables me to have both (as a colleague sitting in talks with applicants and being an employee).
Helpful hint: there are no absolute requirements in hiring, just various levels of filters than can be overridden at will.
On the other hand, it's rare for coders to be so desperate that they'll jump at absolutely any and every job opportunity. The balancne of power has long tipped in our favor.
He has the skills, they want his skills. They are coming to him in the hopes that they're a good fit and that their rewards are enticing enough.
He obviously doesn't need to worry about being hired by ABC.. the only reason he didn't outright reject their test and proposed an alternative is because he thinks it's an interesting company or product.
However unless they really like your profile they will immediately next you after that kind of response because companies also don't have time for this nonsense. They just want a standardised tests for all candidates so they can rank them and then hire the best.
I almost got the job, they randomly canceled the on-site at the last minute. Needless to say, I think my effort at least got me to that final step.
I think an email like this would be just fine, for them.
I think it would go over badly at companies where HR runs the hiring process.
With a tailored take-home, the company has a chance to evaluate candidates based on more realistic, holistic challenges than “solve this academic comp sci problem that you won’t actually encounter on the job”. And candidates can get a better sense of the type of work and challenges they’d actually be tackling on the job.
The take-home isn’t tailored to each candidate. The opposite, actually: it needs to be the same for all so that candidates’ solutons can be compared.
Here’s the tl;dr example of a challenge we give web engineering candidates:
“Here’s our API and API docs: <link>. Create an interactive data visualization using D3 and any other tools you’d like. Your submission should include instructions on how to run it.”
By keeping the challenge relatively unconstrained, we allow candidates to show some creativity and prompt them to make the same feature/quality/speed tradeoffs that they’d have to make in the role. We look for autonomous individuals, so this turns out to be a good filter. We encourage them to spend less than 4 hours on it, but our time limit is a pretty generous 1 week since they likely already have a full time job and other interviews.
Yes, side projects can be fake but thats why you interview for multiple rounds. Think even there is no proof a candidate really took the HRank test.
Ideas for how to do hiring differently are cheap and plentiful.
These comments are completely missing the point. HackerRank's value is as a screening process. The point of such problems in the early phases of an interview is not to find out how good a programmer you are, but how bad a programmer you are.
There are an ASTOUNDING number of candidates for programming jobs who can barely code. FizzBuzz eliminates a lot of them, but sometimes you need something just a bit more difficult. That's where HackerRank comes in.
When talking to people that are "professional programmers actively seeking work" I find that the majority of them can't do simple tasks. "Simple" isn't meant in an arrogant way, either; examples include reversing an array (with no space constraint), iterating a dictionary/map (regardless of understanding map implementation, a lot of people don't understand that iteration order isn't predictable), and basic use of nested lists/non-scalar data structures. Those aren't esoterica that "nobody uses" on a daily basis, they're bread and butter of programming work.
These people have hobby projects/OSS work, it's just . . . not sufficient, in many cases, to indicate basic competence on the job. I don't know why that doesn't correlate. I don't think most of these people are lying and publishing work that isn't theirs. It might be that they have a very long time to write the stuff in their GitHubs or whatever and can't do basic things in a hurry otherwise. It might be something else. Regardless, they turn out to be unqualified when tested on the basics.
If you find the problems insultingly easy, choke it down and consider it equivalent to the question of "are you comfortable being asked to show up to work on time?"--patronizing, but an easy box to check, and not meant for you.
There are companies that rely entirely on very hard/complex algorithms problems for interviewing, with the full knowledge of what they're testing for and why they're using those tests. I'm not talking about those companies; there are good and bad reasons for doing that. I'm talking about simple coding challenges presented early on in the candidate's process.
There are also companies that get confused as to what they're using the HackerRank-equivalent tests for, and give really hard problems (or, worse, puzzle problems that block all progress and rely on some sort of "gotcha" trivia knowledge to even approach), but evaluate candidates' performance as if those problems were FizzBuzz++ basic competence screenings. That's a mistake, but also not what I'm talking about here.
For example, I haven't had to write my own algorithm to parse a b-tree or implement binary search since I left school. I could explain how these algos work, but to actually implement it perfectly in python or java under timed conditions with no outside docs, I would most certainly fail and the company would miss out on a pretty good generalist.
For example, the correct answer does not appear in the list of available options, or where the problem statement is not precise enough to solve in an unambiguous manner.
There is no human I can talk to and ask clarifying questions to resolve the ambiguity because, you know, it is a HackerRank test!
After going through these experiences, I have decided that HackerRank test is just not worth the time. As a rule, I decline any request to take a HackerRank test citing my reasons as politely as possible. Surprisingly, more often than not, the recruiter is happy to setup a telephone round where I can talk to an actual human.