2

My company is hiring and I have been tasked with making a test. This is a developer role, same as my own.

The problem here is that this role requires a wide breadth of skills and as such the test will be quite long - I estimate around eight hours and it is likely an underestimate.

We will provide the candidates with a preconfigured VM to work on. This is in no way code meant for a product, it shouldn't even be possible to minsunderstand it as such. It's a very simplified version of what would actually be expected taking into account most of the role's responsibilities and planned projects. I see no way to shorten this test.

Since we are open to people learning on the job (as this is a somewhat niche role in our area), we don't mind if the candidates don't finish everything in time. I want to give the candidates a weekend to complete the task, my boss mentioned a week.

Is this ok? How should we introduce this task to candidates? Is there anything we can do to improve the situation if the test truly can not be shortened?l

  • 11
    8 hours is far too long. If I were a candidate and was asked to spend 8 hours on the task, I would refuse. – GB1553 May 21 at 22:39
  • 7
    @bharal you haven't? Wo boy, this is most of the crop in many places. – Tymoteusz Paul May 21 at 22:46
  • 6
    I can hardly wait for this ridiculous trend in hiring to come to it's ignominious end. – joeqwerty May 21 at 22:58
  • 1
    Down to brass tacks here: depending on skill level, consultant developers can make well over €500/day. You're effectively asking them to invest a day's wage in your interview. While the interview itself shouldn't really be counted as the cost of billable hours, it does help paint the picture of how excessively long your interview exercise is. – Flater May 22 at 10:57
  • 2
    @JanDorniak: "I'm testing for two/three different things at once" Are you unable to gauge approximate skill level in 2/3 topics during the span of a normal (say 1 hour) interview? That seems like an issue in conducting a focused interview, rather than a justification for a day long exercise. – Flater May 22 at 11:00
19

I estimate around eight hours and it is likely an underestimate.

That's ridiculous. If you need them to sit for an 8 hour code test then you ought to pay them the hourly equivalent for the position they're testing for. If you're not willing to do that than reduce the length of the test by 75%.

| improve this answer | |
  • I don't expect them to do it in one sitting. Not at all. And there is too many skills to test for to shorten it. – Jan Dorniak May 21 at 22:57
  • 9
    You're asking them for 8 or more hours of their time, for which they may not even get the job. That's an extremely large commitment on their part. You ought to be willing to pay them for their time. Is this opportunity so great and wondrous that they should gladly give you this much time freely? I'd never entertain such an idea. – joeqwerty May 21 at 23:00
  • For an 8 hour interview coding test, the job better come with a 6 figure salary and an irrevocable ticket to heaven. – joeqwerty May 21 at 23:06
  • 2
    @JanDorniak, Not only you're asking for 8 hours, but you're optimizing your test to ensure that only the cheaters rise to the top. By cheaters, I mean that some candidates will get their friends to help them complete the take-home project. And others will get their friends to apply for the same position as well, so they only need to figure out the project once (for instance just video record the screen) and then share all the interview questions and solutions between themselves. – Stephan Branczyk May 22 at 1:01
  • 8
    Which makes this test even more pointless. – Jan Dorniak May 22 at 1:04
8

Eight hours is far too long for a weekend

When I was applying for jobs, I had to do a few of these. I was a young, single, no need to work while in school person. And I would have found eight-hour tests to be problematic. Especially since it will probably take 12. I had no obligations back then and still might not have been able to squeeze that in around schoolwork over a specific weekend. I am also someone who has no trouble staying up all night for a hackathon, so I am also naturally inclined to find these kinds of projects interesting for the sake of it.

If this is for working professionals, it would be even more difficult. As you can see in the answers here, plenty would refuse to do it.

Some options for making the process less hostile:

  1. Break up the parts. Even if you need to test all these skills, do they need to be tested all at once? Could it be 4 2hr tests instead? You also do not waste the time of someone who fails part 1 and then tried to do parts 2-4.

  2. Make it a week. This lets them spread out the tests over time instead of having to do them all at once.

  3. Have clear expectations. "This is in no way code meant for a product" this is a very important thing to convey as I always write my project code for interviews to a hilariously high standard (I have Selenium tested CSS values for that). That dramatically skyrockets the amount of time these projects take. Be explicit in what you need to see (working code, use of design patterns) and what you do not need to see (I once did 30 tests for a single API and display page to show off). Don't let the candidates guess what you want as that is how projects explode in scope and time. I once spent a bunch of time deploying a website to a VM to show that I could set up servers. App Engine would have bee fine.

  4. Consider paying them. This really isn't as crazy as it sounds. The pay rate won't be anywhere near market, but it is a nice touch and really makes you stand out as a company that respects its employees. Even a junior developer is going to earn $200 a day in their job. You offer $100 for doing it, the cost is next to nothing in hiring terms and most people will be psychologically satisfied with that. I bet your position pays 3-4x that. Assuming you whittle your resumes well, you will spend as much paying people as posting the job.

  5. Provide clear instructions for skills you aren't testing. If you want them to deploy something to a particular web service but are testing their coding, not their devops skills, create an easy to follow document on how to deploy it to your web service of choice.

