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.
If their hiring process involves jumping through hoops before being granted permission to interview and if the tasks assigned to you bear almost no relationship to the job at hand, the chances of the job actually being good are low.
Employers that do this kind of thing typically have an entitlement complex and not the smartest. People with an entitlement complex who are not very clever are bad to work for.
>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?
In my case because I have a bunch of open source available that they can just read.
If a company expects me to complete a 1 hour badly thought through exercise that is at best barely related to the job before they grant me permission to talk to them, just exactly how well do you think they'll treat me once I'm actually hired?
You have just dismissed most tech companies. All the large ones (Google, Apple, Amazon, Microsoft, etc.) give coding puzzles as part of their interview process.
If you don't want to work for one of those companies, that's absolutely your choice, but you'd be wrong to say they have an entitlement complex or aren't the smartest.
> In my case because I have a bunch of open source available that they can just read.
I do read people's OS projects, but I simply can't do that for every candidate before I screen them, I don't have enough time. If the coding tests are easy, and you want me to see your open source project, then just ace the coding test and move on.
If you don't want the job, then don't do the coding test. It is your choice.
"Mimic real life" means no puzzles (unless I've literally experienced them in real life), no binary tree reversals and no big O notation questions.
>You have just dismissed most tech companies. All the large ones (Google, Apple, Amazon, Microsoft, etc.) give coding puzzles as part of their interview process.
I think that type of thinking leads to embarrassments like this:
I think he experienced exactly the same problem the OP is talking about and in this case it's not him who was dumb, it was Google.
I wouldn't rule out any of those companies but I think I'd rule out joining through the standard interview process - I'd look for specific people who looked to be doing exciting work on specific teams and try to befriend them.
>you'd be wrong to say they have an entitlement complex or aren't the smartest.
I think it would depend upon the team. I think they're not all geniuses, and they do have a tendency to drink their own kool aid. For sure some teams are great though.
Sounds great. I've done this too, but I've never done it before screening candidates. I don't have enough time to screen candidates by programming with them.
> "Mimic real life" means no puzzles (unless I've literally experienced them in real life), no binary tree reversals and no big O notation questions.
Understood. My goal with my coding quizzes and knowledge questions is not to mimic real life. It's to asses the boundaries of the candidate's education and experience, without regard to skill.
> I think that type of thinking leads to embarrassments like this
There always have been and always will be false negatives, even with lengthy face-to-face interviews, even with pair programming, and even with paid internships.
One high profile false negative anecdote, while unfortunate, doesn't imply there's a widespread or unexpected problem. Applying for jobs always comes with a risk of not getting the job for a wide variety of factors that are outside the candidate's control. If it's a job you really want, all you can do is try hard.
I love homebrew, and I'm sure @mxcl is a fabulous coder, but the tweet you shared does make it sound like he expected to get the job without an interview, and might have come across that way, or might have not prepared at all.
No me neither. I screened with a 5 minute fizz buzz like task and CV fits. Bad programmers slipped through the net (and were caught by the test) but I never got anybody who literally couldnt code. I was happy with that balance.
I was afraid if I made it longer than 5 mins we'd filter out good candidates who couldn't be bothered with our bullshit.
>One high profile false negative anecdote, while unfortunate, doesn't imply there's a widespread or unexpected problem.
It does imply that it just doesn't prove it.
A wanton disregard for realism in interviewing is, in my experience, very clearly systemic and industry-wide.
>tweet you shared does make it sound like he expected to get the job without an interview
Seriously wtf? I think you're starstruck by Google and that is affecting your judgement.
Asking him about binary trees was dumb. Unless Google place him somewhere patently unsuitable for his skill set (kernel hacking/low level database code), he won't be using binary trees.
@mxcl's experience doesn't imply it either. The only evidence for a widespread problem is the number of people who have that problem. I have never had an interview where I felt rejected for what I thought was a single dumb question, ever. And I've never seen it happen to someone I know personally, or at a company I've worked for.
> A wanton disregard for realism in interviewing is, in my experience, very clearly systemic and industry-wide.
I don't necessarily disagree with this, but could you elaborate more on what bad things are actually happening that affect people? Are good coders, by and large, not able to get jobs? Are good coders having statistically significant problems getting paid or finding enjoyable work? I don't think so. Please elaborate on what actual damage is being done, I'm not seeing any.
> Seriously wtf?
Seriously. I don't know what happened, but I'm not automatically on the side of @mxcl because he was turned down or because I'm a fan of Homebrew. He might be exaggerating what happened. Do you know for a fact that it was specifically the binary tree question and nothing else in his interview that lost his chances there?
For all I know, the binary tree question was put there just to see if he would scoff at actual programming questions given his high profile status, and he failed because he scoffed and not because he got it wrong.
> I think you're starstruck by Google and that is affecting your judgement.
Why? What have I said that suggests I'm a fan of Google at all? It seems to me like you're making wild assumptions here.
> Asking him about binary trees was dumb.
That's an opinion. One that is based on not knowing why the question was there, or what the other questions were. I do ask questions on topics that I don't expect the candidate to use in their job. I'm interested in whether they paid attention in school. I'm interested in what they know, regardless of their skill. I'm interested in what they don't know, and where their limits are. I'm interested to know if people are curious about software. I'm interested to know how people react to questions they don't know the answer to. And I have a rule to specifically reject candidates that get upset about being asked technical questions. Those are people I don't want to work with.
None of that precludes asking some realistic questions about things people will use on the job, in addition to any unrealistic ones.
This is moving the goalposts. That is not the same thing as a wanton disregard for realism.
Have you been asked interview questions and set tasks which were not related to what you actually do day in day out? I have. LOTS.
>I don't necessarily disagree with this, but could you elaborate more on what bad things are actually happening that affect people? Are good coders, by and large, not able to get jobs? Are good coders having statistically significant problems getting paid or finding enjoyable work? I don't think so. Please elaborate on what actual damage is being done, I'm not seeing any.
Um, more false positives and more false negatives. It honestly feels weird having to justify why realism in testing is important. It feels so damned obvious to me. Would you design a purposefully unrealistic scientific experiment? Create a deliberately unrealistic automated test? What's special about interviewing that realism is of secondary or tertiary concern? What is more important than realism?
>I'm not automatically on the side of @mxcl because he was turned down
It feels kind of like you're automatically on Google's side.
The part that made me go what the fuck was when you said "he makes it sound like he expected to get the job without an interview" when he neither said nor implied anything of the sort.
And, earlier you took it as a kind of article of faith that everybody at google was obviously super smart, because Google.
There's definitely some bias there.
>I'm interested in whether they paid attention in school.
That's cool. I'm interested in whether they can do their job and I think it's kind of weird how people are seemingly so keen on setting tasks that test anything but that.
>None of that precludes asking some realistic questions
Strictly speaking asking what their favorite kind of chocolate is doesn't preclude that either, but there's a limited time available to interview and a limited amount that can be learned from asking them that - or indeed - anything else of tangential relevance.
What goalposts? You said it was an embarrassment that @mxcl didn't get hired by Google because of the "dumb" question. I've responded directly to your claims.
> What is more important than realism?
For me, questions that assess honesty, optimism, curiosity, potential, and communication skills all rank higher than technical questions that are "realistic". I care more about attitude and potential than I do about whether they can perform specific job duties already.
> There's definitely some bias there.
If there is, I wouldn't know it, but I think you're wrong. Do you know more than @mxcl tweeted? Do you know for a fact what happened? Have you heard Google's side of that story? Are you biased against Google? Do you believe one tweet is true and tells the whole story?
The fact that @mxcl tweeted with indignance about his interview experience is what implied he expected to get the job without an interview. That's a fact, not an interpretation. He didn't so much imply it as say it directly, that he shouldn't have to invert a binary tree because 90% of Google uses his software.
> I'm interested in whether they can do their job and I think it's kind of weird how people are seemingly so keen on setting tasks that test anything but that.
I don't really understand why you just got so snarky, it's probably my fault for arguing, but it was calm a couple of messages back. I'm honestly sorry if something I said ticked you off.
You're taking my comment out of context and trying to make it sound like something it's not. I can be interested in whether someone learned in school and still be interested in whether they'll do a good job, right? In fact, I'd go way out on a limb to suggest that doing well in school is a reasonable (but not perfect) proxy for how well someone might do in a job. Especially, but not limited, to new college grads.
I only said it was an embarrassment that he said that and that they asked such a patently irrelevant question and then rejected him. I think you read a lot more in to that tweet (and possibly the situation) than was actually there.
It's entirely possible that they rejected him for a perfectly reasonable reason, though there's nothing to really imply that that is so.
>For me, questions that assess honesty, optimism, curiosity, potential, and communication skills all rank higher than technical questions that are "realistic".
Ok, so if that's what you're really looking for, do your job adverts actually state at the top "we seek honest, optimistic, curious candidates with potential and communication skills?"
I've got to be honest I don't see many job adverts that state that and I think "able to do the job" ranks higher up the list of concerns for most employers than "has a sunny outlook on life". Still, if that's what you want...
Realistic tests will, if realistic, implicitly test honesty to a degree (the candidate will at some point have to admit that they don't know) and communication skills and many other important traits you might not even realize that you needed to select for - in proportion to their relevance to the role at hand.
>If there is, I wouldn't know it, but I think you're wrong. Do you know more than @mxcl tweeted? Do you know for a fact what happened?
A little, yes, but that's not the point. You don't know more than what he tweeted and yet you inferred something quite insulting that he did not say or mean.
>The fact that @mxcl tweeted with indignance about his interview experience is what implied he expected to get the job without an interview.
That's 100% your spin. To me, it implied that he was pissed at being asked irrelevant questions. A quick google can actually confirm that (there's a quora thread about him).
That's pretty much what this whole thread is about. The OP's rant was basically "recruiter, your test is bad, here's a more realistic one you should try". My rant was about irrelevant questions and unrealistic questions.
>he shouldn't have to invert a binary tree because 90% of Google uses his software.
...and neither should most people who interview at Google because asking that question is irrelevant for ~90% at software engineers even at google (never mind elsewhere).
Frankly, even if you are an engineer that does use binary trees it's a bad question to ask.
>I don't really understand why you just got so snarky
Honestly? Because, in a situation where you didn't really have enough information to form a judgment you instinctively sided with the large, powerful, faceless corporation and showed distrust of the little guy who made a great piece of software for free that people love.
I think that's a pretty unhealthy kind of bias to exhibit.
>I'm honestly sorry if something I said ticked you off.
Yeah, sorry I probably shouldn't have snarked.
Why is stating what meta-characteristics you're looking for some sort of requirement for you? My job ad does say "passionate and talented", and I (always) reserve the right to interpret that any way I choose.
> It's entirely possible that they rejected him for a perfectly reasonable reason, though there's nothing to really imply that that is so.
Yes, exactly. There's also nothing I know of to imply it's not so either. I can't pass any judgement, I can't call it embarrassing, and I don't know if the question was irrelevant or dumb or fair & smart. If you do know it for a fact, then spill the beans. So far, nothing you've chosen to share addresses this factually.
> You don't know more than what he tweeted
That's what I've said from the beginning, and is precisely why I can't side with him.
Your argument is a false dilemma, you've made assumptions and jumped to the (incorrect) conclusion that because I don't side with @mxcl, then I side with Google. You've assumed that if I'm not with @mxcl, then I'm against him. Your incorrect assumptions only reflect on you, not me.
> To me, it implied that he was pissed at being asked irrelevant questions.
In my mind, that's not meaningfully different from what I said, other that you're claiming that "irrelevant" is absolute and objective. To make that claim, you need to know Google's side of the story. Since you know more than the tweet, tell me... what's the whole story?
> in a situation where you didn't really have enough information to form a judgment you instinctively sided with the large, powerful, faceless corporation and showed distrust of the little guy who made a great piece of software for free that people love.
You just admitted and rationalized your own bias. What justification do you have for continuing to talk about mine, which may or may not exist, given yours?
This guy wouldn't be using binary trees at Google. He hasn't used them before. They are of minimal relevance in his area of expertise.
* Argument from authority (because Norvig)
* "We might want to put a front ender in a back end job and vice versa so we need an interview process that accounts for that"
* Tests of "abstract skills" - as in, skills you won't actually use - are more important than tests of non-abstract skills which you will.
* "It's their money"
> * Argument from authority (because Norvig)
No. I suggested you might want to ask Norvig why did they decide so
> front ender in a back end job
I think it's a bit different. It's like you are creating completely new stuff like Big Data 15 years ago where frontend/backend separation didn't exist yet. Likely the same holds for various machine learning roles right now. So those categories we will be using in the future have to be invented first, and for that you need slightly different approach
They are considered the best and give above average compensation. Is your company considered the best, properly paying top talent, to employ the same schema? Those tests were done to distill the top end performers with the accepted risk of huge number of false negatives. Now every mom-and-dad shop is trying to use it. That's why I call it insanity, getting extreme practices into mainstream in our industry.
Yes, this was true of every job I've ever had. Maybe I've been lucky.
I don't really understand why asking someone to do a small amount of programming for a programming job interview, when they claim to be an experienced programmer, is any sort of "extreme" practice.
You've expressed a lot of complaints about coding quizzes, some that many people here share, and some that I agree with.
I would urge you to spend your energy making a specific alternative proposal that companies can actually use. The OP's proposal isn't something companies can actually use for all candidates, even if they could use it for him.
I'm very interested in how to better screen and interview devs. I want to improve my process. But no process I've ever been exposed to is even close to perfect.
Make sure your proposal considers the company's perspective. The ideal process will benefit both the candidate and the company, but something that's pleasant for the candidate and unpleasant for the company will never get adopted no matter how good it sounds.
If it takes longer to verify than it does to test your coding ability directly, why shouldn't I just ask you to do some coding? The challenges you took might be less impressive or well known than you think. The challenges you took might not say much about you if they were team challenges.
> including advanced snippets of code/projects on GitHub demonstrating your dominance in that area
That doesn't help me compare one candidate to another at all. Nor does your github demonstrate dominance in anything, unless your project is React or something like that. Github is a vast wasteland of barely used code.
> doing silly low-end coding quizzes seems like a total waste of time
It's going to take about as long to get through job interviews no matter how the interview is conducted. You can spend it programming, or you can spend it talking. The time spent is an investment in getting the job. If you don't actually want the job, then you're right, it's a waste of your time.
What's not going to happen, ever, is someone will take the initiative to read through all your work, verify the things on your CV, and offer you a great high paying job without going through the interview process.
> Can't you really see that?
To be very frank and honest, given all the reasoning and experience I've shared with you, this question gives me the impression that you might be very inexperienced.
> It's just super arrogant.
What, precisely, is arrogant? What are you talking about specifically? Using Hackerrank in an interview? Having an interview at all? Not noticing that you're a rockstar before talking to you?
Please take some time to articulate what the right interview process is, rather than spend any more time passing blanket judgements.
Imagine you have strong interest from Google, FB, Uber, Amazon etc. Google wants to waive their interview process as you are an open source contributor (they actually read your CV and clicked on the links). FB wants you to lead some ML team they have doing cool things etc. Other companies beg you to work for them even if you don't consider them interesting, willing to overpay you and pamper you.
Now comes your unknown company/startup. In order to even talk, you require passing some HackerRank coding test. I look at your Glassdoor reviews, you either have none, or few, or your compensation seems to be low etc. You might be working in interesting area, maybe I should give you a shot? Or I just want to see what current crop of interviews in your industry looks like, maybe I agree on going through the process? Maybe I even visit some interesting city you are located in and scratch it off my bucket list?
In the end I won't work for you. I won't consider anything you offer. I've gotten from you what I wanted - glimpse of the area you are working on for more ideas, keeping my brain up to date to interview requirements, visiting city I've never been before. You wasted time and money on me. You didn't get anything. I puzzled your head because you thought you'd have a shot at getting me. And that is the best outcome you'd get from this; most likely I wouldn't even talk to you after your initial requirements and go with other choices available to me.
> Google wants to waive their interview process as you are an open source contributor. Other companies beg you to work for them even if you don't consider them interesting, willing to overpay you and pamper you.
That's not a realistic scenario, your point seems contrived. Google doesn't waive their interview process, as the @mxcl example demonstrates. Companies only beg to throw money at you and overpay you if you're famous or have a niche skill. If that's true for you, this conversation is irrelevant to you.
> Now comes your unknown company/startup. In order to even talk, you require passing some HackerRank coding test.
As I said above, I'm assuming this process only starts when you express interest in the company. If you're complaining about having to respond to recruiter spam, I can't help you. Nobody is forcing you to take any tests. You should only do it when it's for a job you want.
> In the end I won't work for you. I won't consider anything you offer.
What you're doing is avoiding false positives by screening for something you care about. The same thing Google does. Except Google has statistics on how well their screens work.
> You wasted time and money on me.
Or, more accurately, they saved time and money by not doing lengthy and involved interviews or researching you heavily before discovering it's not a good fit.
They actually do. What they told me is that if you are an open source contributor for important open source, or you have 3 people within company that want you, you can skip the whole process. There are surely more ways to skip it. Not sure why they didn't do it for that Homebrew guy.
> when you express interest in the company.
I was mentioning that these days often HackerRank is step 0 of interviewing process, like what used to be technical phone screen. And that holds even for recruiting agencies if you want to have your CV featured there, even for underwhelming jobs. TopTal IIRC also does that.
> they saved time and money by not doing lengthy and involved interviews
I wouldn't be so sure here. You can be easily played, i.e. you are in Seattle, somebody wants to visit friends there, schedules an interview with you, you pay flights + hotels because you are happy to talk to them, they use you and extract whatever information they wanted to acquire from you and then tell you they decided for another alternative, but went there mostly to visit friends/relatives/handle some administrative business. It happens.
> Please propose a better process!
It's tricky. The deficiency in your approach I see is that you expect candidate to spend time in convincing you without you spending time on researching them, pushing all externalities to the candidate. With this you IMO cut the people you want/need the most as they usually value their time. Maybe if you offered compensated initial interviews to people you spent some time researching, that could help? That would be a signal you did your research already as you wouldn't want to waste money on random people, and that you appreciate them dedicating time talking to you?
You expect people to do research, but you clearly haven't listened to anything I've said about my process, which I've commented on multiple times in this thread. Your summary is a straw man unrelated to anything I do when I hire people.
And you still haven't yet proposed anything better!
Bring the candidate on site for a 4 hour coding session. Provide a standard list of questions the scale in difficulty. Think:
2) Reverse a string
3) Write a calculator class/script
100) Write an algorithm that can search compressed text without decompressing it
So you see how far and correct they can get with an IDE ... and maybe no internet connection.
Noon - Hiring Manager lunch
Afternoon - 1 or 2 design interviews on the white board.
So you have done a few things here that I want to outline.
A) You got rid of the stupid whiteboard
B) You have one process that scales for experience levels!
C) You can tailor the problem set at a certain of difficulty to specific languages
This interview style ensures the developer/engineer knows how to code, and can be weighted appropriately to certain skill levels.
Even the top notch devs I know can't do anything meaningful without an internet connection. Unless of course you know how to invent several layers of libraries, instantly in hours without bugs. Know the documentation of the libraries memorized to the last full stop.
In my exposure at least I know 0 devs who can do this. And I'd bet even the interviewer wouldn't be able to write any meaningful without a network connection. This isn't 1960s. By very definition almost anything today requires an internet connection.
The only thing I'm really defending here is using a 2nd stage screening process that only takes 30 minutes, before I go to the 3rd stage that takes a half day or full day. @BitL seems to be fighting the screening process, which is a necessary practicality and isn't going away.
The first stage is reading resume and glancing briefly at any side projects, which is ~5 minutes. The first stage is invisible, and filters out more people than any other stage. If anything unfair is happening, it's happening here, and there's little a candidate can do about it.
My thoughts on your outline:
A - getting rid of the whiteboard is of course optional. In my case, having graded exercises doesn't mean I stop using the whiteboard. I only provide a whiteboard for people who want one, and I don't ask people to whiteboard things better done in an IDE.
B - Yes! I do like having exercises that range from super easy to not solvable. It helps to know where people get stuck.
C - Yes! That's very helpful for language specific jobs. Personally, I also like exercises that are language agnostic, to let the candidate pick the language they're most comfortable with. I've loved doing coding quizzes in Python during interviews, and would prefer that over, say, C++.
I was tricked into a code golf challenge which was a hiring test. The result was good I was surprised that slacking off could get me a nice discussion, and the company got to pitch their positions. I've never done a hacker rank thingy for hiring and probably never will, I loathed them in school. They do not tickle my mind nor can I scratch my itches with them.
I know this sentiment is shared by many high value employers I've had the pleasure to work with.
Dunno. Google sent me flight tickets to Mountain View on-site interview without doing any phone screen. YMMV
Maybe sometimes you would consider skipping it as well? Maybe clicking through someone's resume could prompt you to skip that process? Maybe even onsite interview or making it just a friendly chat?
It isn't and that's exactly what you should expect.
Nonetheless it shouldn't be too much to ask that the test and interview ask relevant questions and that the company puts skin in the game that is commensurate with the sacrifice being asked of the candidate.
In other words, 5 minute screener tests are cool but if you make me do a weekend project you put me up in a 5 star hotel.
They are fun, and they give me a chance to shine. The coding quizzes actually saved me once when I did really badly in another part of the interview. That company hired me, and gave me what others there thought was the good job.
I also administer coding quizzes to people I hire, and I find them a small but useful part of the larger interview process. I'm giving an assembly language coding quiz to someone later today.
> She basically interrupted you from working on something benefiting humanity
That seems a little hyperbolic. Do you want the job? You have to spend time interviewing. Simple as that. Don't do the quizzes if you don't want the job.
> Then you see the same company awarding their good jobs to friends of higher ups
Most companies try to promote from within, and many people think that's a good thing. The alternative is you hire unknowns from outside the company over people who've been there putting in the time and know the system.
> just because she was lazy to check your CV and ignorant of the industry
It's both presumptuous and pessimistic, and also likely wrong, to assume that a coding quiz implies any laziness on anyone's part.
> Imagine the same doing in other areas of industry
Other jobs have it much worse, you have to get bureaucratic certifications for a lot of jobs that are a lot less fun than Hackerrank, and take months and months. Or you could be a lawyer or doctor, and you have to raise money and bring in clients in order to get the good jobs.
What jobs are you thinking of that have it so much better than programmers?
The more senior someone gets, the more expensive. It's worth the company's time to screen for basic aptitude, especially when someone claims greater expertise.
> As a consequence, I rather start my own company
By all means, you should definitely do that and stop worrying about job interviews!
> if you employed me with a bit of a good will on your part
Good will is something you earn. And you earn it by doing things the company needs without complaining. For starters, they need to be able to compare candidates against each other when hiring. Fighting that, and asking the company to evaluate something you've done that doesn't allow comparing you against other people, isn't something that will benefit the company.
> or by simply reading my CV and clicking on the links there.
You're expecting people to spend time reading your projects before they screen you? If you got the call, it's probably because someone read your CV. That's all you can expect at this stage. If you want them to click the links and read the rest, then you take 30 minutes to do the phone screen, and another 30 to do the coding quiz. Then you get to have a conversation about your projects.
If they never ask you about your projects, then yeah, maybe you shouldn't work there. The coding quiz is only one small part of a many-part process.
Are you saying, the recruiters are just treating everyone (accomplished/non-accomplished who happened to have a great CV) the same? I think your point just supports the view instead of refuting it.
I think you forgot to add the "/s" to this statement.
Isn't this self imposed if you are the one applying for the job??? I don't get it, if some rando recruiter emails me a Hacker Rank test, I delete the email if I'm not interested...pretty simple. If I am interested, then I apply and that is no longer an "interruption"...or at least it is self imposed so there is no real reason to complain.
It's not a matter of fear or offense. It's a matter of judiciously investing my time on the right opportunities.
I get about 3 to 4 calls from recruiters everyday. If I agree to go through this kind of interviewing process every day (even if the bar is low), I would be spending more than 20 hours every week just doing HackerRank tests. This is not feasible for me. Therefore just like the recruiters need a way to filter candidates out, I need a way to filter recruiters out.
Requesting a HackerRank test is just one of the many filters I use.
I agree completely, I was under the assumption that this entire conversation is about what happens after you (the candidate) submit an initial job application, or respond to a recruiter about a job you're actually interested in.
I'd never do Hackerrank tests in response to recruiter spam.
This reminds me of this recent HN post: https://news.ycombinator.com/item?id=16337434
This might be their claim, but they almost always end up hiring wrong people and firing them.
Its really simple, making hiring decisions based on an interview is really like deciding to go into a long term relationship with a person based on the make up they put up during a date.
If you are choosing on these qualities alone, then the prettiest person would get selected. This says nothing about the person at all, or worse, bad people are likely to put up more make up to hide other obvious flaws.
I take it you've never had to hire or fire anyone. At mid-sized and large companies, it's a cumbersome process and, unless they're complete sociopaths, firing is also unpleasant for the firing manager and the team. It also means taking on the work and cost of doing a new candidate search and another new hire ramp-up.
If easy-hire/easy-fire worked, everybody would be doing it.
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
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.
When it was over I asked the interviewer if there was ever a time when he had to implement such an algorithm on the job during a production outage event and his answer: No.
In my experience working within devops teams maintaining and developing public cloud infrastructure I don't think I've ever had the pleasure either.
In retrospect I don't think it was a bad experience. I think there are roles which exist in software that do require a higher level of rigor than others. I'm often amazed how easily many developers will dismiss performance concerns (premature optimization!) for example. I would expect a hiring process to be upfront and honest about such requirements and candidates should be aware of their own skills and background before applying.
But most software development jobs at ABC Corp are not the SRE Team at Google and they hire as if they were.
I think that's the risk we take with standardizing and automating hiring processes.
update: just markup.
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.
> "Difficult to work with" is perhaps too harsh a statement
That's exactly what the OP meant to say, and verbatim what they would have said in an interview debrief. The interviewee wanted some amount of compromise, and all of a sudden they're "difficult to work with". Now everyone else in the room is framing this potential hire as an asshole. There's no coming back from that. I've seen this happen many times. One term of phrase like that and instantly a qualified candidate is out because someone latched onto a single fault and made wild extrapolations about it.
> just a low-investment screen
You have no idea how much of an investment it is. I've had hacker rank problems that I was expected to spend 3 hours on. That's a pretty big investment just to get my foot in the door. Sometimes (read: often) the juice just isn't worth the squeeze. The employer wants me to give it my best when they're not even willing to come up with their own questions.
> uniform across all candidates
I see this a lot as the panacea of interviewing. Sounds good to have everyone on a level playing field. But if you start out with a crappy process, applying it to everyone equally isn't going to get you good talent. As an interviewee, I'll still be bitter about the bullshit you put me through, even if everyone else had to do it.
Low-investment on the part of the employer. They still expect me to spend 90 minutes on proving I have seen a REPL before, which is time I, frankly, don't have. I'm happy to answer/talk about things that relate to my job, but working on puzzles that just happen to be solved more easily by programming has exactly nothing to do with it.
> the candidate is asking for a completely custom treatment
What's next? Having to actually look at someone's CV? That's insanity.
Maybe the whole point of the test is not how well you do, but how you react to being asked to do something you feel is beneath you...
I didn't say I'm too busy to apply, I said I'm too busy to spend 90 minutes on useless tests.
> but how you react to being asked to do something you feel is beneath you...
You know what a great test for that would be? Ask the applicant to wash your car.
These tests aren't useless. Tons of candidates have never seen a REPL before and are totally unable to solve even a trivial coding assignment.
I suppose your company is too clever to waste their time on such useless tests? Who at your firm wastes hours interviewing candidates who have no ability to code?
Going through someone's Github (or any other project they feel is worthy of sharing) and asking them questions about why they made the decisions they made has been orders of magnitude more illuminating than asking them to come up with an algorithm for solving the subset sum problem without Googling.
It's still easy to spot the liars — e.g. I've interviewed people who worked at the NSA and even they could talk about the skills they used, just not which projects or data — and the process of deciding which things to talk about is a pretty good way to explore their communications style, too.
We actually take great care in examining resumes and CVs before proceeding with a coding screen. We've had plenty of senior developers fail the most basic questions (think FizzBuzz), which is why we conduct these screens.
Even phone screens are better than "Here's a HackerRank link because I don't want to spend time talking to you, enjoy the next hour-and-a-half solving riddles".
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.
I don't know about you, but I would not want to hire someone who can take any task and complete with minimal issues. Where I work, one is encouraged to argue about what is not right in the meetings and offer better solutions.
This candidate is doing exactly that: Argue why a certain hiring methodology is not effective and what a better alternative is. Considering that this candidate does not just follow orders but challenges the status quo and the fact that he has volunteering-based projects to show makes this author very likely a good fit for my organization.
Let me give an example as I am not the best at articulating. hopefully this helps.
Lets say I hired this engineer as Senior or Team Lead. Now I want the base docker image we use for node bumped a major version. I checked the changelog for the nodes releases and knowing our codebase I think its safe.
I could ask a Junior dev to do it, but I knowing that they are lacking experience this may seem like a "big deal" when really its not.
What I want is the node version updated, validation unit tests pass, regressions tests are good. And it to be released. If there is a failure along the way, address it or sure lets chat about it.
But this Email in response to hackerrank - would make me perceive this to be someone who would respond with a complete change to our CI/CD processes, to our infrastructure, maybe to even using Node - as this sort of task is beneath him.
Sure there would be areas this person might excel at, but some days little tasks just need to get done to keep the ball moving.
Looks like it is a difference in culture that I am used to and the one that you are used to.
At my workplace, it is perfectly acceptable for someone to suggest a complete change to our CI/CD process. In fact, we have changed our complete CI/CD process twice (SVN/build scripts -> Mercurial/Jenkins -> Git/Travis-CI) already with minimal loss in productivity because someone questioned the existing CI/CD process and suggested a well thought plan to switch to a new one.
But I get your point that sometimes it may not be feasible to carry our such a drastic change in process, infrastructure, etc. But suggesting such a change is going to be acceptable and we refusing to accept such a suggestion is also going to be perfectly acceptable and both this person and us working in harmony even after this disagreement is also going to be acceptable.
This makes me think that you're a poor judge of character and of a slightly authoritarian mindset.
This email is one of many protesting an industry interview culture that prioritizes badly thought through exercises that bear little relationship to the job being interviewed for.
>What I want is the node version updated
And do you really think that seeing candidates reverse a binary tree without protest will tell you how well they can perform at this kind of role?
> I don't know about you, but I would not want to hire someone who can take any task and complete with minimal issues.
Sorry, I don't want to work with a bunch of pedants. You can have them.
No more extreme than suggesting that someone who raises thoughtful questions on a broken hiring process must certainly be a bad fit for an organization.
> Sorry, I don't want to work with a bunch of pedants.
Now, this is taking it to an extreme!
It's extremely hypocritical to criticize someone for the very thing you are doing (assuming the other person doesn't know how to do their job). Couple this with the fact that they are not asking for any advice on their hiring process, it's a pretty rude thing to do.
A little bit of fluff added to the wording doesn't make it suddenly polite.
> I would not want to hire someone who can take any task and complete with minimal issues.
Someone who can't do straightforward tasks without having an issue is incompetent, pedantic, or both.
I am quite lucky to have worked in companies where the peers and management encourage debates and arguments and do not take it as a sign of incompetence.
I had no idea there were companies that would take perfectly reasonable questions on a broken process as a sign of incompetence. Thank you for enlightening me. I now know to be careful enough to avoid such organizations in future.
I never said raising issues is bad. Where I work, we highly encourage people to bring up issues as they see them.
However, when you bring something up as an issue, it usually helps to suggest a solution (which this original GitHub post fails to do) and we don't generally try to take unsolicited advice from people who aren't even part of the company yet.
Maybe at a consultancy and only if you're far downstream of dealing with clients.
That's not normal, nor should it be.
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.
Why are you so quick to extrapolate an entirely new character based on this person not wanting to use HackerRank?
I'd be willing to waste 5 minutes tops, unless the employer has put some skin in the game (fizzbuzz is ok - nothing much more than that tho).
There's a 1,000 other employers out there who might be a better a fit. I am not going to do a 1 hour, 30 minute or even 15 minute task if they can't at least even be bothered to pick up the phone to talk to me or glance at my github profile.
Companies that expect completion of a weekend-filling exercise before granting you an interview are universally run by entitled assholes. You're actually doing yourself a favor by screening them out: they'll be bad to work for, you won't get to work with other 10x engineers and the company will likely achieve nothing impressive anyway.
I'm not doubting this persons ability - I'm only responding my opinion of this person based solely on this email.
I have never been in a startup that fears arguments. Every startup I have been a part of has lively debates and arguments almost every other day. It's only the large slow moving corporate giants where I see such lack of debate and arguments on what is obviously wrong.
I would go to the extent of saying that a startup that does not encourage arguments in a harmonious fashion would die very soon anyway. Debates and arguments help in weeding out stupid ideas and focus on what that really matters.
This person's email shows that he can have a qualitative argument in a coherent, polite, and non-confrontational fashion - exactly the kind of people you need in startups!
I wish I had more teammates who could write as effectively.
You hire people to solve problems, not churn out code. Code is only a tool to solve a problem.
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
This kind of approach is fine for a junior. I'd even encourage it because there's an attempt to change the parameters of the problem which is something we often have to teach people as they progress.
For a senior position, not so much. I mean, it might be that they're ignorant or stupid, in which case you've probably dodged a bullet when they don't hire you. Or it might be something else entirely.
A more sensible approach, in my view, would be to ask what they were looking for with the HackerRank test in a subsequent face to face. If they say that they don't have a better way to determine developer competency then, sure, suggest that you may be able to help with that when you join.
If it were me interviewing, I'd be particularly interested in suggestions that a) were developed from successful prior hiring practices and/or b) not so bleeding obvious as "look at their Github page".
Thankfully, as a human being, you are not your ability to code. More importantly though, then it also means that people who can't code are worth just as much as you as human beings (more, if they've managed to learn social graces). If you don't hold it to be true, then code or GTFO.
Look for places like the Recurse center in NY that can help you find yourself in the context of being able to code, or more traditional non-traditional approaches like backpacking though India, or taking LSD in the Haight in the 60's (anyone got a time machine?).
If you'd like friends (who will be interested in your personality), go find some. Outside of work. Bonus points if you manage to find some that can't code.
Hint: companies are interested in your personality - if you come across as this caustic in a phone screen or in person interview, I'd be surprised if you get invited back. (Or at least they should be; Google's current HR woes are their own creation.)
While I can understand your leap to soulless masses - that was not my intention.
p.s. Even at the best companies there is some truth in what you say, but it varies a lot.
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.
Some tests will seem impossible to complete in the alotted time. Often that's intentional. It saves time for the candidates and gives a better spread of scores (very few will get 100% in some test batteries). But it can be disheartening. For these initial online tests I try to give enough time that most people won't really run out of time unless they get stuck.
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.
Agreed, this is why I give my own coding quizzes, so I can have a discussion about it. I'm more interested in the thinking than the answer.
But, I do have sections in my interview that test knowledge and not skill, so I can still see the usefulness of letting Hackerrank be a part of the process.
The one thing I don't claim is that HackerRank or coding quizzes are perfect. This is why coding quizzes are only one of maybe six phases of an interview.
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
There is no mention of "working on a pre-existing codebase that they know nothing about" in the description of the HackerRank test... so I don't know how your point applies?
Yet by forbidding the use of external research and libraries they remove the two main tools I would want some to use "in an environment and context where you don't have the advantage of being an expert ahead of time"
The problems should be chosen such that external research and libraries are not needed. For our phone screens, we don't even require the code to compile or successfully run. For instance, we explicitly tell candidates to just make something up that sounds reasonable if they need a standard library function that they know exists but they can't remember its exact name or type signature.
We've never used HackerRank, so I don't really know how customizable it is. From the comments here, it sounds like it's designed to be fully automated with no participation from any developers at the hiring company. I don't like that at all. When I wrote my original comment, I'll admit I was thinking of it as a more advanced Google doc for programming, not as a fully automated platform. That's my bad, and I should have done my research a bit more.
Seems like a nice way to hire carpenters, not programmers.
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.
At the same to be cognizant of your business, profit margins and by that definition what you can pay and remain profitable is a good thing. Not every shop has to be a world changing venture, and if you can pay low and hire people good enough to run your business is just perfectly Ok.
There are small financial firms which will conduct significantly harder interviews than Facebook/Google. The offers are also commensurately higher (significantly so).
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.
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.
* strings are simply arrays of chars
* how to access an item in an array
* how to write a for loop
One should be able to devise a solution to a simple problem like this without any CS course at all.
or code units/code points/grapheme clusters/emojis. Thanks to hard work of many developers string handling becomes easier over time, but I don't think it's trivial if you don't exactly specify what you mean by "string" and "character".
The human touch.
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.
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.
* 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 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?
If the implication is false, it would be an exciting data point!
HN being what it is, here is quite a non-zero chance to meet a person with real hiring power who really could have made an offer to the person in question.
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.
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)
“... fist-sized lump of uncut diamond ...” (pause... toss)
“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.
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.
HackerRank test can be as standard or as non-standard, and as easy or as difficult as the individual employer wishes it to be.
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.
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.
Nowadays I say up-front "I just want to mention this because it's generally been a sticking point and I don't want to waste your time, I'm looking for a salary in the range of $X". That has saved me a whole bunch of time.
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.
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.
Or at least I would consider hiring them if the rest does fit (culture and other such squishy interpersonal things).
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.