66

I recently interviewed with a medium sized company. The job description was very general, one requirement was:

Good knowledge of at least one of the following languages: JavaScript, Python, C#, Ruby

I am a junior level Python developer. I have some very basic knowledge of JavaScript, but none of Ruby or C#

Upon arrival I was presented a test. I was asked to start a web-server using Ruby on Rails by using all the necessary steps (installation, initialization, creating a basic hello world page, making it accessible on local host and also handling a error along the way they had prepared). The timespan was very short. Since I had no prior knowledge of Ruby, I just started google, reading a quick tutorial on the official Ruby resource. I had completed the task about 40% - 50% when my time was up.

I was asked why I was unable to finish and I explained that I had no prior knowledge of ruby whether as a developer or in regards to dev ops or administrating a Ruby-based web server.

I was told the exercise was explicitly about seeing how I would handle technology which I know nothing about and the timeframe was intentionally too short. It was designed to see how the applicant would act under stress faced with an unlikely task.

However, I was later explained that my test would be graded “F”. I was disappointed and asked what would have been expected. I was informed that the grading was analogue to how far you have come with your solution. Since I was under 50%, I was graded F. I then asked how the result should have been for passing the test (being A and B in this case). A would have been the task fully completed, B would have been like A, only missing the last implementation of displaying the actual “hello world” message.

I may be wrong (since I have never worked with Ruby etc), but I feel like this test was very unfair since on the one hand side it was pretty much designed to struggle and fail, however it was graded like a normal test where the applicant would be able to implement the solution within the given time because he should know these basics.

During the following interview part my “bad grade” was referenced a few times. What would have been a professional response to this?

6
  • 3
    Comments are not for extended discussion; this conversation has been moved to chat.
    – Neo
    Jun 12, 2020 at 16:19
  • 6
    How do you define "unfair"? If all candidates are graded according to the same system, asking you to work on Ruby might be unexpected, and can influence your view of that company, but I'm not sure I see how it is "unfair"
    – njzk2
    Jun 12, 2020 at 22:12
  • 2
    My question here is... if the timeframe is stated by the interviewer to be intentionally too short, yet the grading is based on completion, does that mean the test is intended to be skewed towards giving interviewees bad grades that the interviewer can use against them? Jun 13, 2020 at 17:22
  • 4
    If you got such a "bad grade" why were they still interviewing you? Jan 24 at 19:00
  • 1
    This might be a bit pessimist of me to say but could it be this kind of "test" and the associated "grading" (which I have never seen been done anywhere) has the less noble goal of making the applicant insecure and thus, likely to accept a lower offer? Like other have said: if the grade really is that bad, why keep interviewing you otherwise?
    – ereOn
    Jan 25 at 15:21

14 Answers 14

236

The professional response is to put on a smile, let them reference it all they want, take the free coffee or water offered, listen politely and then reject their offer.

An interview is a two-way street. They try to find out who you are, you are trying to find out who they are.

It's obvious there are no reliable results in a test that sets people up to fail and then grade all failures an F. You can set people up to fail to see how they do when failing, but then you need to have degrees of failure, or the whole thing is completely pointless.

So they told you you failed. That might be the truth because they are incompetent, or just their mind games to make you accept a lower offer. You think they failed in creating a test worth having. Be nice, smile, say "thank you for the opportunity" and, should you get an offer, say "thanks, but no thanks". They missed their opportunity to hire you. Their problem, not yours.

15
  • 27
    I agree that a test in which everyone gets an F is pointless for ranking among candidates, but it's not clear that this is actually the case. The test does have different degrees of failure, the OP just happened to get the lowest one. They were actually quite close to getting a D rather than an F - I'm doubtful that all candidates would get an F, which would be the only scenario in which the test is "completely pointless". Jun 11, 2020 at 16:08
  • 54
    A test rubric where the majority of grades are impossible is not worth the paper it's printed on. Rigid adherence to completely pointless, deliberately miscalibrated output metrics on a technical interview, check. Epic disrespect to the candidate in repeatedly bringing up the "failure", check. Even Kobayashi Maru was specifically about what the candidate did and why, not the end-state of the ship. TL;DR run don't walk.
    – obscurans
    Jun 12, 2020 at 0:52
  • 16
    "An interview is a two way street" exactly - OP is interviewing the company just as much has they are interviewing OP.
    – Criggie
    Jun 12, 2020 at 4:46
  • 15
    The bigger issue is not that the grades were impossible, but that the test does not test what they purport for it to test. It was a difficult test for the OP, but would have been very easy for someone who had Ruby on Rails experience (unless of course they also have alternative tests, that set those candidates up to fail in a different unfamiliar language).
    – James_pic
    Jun 12, 2020 at 9:17
  • 4
    @James_pic OP was told "the exercise was explicitly about seeing how I would handle technology which I know nothing about and the timeframe was intentionally too short."
    – obscurans
    Jun 12, 2020 at 9:35
