51

I recently applied for a software engineering job and the company responded back with a take-home test task which, in their words, should take between 2 to 3 hours.

Currently, I'm about 2 and a half hours in, trying to get my virtual environment to run the baseline code they provided. I then have to proceed to write my own code for the functionality they require. I was thinking about declining the test task, stating that I spent around 2 to 3 hours setting up the virtual environment in which the baseline code is to be run and that I am not willing to invest more time in the take-home test task given that I have other obligations. I will also state that they can check out some of the previous code I have written on my GitHub.

"The risk" I run here is that I look incapable in their eyes, but I have really given my best effort into this and I think it's either the case that the company was unrealistic regarding their time estimate or I am not the job candidate that can solve the test task in 2-3 hours.

How can I politely decline a take-home test task?

3

14 Answers 14

64

The real "risk" is you disqualify yourself due to refusing to complete the take home assignment.

As someone that used to hire people, you assess using the same process in order to not discriminate, so it's somewhat unlikely they are willing for you to forgo the take home assignment when other candidates will be judged on their solution.

It's really up to you to decide if that risk is suitable for you. If you really want that job, I recommend you find the time to complete the assignment.

In how to politely decline. Probably best to just explain the issues you've had, and why it's taken you so long, and hope that your rationale resonates with them.

8
  • 34
    I'd say don't even bother "explaining the situation". They probably don't care and have a plethora of other candidates willing to invest the time needed to take the test.
    – user32882
    Commented Mar 10, 2023 at 3:51
  • 10
    @user32882 - a plethora of candidates willing to jump the hoops without questioning, which is a trait some recruiters value. Commented Mar 10, 2023 at 13:45
  • 4
    Additionally, admitting it took 3 hours to setup the base environment is probably a disqualifier already, indicating OP does not have a firm grasp of the necessary skills to work in the employer's environment. That could be a major point of this test all on it's own.
    – SnakeDoc
    Commented Mar 10, 2023 at 23:30
  • 15
    @SnakeDoc Or maybe they assumed OP used a specific setup. For example, they assume you are running, say, windows, while OP has a linux both and had to go through creating a new VM to be able to do anything or maybe OP had to install mono and other libraries and they were not 100% compatible and had to follow 10 different guides to make the code run... this is not something unheard of. Obviously it could also be that OP is not experienced enough, I'm just saying that that's not necessarily the case here
    – Bakuriu
    Commented Mar 11, 2023 at 10:26
  • 2
    Hiring managers do care about feedback on their process, so it's up to you if you want to share your opinions, but don't expect that to make any difference WRT your application in particular. Commented Mar 16, 2023 at 13:06
54

If it's really taking you that long to set up for the test, this may suggest that the test is bad... but if others are completing it in a more reasonable amount of time, it may also be that the test is doing exactly what it is intended to do and establishing that you aren't the person they are looking for.

Setting up an environment quickly is also a work skill. So is doing a necessary task you don't enjoy, or occasionally working overtime because someone needs the results ASAP.

Do you really want to tell them you can't handle these, when your competitors didn't give any indication of difficulty?

If not, finish the assignment to the best of your ability. This is reality, not academia.

And really, unless the problems cause you to fail to complete it, I would hold the feedback until after you have been hired there or elsewhere. Constructive criticism is a fine thing, but this may not be the best time for it for the reasons given above... Unless they actively ask you to critique the assignment.

And if you do want to register your reaction, be sure to keep emotion out of it; the tone should be "Hey, you may be passing up some good candidates because they get bogged down in the minutiae of this test. Here's a suggestion on how to focus the test more precisely on the set of skills that I think you were trying to test for." Professional design teamwork, not complaint or excuses.

(See also past questions about practical tests, such as the ones SE considers "Related".)