| improve this answer | |
  • 1
    This is very reasonable. Thank you for this answer. And I probably worded my answer badly - I want to give the task on Friday afternoon and let them have a go at it until Monday morning. But yeah, week is fine too. That point about money is also decent, especially since here a fair rate would be similar to what we'll pay for hosting that VM we'll be providing. Not everybody has a PC which could handle this reasonably and the data plan to download everything. – Jan Dorniak May 22 at 0:57
  • 1
    I'm still thinking on this and have a question for you: if they need a device to complete the test which a) is worth roughly the same what we could pay for that time and b) is useful for learning and hobby projects. Do you think it would be decent to just let them keep it? It's not strictly necessary but without it they won't be able to test their code. Assuming we go through with those tests as originally intended anyway. – Jan Dorniak May 22 at 3:38
  • @JanDorniak I would really enjoy that. That would make the interview like a hackathon. – Matthew Gaiser May 22 at 7:22
2

Is this ok? How should we introduce this task to candidates? Is there anything we can do to improve the situation if the test truly can not be shortened?l

There is no universal measure that makes a test too short or too long, only whether it's worth it. If on the other end of the stick there is a job that pays more than the rest of the market then the employer can get away with a however long testing process they want, and sure enough there will be people willing to go through it.

So if you want a potential employee to ask them to take a longer than average test (as we can certainly tell that it is), you have to be sure that the job is worth the effort if it isn't you will be left with desperate people who have no option, and that almost never is a desirable hire.