43

my test would be graded “F”. I was disappointed

There's no need to be. Tests are tests. They measure very different things and some interviews do so in strange ways. This is one. There's no point in caring about this apart from wondering how it relates to your ability to do the job.

I feel like this test was very unfair

Maybe. But again, you're getting hung up on a "grade". Once you're out of college, grades don't really matter any more. Your ability to perform does. This test is one data point that the interviewing company can use. If they are looking for a Ruby developer then it makes sense to reference a "bad grade". Maybe the interviewers are focusing too much on the grade aspect rather than what it told them about your (in)experience with what they tested for. But without knowing more about what they've said that's a hard call to make. There's a difference between "As a grade F I don't expect you to get this" and "Given your grade F, we'd like to make sure that you're still interested in learning about new technologies rather than only applying what you've done so far". The former is rude, the latter is something I would absolutely want to discuss. I probably wouldn't reference the grade itself because it'd make me feel like a schoolmaster, but I can see why some interviewers would. I'd simply talk about what I learned of your skills and experience. You should do the same and don't get hung up on the grade itself.

What would have been a professional response to this?

Focus on what they're talking about rather than the fact they're referencing a "failing grade". You would ask whether the fact you struggled is normal, how fast they expect people to pick up on new technologies, whether the tech used would come up in the job, what their support/training framework is like, ... If the interviewers get hung up on talking about this you would also counter some of that by pointing to feedback you've got in previous jobs/classes about picking up a technology quickly, being driven to learn, etc.

You could have asked a bit further about this specific test, though it's not like you needed to. Those questions would be things like:

  • Given how you describe it, it sounds like it would be normal to get a failing grade, is that correct?
  • You mentioned the "bad grade" a few times now, I understood it wasn't unexpected but did the fact that I struggled on that test give you any concerns about my fit for the job?
  • Do you not typically hire people without prior experience in [technology] and mostly go for people who aced that test?

In all of these questions I would personally avoid talking about grades and tests and stick with asking about the fact you lack experience in something they tested for, just like you would do if an interviewer mentioned a technology a few times you're unfamiliar with. Your goal is to figure out if your lack of experience could be a barrier to not just taking the role, but thriving in it. It should be what the interviewer is doing as well, but there are plenty of bad interviewers out there.

The other answers point to using this aspect of the hiring process as a reason to walk away. I disagree. While every aspect of a hiring process should inform you about what a company is like it's not like one quirky test, strange interview question or even outright "unfairness" in the process means they would be a bad employer. Things are never that black or white and you should always look at the overall impression you get. You'll run into plenty of interviewers from HR who suck at interviewing technical profiles. But those aren't your future colleagues so it doesn't make sense to reject a job offer over it. It's the same with this. If the overall impression you get is that this would be a good place to work and that your skills are or will be well-suited to the job, then one strange interview question shouldn't put you off.

It's only when this fits into a broader pattern that you should start to worry. And even if they overall suck at interviewing, that's still not always a reason to reject the entire company. It means they probably struggle more than others to find the best people for a job which speaks to the potential quality of your future coworkers, but you need to factor that against all the other variables you're looking at when job searching.