11
  • 23
    Regarding "but if others are completing it in a more reasonable amount of time", I think it's worth noting that likely some or all other candidates are completing it in an unreasonable amount of time, but are completing it without mentioning how much time they spent on it.
    – Stef
    Commented Mar 9, 2023 at 22:57
  • 6
    It's also possible that other applicants happen to have their machines set up so that virtual environment is not necessary, or at least easier to configure.
    – IMil
    Commented Mar 10, 2023 at 3:37
  • 3
    @IMil which in itself is an indicator they are interested in their job to the point that they have an environment set up at home to experiment and do things as a hobby...
    – jwenting
    Commented Mar 10, 2023 at 7:55
  • 1
    @DKNguyen: Depends. Mentioned, rather than complained about, perhaps. But if this is the only candidate saying setup was a problem, that isn't a great look. I'd hold it unless they specifically ask for feedback about the assignment, and quite probably hold it until after it's clear whether I'm being hired or not... unless you have a briefly started, very specific suggestion on how to improve the test process. You want them to focus on the fact that you're trying to help them, not on the idea that you struggled.
    – keshlam
    Commented Mar 10, 2023 at 15:20
  • 3
    Has anyone considered that maybe the test isn't unreasonable but perhaps taking 3 hours to setup the test environment is already an indicator OP is not quite ready for this environment and may be lacking some skills. The point of the test may very well be to weed out people who have "puffed" their resume and skills....
    – SnakeDoc
    Commented Mar 10, 2023 at 23:32
37

If you do NOT want the job, the most polite is also the most politically correct. I would go with something like:

Thank you for your opportunity. For personal reasons, I will not pursue this job opportunity at the current time. I wish you a wonderful day. Best regards.


But if you do want the job, rejecting the test is not going to be welcomed, even if it will be accepted.

The best thing I can think of is to not say "NO", and to not be silent either. So the solution has two steps:

  1. You solve the test to the end. Additionally, you write down everything that bothered you: the complexity, the actual time required, the inaccurate initial estimated provided by the company...
  2. When you present the results of the test, you also provide them with feedback about the "environment" of the test.

If they are a professional company, they will be happy to get that kind of feedback.


task ... should take between 2 to 3 hours

Maybe the task itself takes 2-3 hours indeed to be solved. Possibly, they did not take into account the setting up of the environment, because they already have it set up. Include this piece of info in the feedback, if relevant.

4
  • 3
    I think your solution is OK, but I don't really want to solve the take-home task all the way. The main reasons are that I don't want to spend more time than the estimated time and even if I do solve the take-home task fully, they may not proceed with the application. I think this really boils down to how much I want the job and while I think it'd be nice to switch jobs, I don't think I really need this particular one and I'd rather find a company which takes their interviews live or at least has a realistic time estimate of their take-home tasks. Commented Mar 9, 2023 at 11:10
  • 17
    @Eternal_Ether: "how much I want the job" - that is exactly what I asked earlier in the comment, what do you actually want. You implicitly answered that you want to pursue the job. Anyway, I provided answers about both ways, but I cannot make a decision for you.
    – virolino
    Commented Mar 9, 2023 at 11:20
  • 3
    @Eternal_Ether if you don't really need the job, then you could just not get back to them about your candidacy or the test. Forget about it and move on. Why do you feel the need to let them know? They probably have plenty of other candidates willing to take the test, so you're not going to break their heart or anything like that.
    – user32882
    Commented Mar 10, 2023 at 3:49
  • 1
    @user32882 It is possible that they want him, independent of the test. And that he likes the job, independent of the test. Maybe he is the best or the only fit. They want him, but they make him invest an inappropriate amount of resources to solve their task - to evaluate him.They may even understand that if he rejects the test. If they agree in the end, he has demonstrated some valuable competency. Commented Mar 10, 2023 at 21:09
19

If anyone has any advice on how to politely decline a take-home test task, I'm all ears.

A simple "Thank you for the opportunity, but I think I'm going to pass on completing this test. I've already spent three hours just trying to set up the virtualization environment, and choose not to spend even more time." will work.

Of course, that almost certainly means you'll be dropped from consideration for the open position.