| improve this answer | |
  • 2
    I just want to say most good developers won't bother with an 8 hour test. They likely have 3-5 other companies that want to hire them any time they're interviewing, and won't make them jump through a million hoops. 2-3 hours is probably reasonable if it's a good job, but otherwise you'll only have the below average or the people currently desperate agreeing to take the test. – maplebird May 21 at 22:44
  • @maplebird that really depends on the job. If you are worth about 100k on the market, but someone will come along with a 180k possible job that you likely qualify for, you want to tell me that you won't spend the extra 6 hours? I sure as hell will, and not because of desperation, but because the chance at this job is worth the price. – Tymoteusz Paul May 21 at 22:45
  • Situations like this are definitely the exception, but vast majority of companies don't pay 80% above market value. I've done it for Cisco and I'd do it for Google or that level of companies, but I won't do it for Joe's Outsourced Mobile Apps because the latter won't be paying me Google money. – maplebird May 21 at 22:52
  • I'm trying to test a few different skills actually. This role requires a lot of different skills but it's more about attention to details and knowing where to look. – Jan Dorniak May 21 at 22:53
  • Basically something like: write an extremely simple piece of software, package it and create an image with it. (It's an embedded Linux dev role). – Jan Dorniak May 21 at 22:54
1

The trick is to create challenges that are going to test for what you need to hire for, in the shortest possible time.

That is, minimise the amount of coding the candidate actually needs to do.

So for example, let's say you need to make sure they can implement a REST API.

Instead of making them do multiple end points - just set the task as CRUD on one of them. Multiple endpoints wouldn't prove anything more. And even that, sounds like a too simple task to me. Perhaps you could say 'ignore the database, just focus on error codes and error handling'.

Or provide the boilerplate premade, and set the challenge around that.

You say they need to have a wide breadth of skills: -

In that case, just set a test of 10 small challenges that covers the breadth - they don't need to build an encompassing solution the demonstrates it.

eg. Say they need to know their way around a linux operating system, you could set challenges like:

  • Write a script that extracts logs of (this format) from a file
  • Create a cron job that runs every 10 minutes and prints 'hello world'.
  • etc.

Now, let's say an experienced developer who already knows everything required takes a couple of hours to solve the challenge. If it takes a less experienced developer all weekend to solve the challenge, because they're googling, learning new concepts, etc, then that's OK in my book.

You say

We will provide the candidates with a preconfigured VM to work on.

Unless the job you are hiring for is something specific to operating systems and/or virtual machines, then this seems odd and complicated.

| improve this answer | |
  • That VM is because the tasks would need a fairly beefy PC and require them to download tens of gigabytes of data. We don't want to impose on their data plans or require them to set up the build environment themselves. – Jan Dorniak May 26 at 9:45
  • Except the GPU the required machine would be on par with a modern gaming PC. We can't expect everyone to have such a PC and the work will require the ability to work with terminal so we might as well buy a VPS for them to work on. – Jan Dorniak May 26 at 9:48
  • And yes, that was exactly my idea: to let them learn, since I don't expect experienced candidates. This is a niche but growing field and we're very close to two big universities. – Jan Dorniak May 26 at 9:51
-1

An alternative view is that interview technical questions, and any associated testing, should be regarded as testing whether the resume is accurate.

Begin your process by asking yourself "If this resume is accurate, would I want to hire this person."? If they do not claim a sufficient subset of skills you want, do not interview them.

Rather than trying to test all the required skills, test and question enough to verify that the candidate really has the skills and experience they claim in a couple of areas.

| improve this answer | |
-1

I do send out a 4 to 8 hour long coding test only as an offline, do it on your own time, week long, test

I’ve had people refuse doing it and that’s a good thing. Nothing wrong with them but probably not a good fit, since I think the test is necessary and they don’t, so it won’t be good for either of us that I end up being their manager.

But don’t get me wrong, 8 hours is a long time so I try to be very straight forward with them:

  1. I make a 30 minute phone call with them before the coding test.
  2. I clarify no interview happening, this is for them, to help them decide if they want to continue or not.
  3. Purpose of the call is for them to understand the position, technologies and project and to give them a space to ask as many questions as they want about me, technologies, the department, the work or whatever they may think about.
  4. I acknowledge the test is long and a big effort and as such I want to give them all the information before they make a commitment of their time.
  5. I make perfectly clear the code is the basis to have a technology conversation, not an exam, it doesn’t need to be perfect but it needs to highlight how they approach technical problems.
  6. If they ask for more time I usually provide more time to deliver it. People have lives, stuff happen.
  7. I do work on an organisation AND offer a salary range that warrants asking for a little bit more.

I don’t think you need to pay them but I think the two vital factors are to acknowledge you’re asking for a lot and make it as worth it as you can for them.

So far my experiences have been good and to be honest, taking those extra 30 minutes with them puts you ahead of most of the people out there who just “asks for a test”.

| improve this answer | |
  • Wondering why the down votes. You may or may not agree with the answer but I doubt it is not useful since it is grounded on experience. It feels more like “I don’t agree with your way of interviewing” so I downvote... that honestly makes the community very unwelcoming. – Jorge Córdoba May 27 at 0:36
-2

Funny,

I was always skeptical of this type of assignments.

What exactly should candidate code for 8+ hours?

If you need to test their skills, IMHO, practical questions is the way to go

it is a fundamental way to show that test assignment is not a "free work"

Some of the questions could be a 3-4 lines of code for specific task / skill validation

Broken code snippet could also be there to validate logical / language specific knowledge

| improve this answer | |
-6

8 hours is long, but it is also a good shortlisting method. Only the confident and best programmers will take an 8-hour exam. Programming is all about solving difficult problems, the 8-hour exam is going to be a good start.

Push for it. You will get your brilliant candidates from a tough exam. You only need one for the job.

| improve this answer | |
  • 6
    People willing to give 8 hours of their time for free does not correlate in any way to better programmers. I'd argue that anyone with a pinch of critical thinking (core skill in any good programmer) would realize how stupid is to take an 8 hour long test. – Giorgio Zanni May 23 at 22:25
  • 1
    Okay, I did -1 as you wished. But the other answers don't make a claim like "only the confident and best programmers.." here a source is really required on this site. This is not an opinion forum. If you believe the others should prove some claim, tell them so in the comments. – guest May 24 at 18:21
  • 2
    The best programmers will not do this test. The best programmers will go and work for a place like Google that doesn't make it's candidates do this. They will probably use the eight hours they saved to prep for their Google interview. – DJClayworth May 25 at 0:50
  • 3
    @PhD: as a female I can tell you, you won't hire women like that. Well, at least most women. Traditionally, even in the western world (I'm German), we're taking care of the household, children, dogs, whatever. Well, I COULD afford to spend eight hours on a test like that for an interview. But what if I didn't get the job? Next weekend, next job, same procedure? I wouldn't have time for that. Am I a bad programmer because of that? No. Does that mean I'm not committed to my job? No. Does that mean I won't do overhours if needed? No! I love my job, but interviewing means, I still don't have it. – Jessica May 25 at 8:29
  • 3
    @PhD: Corona is a thing right now in huge parts of the world, yes. So of course you can force the currently desperate into some horrible interviewing process. But the situation depends heavily on location. In Germany, no reasonable company will let go any great developer, not even now. They're too rare here. Even basic workers are not being let go here, but "working short", paid by the state. Developers are heavily requested, even during Corona. So no, "ANY" is not an exaggeration, but depends on wherever you are in this world - as always. – Jessica May 25 at 8:56

You must log in to answer this question.

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