5
  • Much agreed. A good interview scheme may allow a lot of room for very experienced people to shine. It would be strange to ace any question about unfamiliar technology. Whoever scores 100% during an interview might just as well take it as an early warning sign of a potentially boring job or perhaps of an adventurous but technically shallow start-up environment. Jun 12, 2020 at 7:12
  • 13
    I disagree with your disagreement. You don't give an explicit grade to your candidate during the interview - it creates all sorts of problems and accomplishes nothing whatsoever. Either they don't know how to interview people at all, or they were deliberately playing mind games with OP.
    – Kevin
    Jun 12, 2020 at 16:21
  • Exactly. The point of a test situation like this is to observe what kind of problem solving skills the interviewee applies in this type of unfamiliar situation. Can they construct effective search terms to find useful information? What kinds of resources do they seek out? Do they have generally applicable knowledge and can they apply it to these circumstances? Do they just get confused and stare blankly at the screen? Do they get mad and smash the keyboard? Reducing that down to a letter grade based only on completion %, and then telling that grade to the candidate, defeats the whole point. Jun 13, 2020 at 9:39
  • (That said, I agree one weird thing like this is more of a red flag than a 100% indication of doom.) Jun 13, 2020 at 9:42
  • 1
    This is the better answer compared to the other one.
    – justhalf
    Jun 14, 2020 at 13:01
21

If the job description calls for proficiency in at least one of four languages, with a test given in only one of those languages, the bias is obvious.

If the purpose of the test is "to see how the applicant would act under stress faced with an unlikely task", the only winning move is not to play.

Maybe the right answer was to push back on the unrealistic time expectation. It's hard to know what magic answer the interviewer was looking for. I do wonder if they give the same test to everyone, or if they give a Javascript test to the candidates who show proficiency in C# or Ruby.

5
  • 18
    No, I've heard of interviewers using this test to see how well the candidate can prioritize tasks toward an impossible goal. Not playing would be a failure; being resourceful and getting something bare running would be success. Jun 11, 2020 at 17:07
  • 3
    The references to the bad grade may have been an extension of the test. How do you handle undue criticism, authority, etc. Jun 11, 2020 at 17:21
  • 29
    @MichaelMcFarlane given that in a real life situation, "This isn't feasible, we need to talk about scope and resources" is the best possible answer from your employees, I'd say that a company rejecting anyone deciding that talking about the assignment is the best course of action would also not be a good place to work at.
    – Erik
    Jun 12, 2020 at 6:32
  • 4
    In software development, 75% is planning anyways. Anyone who experienced the opposite is due to that 25% changing the 75% every 2 weeks.
    – Nelson
    Jun 12, 2020 at 8:34
  • 2
    Michael, with an impossible goal there is no need to prioritise. Something barely running is useless. John, I think my boss doesn’t care much how I handle undue criticism because he doesn’t intend to give me any.
    – gnasher729
    Jun 12, 2020 at 8:49
14

Usually interviewers set up bizarre tests because they've been burned, not because they have some sadistic plan to torture candidates. If you honestly want the job, try to determine what they've been burned by and allay their fears about you.

In this particular case, I'm guessing they have had problems with people who can't or won't do work outside their preferred language. If that's you, there's nothing particularly wrong with that, you just won't be a good fit for certain workplaces. Other workplaces embrace the single-stack lifestyle and you should seek those out.

If you enjoy work that requires you to learn new things, but just didn't perform well on this particular test, then give the interviewers examples of times when you have jumped in on a problem outside your wheelhouse. If you have examples where being slower and more methodical has been beneficial in those sorts of circumstances, all the better.

Also remember this isn't a one-way communication, where they ask questions and you answer. You can start a discussion with them about their potential concerns, and empathize with them: "I'm guessing you've been burned by people who refuse to go outside their tech comfort zone. I learned a little JavaScript so I could troubleshoot more system-wide problems, and people really bother me who refuse to do that. I know I'm not as efficient as a JavaScript specialist though, so I usually seek their help before I waste too much time."

11

"I see. Given the grading rubric it seems to me that Ruby is required, so I'm not the right fit. It might make sense to update the job description.

It's been a pleasure meeting you. Unless you have any other questions perhaps we should wrap up?"

Rationale: A few key elements of a "profesional" response might include: know your worth, offer value, be concise, and show don't tell.