It's always your decision to make.

4
  • 11
    I would mention that the 3 hours was "just trying to setup the virtualization environment; I hadn't even started on the test." Otherwise they'll assume you had no trouble setting up environment and were stumped by the problem. Commented Mar 9, 2023 at 19:29
  • @Harper-ReinstateMonica Yeah, oh so important. Not sure how this answer missed that to be honest.
    – DKNguyen
    Commented Mar 9, 2023 at 22:37
  • Sorry, but this is an awful advice. He spent hours setting up the environment - not working on the task. The way you wrote, they are going to think he is not capable of doing the task. If I would see what you wrote would be automatically "no" Commented Mar 10, 2023 at 9:17
  • @JoeStrazzere It costs the OP nothing to mention it. They can only lose nothing or gain, as do future test participants.
    – DKNguyen
    Commented Mar 10, 2023 at 14:47
8

Very likely they think it is for 2-3 hours, because it is 2-3 hours - for them.

You are not enough familiar with their virtualisation environment, not with their standards, and so on.

Either they did not consider it, or... the candidate what they expect, knows the technologies enough well to really solve the task in 2-3 hours.

After you have solved the task, very likely also you will be able to solve a similar one in 2-3 hours. And that is what they want. And that is what you want - if you still want the job.

So invest the time in it. Even if they do not hire you, you will learn a lot. Do not advertise that you have needed to learn a lot for it.

6

A friend of mine used to run a small electrical engineering and software company. A lot of embedded programming.

They had a rudimentary take home test before a formal interview. The coding problem itself wasn't anything too complex. But they required it to be done with some very esoteric tools and build environment. They provided a reasonable set of instructions on how to download and install the tools. IIRC, it was a URL to a zip file that contained the legacy Borland Turbo C++. Nothing too crazy. You just unzip and run the IDE executable. There was a time constraint involved as well.

The test was as much about seeing if the if the candidate could deal with manually setting up the build environment without assistance as much as it was about the coding problem itself.

If the candidate couldn't get the tools installed on his own or felt insulted it wasn't his ideal IDE, then they figured the candidate would not do well as an embedded engineer on more complicated boards with even worse tool chains.

I sense the same thing going on with your prospective employer.

5

In one of my previous lives, I did the hiring and always gave take-home tests. The idea was not only to avoid the unnecessary time and cost of flying candidates around, but to operate in as professional and humane a manner as possible. On several occasions I would pay the candidate a modest amount to participate.

I would structure my tests to have multiple parts, and instructed the candidate to complete what she could.

In addition to test answers, what was much more interesting was the related banter and pre- and post-test discussions with the candidate. In addition to whatever answers were given, dealing with the individual was very instructive and an extremely accurate portent of things to come, when hired.

I always gave some 10 questions, ranging from checking expressions, to writing actual code, to refactoring. This also provided a means to measure the candidate's level. If the candidate had declined to answer everything, then the story's over. (In reality, this never happened). If the candidate answered only the really easy questions, then the story's over but at least with a polite letter. (In reality, this never happened either). The usual result was that the test was submitted with one or two of the hard questions unanswered, my expectation.

More recently, searching for a voice-over, I prepared a script for an audition demo. Very much a take-home test, no deal if declined.

2
  • Excellent real-world information
    – Fattie
    Commented Mar 11, 2023 at 15:31
  • From the perspective of both hiring and being hired, I still like take home assignments best. They're one of the best ways of getting to know the candidate, how they approach problems, what assumptions they make (and clarify), etc. Do they solve problems or just write code that meets some spec? Did they read the test? Do they ask questions? Are they relevant? Do they write any tests for their code?? When interviewed, I know I have a better chance of being hired for my skills and not wearing the same jacket as my interviewer. I've interviewed in places without tests, and it was never great
    – bytepusher
    Commented Apr 28, 2023 at 5:48
4

At the point that you are now, i.e., after accepting the coding test, you can't decline the test without declining the job itself. What will you say? "Ah sorry, the test is not up to my skills. Can I skip it and just move forward in the process?". You can, but it won't look well for you.

You also don't specify location. Many things are location-specific, like for example the discrimination case mentioned by Gregory Currie. In the US they take discrimination quite seriously from what I heard of. In Europe, where I live, not that much. Also, demand for software developers can vary by location. Where I live, good developers are in shortage. You have leverage to negotiate. In other countries though, asking to be exempted from the test == immediate ghosting by the recruiter, HR, or whatever.

For the next time, you must have in mind that if you are to decline a test you must do it up front. Again depending on your skills, experience, portfolio and how much you need the job. As to the "how", you can always point them to your GitHub account as long as the codebase is relevant. If you are interviewing for C++, your GitHub account will be irrelevant if you have Java only in there. If they are not happy with that, you can ask them what they want to see from the challenge that they can't see from the repositories. Some companies just want to have a sample of your code created just for them. You don't have many options there other than thank them and move on.

PS: every failure is an opportunity to learn. Try to learn from this task. What went wrong, what took you so long, and see if you could have done something better or different. Convert this to a time investment from a time loss.

3

I took part in multiple candidate reviews. For a software development job, it is absolutely imperative for me to see the candidate's code.

We made one exception when a candidate couldn't write the assignment, but he looked promising otherwise. In that case, we asked the candidate to show some of his own projects, so that we could review the way he writes code.

So if you:

  • Really want the job
  • Really can't write the assignment

(and I suppose you should really, really give yourself honest answers to those questions)

Then propose to the company that instead of writing the assignment, you can provide some code of your pet projects. And a word of advice; don't even think about proposing showing code you wrote for former employers if the code itself is not opensource. Yes, I had an instance of that too.

If you are a promising candidate for them, they may agree. Take into account though, that you may be outright rejected, what will be the price for refusing to write the assignment.

In a nutshell: If you really want to work there, write the assignment.

1

There are a bunch of options available, and I am only stating the ones I have personally used before.


Ask for more time or another take home test task

This is something that is easy to do, and you should have the skill to regularly do it in your job anyways. Make an estimate of the time you will need to complete the work, and ask for more time. Or, ask for another task that will be more suited for your circumstances.

If they want you, they will grant the request.

I have asked for more time (14 working days) on a 3 hour task, and they easily granted it. All it took was one (1) email. I was done by day five (5). I ultimately declined to advance in that interview process, because after phone calls I found out there was a language barrier that I could not overcome (they were in a very different geographic region of the same country, and English was not the language of communication verbally).

I have asked to work with another tech stack (python) instead of the one they asked me to use(ruby or Perl) , and it was granted after a little back and forth. I did advance in that round, so I do not think it affected me very negatively.

Ask for a live interview

State that you desire a live test, in person or over the internet. Do ask that they provide an environment for you to work on the test, or provide an online environment or docker image.

It has the added benefit of having the opportunity of meeting team members and getting better data of whether you want to work with them. I have done this before, and it gave me the opportunity to meet the CEO and decide I did not want to take the offer they gave me—because I would have no scope for professional development there or any opportunity to move upwards with promotions, even if the team members seemed good people to work with.


Why these options work

As an employee, you would ask for the things necessary to complete your work. As an interviewee, you should do the same. It gives you visibility into the company's responsiveness to your needs, and the ability to observe how they react to someone asking for help.

Ultimately, in an interview, you should ask for what you are comfortable with so that you may maximize your chance of doing your best work.


Additional notes

  • I have not interviewed for nearly 2 years now, so this advice might be invalid due to passage of time.
  • The companies I interviewed and used theses options with were well established and non-FAANG, not startups. I have no experience with using these options while interviewing with a startup.
0

If you're desperate, suck it up and do the task. Spend a vast amount of time on getting it perfect.

If you're not, tell them that you dislike doing unpaid work, and that you'll do the test once they agree to accept your invoice for the time spent at your usual hourly rate. They won't agree to that unless they're desperate, which is useful information when it comes to negotiating.