The test is either [1] poorly considered or [2] behavioral. This response covers both cases.

  • First, You politely point out the disconnect (grading rubric not aligned with claim of Ruby not required). No need to make it personal or assume either case. You demonstrate a willingness to surface and calmly discuss issues.

  • Second, you try to offer value. If the rubric is correct than the job requirements should align to avoid false positives. You demonstrate an ability to move past the problem to the solution. You offer a suggestion for improvement. You are calm, polite, and a team player. This does not 'throw' you and you do not make any assumptions.

  • Finally, you concisely and politely put the current situation on the table. You value their time and yours. This is the chance for the behavioral interviewer to 'come clean' or risk losing you. You achieve situational mastery via a conflict neutral approach.

With this approach you [1] 'win' the interview and [2] gain a lot of additional information. A number of the other answers assume one case or the other, which is a common mistake.

1
  • 1
    Welcome to the site. You might want to expand on this to give an explanation of why you think this is the correct answer?
    – nick012000
    Jun 13, 2020 at 12:29
9

I think there were better ways you could have handled this. You don't explicitly state this, but the whole narrative of your question reads as if you felt you had to do these challenges in order to earn a job from people who were in a position to either accept or reject you based on task performance.

In reality, you were presented these challenges as platform on which you and the people interviewing you could learn about each other (whether that was their conscious intent or not). And what would a company want from you?

If they are wise, they would want someone who contributes to the overall success of the company, usually by doing things. But also by giving feedback and data to help them make better decisions. The last thing anyone wants is an employee who will take a task they can't handle, and quietly go off to fail without saying something.

So, what is the professional response? Tell them you have no idea and are highly likely to fail unless given sufficient time to research it. And possibly also that they are using an inadvisable interview strategy because they may see false positive results from poor programmers who happen to have Ruby experience, while filtering out valuable talent from good programmers who don't.

You could learn a lot about them from how they handle that sort of feedback, which also should be one of your primary goals in an interview.

If they wanted you to proceed anyway to see how you handle such a problem, it wouldn't be wrong to go ahead with it to let them see how you tackle new things. And they might have disqualified you anyway, in spite of your advice. In which case, they may have saved you from taking a fairly unhappy job.

8

The professional response would be to tell them that you have graded them F for their interview process and that you will be withdrawing. Then leave and count yourself lucky for having avoided such a toxic company.

2
  • 8
    That actually wouldn't be professional at all. -1
    – Alex M
    Jun 13, 2020 at 22:04
  • 2
    Leaving an interview because you are aware that the company is not somewhere you want to work is highly professional. No point wasting everyone's time with a process that you know is going nowhere. Any professional interviewer should welcome feedback too.
    – user
    Jun 15, 2020 at 7:57
8

Yeah, that seems odd.

I've been in software development for over 30 years. I don't know Ruby either. If asked to create a "hello world" web server in Ruby during an interview, I would first state that I did not know that language, and that it was unrealistic to expect somebody to do much of anything in a language they don't know during a short coding challenge.

I'm also not a web dev, so setting up a web server in ANY language is something that would not come super naturally to me. (I've done a tiny bit of work with setting up test web servers, but it's been several years)

If they insisted that I do it anyway, I would have done pretty much what you did. I'd do some quick research, and then take it in steps, achieving one small milestone at a time.

If the requirement was getting more than 50% of the implementation of a task (web server) I am not familiar with, in a language I don't know, I would press them, politely, on the appropriateness of their test.

Interviews are stressful. I am a hiring manager myself, and tend not to use coding challenges at all during interviews since I think it puts unreasonable pressure on the applicant. I ask them about their past projects, and ask questions to drill down on their domain specific knowledge, work habits, problem solving skills, etc. I might also pose a design problem and ask how the candidate would tackle it. I'm interested in their thought process and problem solving skills more than getting a specific correct answer.

1
  • "take it in steps, achieving one small milestone at a time." - IMO this is what they should grade on, not completeness overall. As good general practice, but especially when in an unfamiliar language/system, it's important to be careful and understand what you're doing. If you're bringing up a web server it's much more important, because of the inherent visibility a web server has! If the interviewers insist on just doing things, rather than understanding them, it'd be a hard pass on that job from me, too. Jun 14, 2020 at 23:55
6

The requirement stated:

Good knowledge of at least one of the following languages: JavaScript, Python, C#, Ruby

So it implies that you should have basic knowledge of the other 3 languages? Presumably, they would prefer good knowledge of more than one.