0

If you don't want the job, then don't do the assignment and bow out as suggested above. There is no shame in that.

If you do want the job, I suggest treating the setup of the virtual assignment as a separate...assignment. Build a Docker image (and publish it somewhere like Docker Hub or GitHub Container Registry) that is all setup for you to actually be able to do the work; keep track of that time separate from doing the actual assignment.

Then do the assignment.

When you submit the assignment, you can say something like:

Hey, I noticed there were a few steps involved in getting things setup to do this, so I containerized the setup so you might be able to reuse it in the future. And I finished the assignment."

As someone who has been fortunate enough to work at two separate Name Brand tech companies, in both cases I made the most of the take-home (or even the onsite interview: I couldn't solve a problem in the live interview but finished it later and emailed in the solution). Don't be constrained by take-home tasks: they're your opportunity to show off what you can do, and never underestimate the importance of persistence.

-1

From what I've seen about take home assignments, many are formulated in a hurry by people who themselves haven't taken the time to solve the question on their own or have devised it merely as a first level filter.

Here's what you can do to assess if it is worth your time:

  1. Neatly list out some questions you have about the assignment, for which you want their clarification. Email it to them. If they respond with detailed replies to your queries, they are serious about your candidature, and aren't simply using the test as a filter. If they don't bother replying or if they give cursory answers, you don't even have to bother with further communication. Just move on with your life.
  2. If there's no response to the email, call up the HR person or the relevant team member who created the test. Ask them for what would be a good time to discuss the clarification points, and discuss it with them. Again, if their response is genuine, proceed. Else don't bother.
  3. A genuine, sensible employer will give you the necessary time to complete the test. If you feel you need time to setup the environment etc., give them an assessment of how much time you need, and ask for it. If they grant it, proceed. Else, ignore.

If you've already decided not to proceed:

  1. Send them an email saying "Thank you for considering me, but I would not like to proceed for now. Perhaps you could retain my CV and consider my application for an opportunity in future.". There's no need to mention a reason.
  2. Optionally, also include a link to this: https://nav9.medium.com/coding-tests-in-the-1st-round-bad-idea-e94e4ecce332
  3. Giving them closure by replying with a "no" is the polite way, but you also have the option of not replying at all. They'll just proceed with candidates who replied. If they contact you asking about the test submission, simply reply "Thank you, but I would not like to proceed".
-1

I would suggest following your proposed course of action and presenting what you have done toward accomplishing the project anyway. Along with the link to your portfolio, you could explain in your email your time constraint, some high-level detail of the problems you encountered and overcame while setting the environment up and some pseudo code of what you would do to solve the problem if the environment was working. In the interview be ready to discuss this and your own examples.

As an example of this approach in practice, I have a friend who was invited to participate in a take home test for a computer security company. The test required a free trial of a 3rd party proprietary software package for which you needed to create an account and apply to get a license. My friend had the unfortunate luck to have a name that was similar to a previous customer of this 3rd party who had broken the terms of use and harmed his relationship with the 3rd party software vendor. They automatically denied my friend's application.

He spent 2 days trying to get the issue resolved with the 3rd party and settled on creating a presentation about how he would approach the problem using screenshots found online and taken from the user guide.

He presented it all to the interviewers. He included the setbacks, what he did to resolve them, where he got the screenshots from, and his proposed solution. The interviewers were highly impressed that the setback with the tool did not deter him. They said that most candidates ran into some issue or another and ended their presentation there. He got the job offer over 10s of candidates.

My friend had a lot of available time for the assignment and really wanted this specific job. But I think the approach could easily be applied in your time limited context as well. Best of luck with the interview process.

1
  • @Joe Strazzere I meant the environment setup steps in that statement. I can see how that could be unclear. Thanks for the feedback.
    – Mr. S
    Commented Mar 21, 2023 at 1:22

You must log in to answer this question.

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