Then you move on to assess:

the applicant would be able to implement the solution within the given time because he should know these basics.

If the basics of Ruby include setting up a server and running "Hello World" then I would surmise that the testing did exactly what it was designed to do.

8
  • 7
    You just beat me to it. For someone who had some experience in running webservers and writing code without using ruby this might have been an easy test. "Apply your knowledge of web development in an unfamiliar language" tasks are designed to see if you really understand the principles underlying web development. But it looks like OP isn't willing to elaborate and everyone has already jumped on the "evil tests are evil" bandwagon... For all we know OP simply can't differentiate between the principles and the language and this test was perfectly suitable for detecting that.
    – Douwe
    Jun 12, 2020 at 12:33
  • @Douwe Thanks, we don't know what OP doesn't know. That's why I tried to make my answer as objective as possible. I'm sure OP is stressed enough about the situation so that's why I left the onus on the test they took.
    – MonkeyZeus
    Jun 12, 2020 at 12:47
  • I think OP has tapped into a lot of frustrations that developers have about testing methods, I'm not sure those apply here though. OP isn't helped when they are just getting their opinion confirmed, this might be a (missed) opportunity to learn something important.
    – Douwe
    Jun 12, 2020 at 13:00
  • My thoughts exactly. When a company puts a technology on a job description, it is generally because it is part of the tech stack that they are using or plan to use, and that it is at-least kind of important to them. There is no point in arguing semantics over the quality of a job description, because in the end they will hire who best meets their needs, not who fits within the confines of what they posted.
    – Nosajimiki
    Jun 13, 2020 at 13:54
  • 2
    I disagree... It is possible (likely in many cases) that deep knowledge in one of the languages would be preferable to broad knowledge in all of them. Also, if the exercise is intended to asses the applicant's weakest skill, they would have had to first ask what MrTony's weakest skill was. Jun 13, 2020 at 17:26
3

"Nothing to see here ... move along ... move along."

You really can't control how any hiring company/manager decides to construct their "entrance exam," but, as a (koff koff, wheeze ...) "old hand at this," I can also say that "most folks who construct 'entrance exams' like this" feel that they are situated in front of a gigantic fish-net that is only occupied by "those whose job-search cannot 'think outside the net.'"

Maybe it has never occurred to you that sites like monster.com charge tens of thousands of dollars(!) to retrieve resumes from their site.

If you're looking for a job – (1) "be creative," and (2) "bloom where(ever) you are planted."

No ... you don't have to "put up with this ... nonsense."

2
  • 11
    I am sorry, but I feel like I am not able to make sense from your metaphor about thinking outside the net and so on. I dont see how creativity would help creating a web-server faster without previous knowledge of the underlying technology?
    – MrTony
    Jun 11, 2020 at 20:35
  • 2
    @MrTony his post says "Don't both creating a web-server faster. Go work somewhere that doesn't have an unfair interview process instead"
    – Erik
    Jun 12, 2020 at 6:29
3

I try to remember 2 things when applying for a job:

  1. Many people who are doing the hiring are not capable of identifying talent.
  2. When filling a job, you only need to find a suitable candidate, so you can risk failing to identify all the suitable candidates.

Isolated stress tests are not very reliable or valid. Someone who already has a job would probably handle this better than if they were unemployed for a significant period of time. Very few, if any, programming situations require creating anything in less than an hour. If the nuclear power plan is going to explode in 15 minutes unless a line of C is fixed, you better get someone who really knows what they're doing. That would not be the time to find out who can learn a new language.

This quick programming test will tell who can learn quickly and knows similar languages to the extent they can apply it to a new one. However, many programmers have particular languages that the prefer and are reluctant to learn new ones. Or they're so oppose to other languages, they would hate every second they have to work with it. That's not a good situation for anyone over a long period of time. Quick learners are good to have, but what other evidence is there that they will deep dive into a language over a period of time? Knowing a couple of languages would help even if they're not the right ones.

Handling this professionally (finally, an answer) would be to not let if affect your job search. If doing tasks with a short time frame are stressful to you, practice. Expose yourself to it and try and get better. Learn how to evaluate the evaluation process that companies use. Were there other warning signs that this job may not be for you? If someone wants to test me under pressure with a quick task, but they came late to the interview, I'm not sure I want to be tasked with bailing them out of the mess they've created through their own incompetence.

2

Your question could be answered like two similar questions: what could you do during a test that did not match the posted job requirements, and what could you do after?

I think you might have offered to accomplish the end-result of the test using the job requirements, instead of the harder requirement they asked you to use. So, if the position says "one of the following languages: JavaScript, Python, C#, Ruby", ask if you could bring up the web-server and use JavaScript/Python instead to generate the HTML. You can always request something, though they might not be prepared to go that way. Requesting at the half-way point when you gave it a good try is fine too, though even harder to pull off.

After you've been through a test that didn't match your skill-set, you can still offer your own demonstration, though it would have to be short as people will want to keep a schedule.

The "professional" thing to do is not complain about their test; they may not be the ones who wrote the job requirements, and they only know about what their part of workplace requires. Perhaps the Python and Javascript positions have been filled, and they're just looking for the Ruby person now. Just as people who don't even meet the job requirements will still apply, often managers will interview other peoples candidates who were looking for something different. It's a time investment which is less likely to pay off for either side, but the few hours required might be better than interviewing no one.

2

A professional response is to chalk it up to experience and prepare for your next interview with a clear head.

Job interviews are competitive, and there are usually more qualified candidates than there are positions to fill. Even with the best preparation there will always be an element of luck involved.

Sometimes the job advert will be poorly written and you will waste your time (but not nearly as much time as the company does), sometimes the interview process will be poorly designed, sometimes you just aren't quite what the interviewer is looking for, and sometimes you will get the job.

Don't take it personally, fix any holes in your knowledge that are identified during the process, and move on to the next opportunity.

1

It’s a bizarre test. I’ve never used ruby, I don’t think I’ve ever looked at any ruby code. If you told me “write a web server in ruby” and that’s what I have to do, then subtask 1 for me is: Learn ruby. Not a single line of code for that web server would be written before I know the language. And at the point where I grab the keyboard, half of the task (the subtask where I learn ruby) is done.

But then I’ve never had a job where they were looking for cowboy developers.

PS. I've worked on one project that started around 1996 and is still going strong. What I'm doing right now has been started five years ago. Software development is not a sprint, it's a marathon.

6
  • 9
    The test was about deploying a web server, not writing one. Not writing a single line of code in a language before you have learned it is paradoxically impossible. People who can apply their domain knowledge and their knowledge of programming even when they are inexperienced in a particular language are called "seniors" not "cowboys".
    – Douwe
    Jun 12, 2020 at 13:18
  • I would expect someone with sufficient experience using other languages and web application frameworks (which may or may not be the level of experience this employer is realistically looking for), reasonable system administration knowledge, unlimited access to Google, and sufficient time to be reasonably competent at starting up a hello world Rails app without stopping to "learn Ruby' (to the extent one can learn a language without writing it) first. If they proclaim themselves a Rails expert after that, that's the point where demonstrating transferable skills turns into cowboy behavior. Jun 13, 2020 at 9:53
  • Or to put that another way, the way I'd go about "subtask 1: learn Ruby [on Rails]" would be to setup a hello world app so I could get familiar with the tooling and have a testbed to start trying out the things I was learning. Jun 13, 2020 at 10:01
  • @Douwe I interpreted that as a reference like "cowboy diplomacy", a do-what-you-can/want approach, i.e. people developing even if under-qualified due to lack of familiarity. So I read that as meaning something quite different than the scenario of "senior" people with expertise that you presented.
    – TOOGAM
    Jun 13, 2020 at 16:13
  • @Douwe Furthermore, I, for one, may have learned VBScript without writing a line of code in it. When work said maybe I could code, but wanted it in VBScript, I set out to learn VBScript. I knew Basic, Visual Basic, and JavaScript, and read Microsoft's documentation providing tech specs of the VBScript language (in one weekend), and might not have bothered coding until at the end of that, then tested how well I knew what I just learned Sunday night, and successfully coded for work the next week. So despite seeing 7 upvotes of your comment (at this time), I fully disagree with every part of it.
    – TOOGAM
    Jun 13, 2020 at 16:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .