Ask HN: I got a coding assignment I don't think is reasonable
25 comments
Then don't do it?
If I were you I would propose a counter-offer: "Sorry, I can't allocate time to a take home assignment, but here are links to an mvc application I've built in <language>: <github link> I think it demonstrates my expertise and I'd be happy to discuss the source code and how I implemented it!" If they take you up on the offer, awesome! If they don't, you'd probably not want to work there anyway. Especially if it's some bullshit like "We expect all applicants to complete this test." Fuck that.
I've been burnt many times by take home assignments. I.e I've aced them and still not gotten an offer. So I don't do them out of principle.
If I were you I would propose a counter-offer: "Sorry, I can't allocate time to a take home assignment, but here are links to an mvc application I've built in <language>: <github link> I think it demonstrates my expertise and I'd be happy to discuss the source code and how I implemented it!" If they take you up on the offer, awesome! If they don't, you'd probably not want to work there anyway. Especially if it's some bullshit like "We expect all applicants to complete this test." Fuck that.
I've been burnt many times by take home assignments. I.e I've aced them and still not gotten an offer. So I don't do them out of principle.
It's hard to say how unreasonable it is without knowing what the API you're supposed to implement looks like. Regardless of how objectively unreasonable it is, there is also the issue of how much you want the job, and if that is outweighed by the unreasonableness of the request. Perhaps you should also consider this an early red flag that XCorp might not be so great.
I would look at it this way: if you want the job and can spare the time, give the assignment your best shot; otherwise if you could spend 4 hours looking for other jobs to apply to that have more reasonable application procedures, do that instead.
However, whether you decide to do the assignment or not, you should tell the company that you consider the assignment unreasonable and why. Our sector is filled with shitty/unreasonable hiring practices, and I think as candidates we have a responsibility to provide feedback about those practices to provide pressure on the industry to change them. If XCorp starts hearing from a lot of their candidates "Sorry, that's unreasonable, I'm not proceeding", then they will need to revise their hiring process if they want to keep their potential talent pool open. If you decide to continue with the process and do the assignment, then the feedback also works to your benefit by signalling that you are an independent thinker who is willing to give constructive feedback on internal processes: if the company doesn't like that then, well I really wouldn't want to work there anyway.
I would look at it this way: if you want the job and can spare the time, give the assignment your best shot; otherwise if you could spend 4 hours looking for other jobs to apply to that have more reasonable application procedures, do that instead.
However, whether you decide to do the assignment or not, you should tell the company that you consider the assignment unreasonable and why. Our sector is filled with shitty/unreasonable hiring practices, and I think as candidates we have a responsibility to provide feedback about those practices to provide pressure on the industry to change them. If XCorp starts hearing from a lot of their candidates "Sorry, that's unreasonable, I'm not proceeding", then they will need to revise their hiring process if they want to keep their potential talent pool open. If you decide to continue with the process and do the assignment, then the feedback also works to your benefit by signalling that you are an independent thinker who is willing to give constructive feedback on internal processes: if the company doesn't like that then, well I really wouldn't want to work there anyway.
well, the API is supposed to be a payment api that you can look up previous payments made to it, and verify names, IBAN codes etc. And thought should be given to what a normal financial application api might be like. From scratch in a language I specified I could do maintenance level coding in.
But yes, I guess that's probably the advice I'm going with, it has definitely soured me on going further.
But yes, I guess that's probably the advice I'm going with, it has definitely soured me on going further.
I have a sneaking suspicion that some firms use this as a filter, to see if you can be pushed around. If you'll do an unreasonable assignment then you're more-likely to work unpaid overtime etc. If that's correct then doubly important to avoid those like a discarded facemask ...
I'd say anything over an hour is unreasonable unless paid at consultant rates. If feasible say not interested.
When I get take homes I usually timebox them to the recommended duration and then send in what I have, along with a note explaining that. So I might say "This may not be the most elaborate solution you've seen but I did it in strictly under X minutes".
4 hours as the declared time seems to be pushing it though - once you get beyond 2 I have seen the complexity explode, and a 4 hour assignment as you noted can easily balloon. One option might be to show off your project management skills and push back on the scope to negotiate something that fits your schedule.
4 hours as the declared time seems to be pushing it though - once you get beyond 2 I have seen the complexity explode, and a 4 hour assignment as you noted can easily balloon. One option might be to show off your project management skills and push back on the scope to negotiate something that fits your schedule.
Really depends how bad you want the job. I've seen lots of companies with multiple layers of filtering including rigorous take homes.
I would never spend 4 hours on a take home assignment for a job!
I would and I would much rather that than multiple interviews
Would you consider it reasonable if it were 4 hour on site? Or would you feel it's fair to be judged (and rejected) on a much shorter half hour one?
I wouldn't do four hours on site either.
Over here in the UK, its strange for an interview to run more than a couple of hours.
Even at 90 mins I'd be getting restless and thinking of just leaving.
Over here in the UK, its strange for an interview to run more than a couple of hours.
Even at 90 mins I'd be getting restless and thinking of just leaving.
I don't know, this is what companies in my experience claim their take home tasks take - 2-4 hours, but it always turns out to be about 4 hours if you're lucky and absolutely nothing goes wrong at all (counting git clones, and pushes, and reading task description etc. etc.)
Most of the take-homes I've done were all-day (8+) tasks if you wanted to do it right (dealing with all edge cases, full unit tests, good UI if need be, etc. etc etc.) The company says not all of this is necessary, but you know the competition is going to go above and beyond, so you're screwed if you don't.
Also, take home assignments are usually in addition to the whiteboard/leetcode round, not instead of.
I've come to the conclusion that I'm just going to refuse any company that gives out take home assignments unless it's a FAANG-level (or similarly prestigious) company.
Also, take home assignments are usually in addition to the whiteboard/leetcode round, not instead of.
I've come to the conclusion that I'm just going to refuse any company that gives out take home assignments unless it's a FAANG-level (or similarly prestigious) company.
DocuSign tried to pull that shit on me a few years back. I politely declined and proceeded to get several offers at companies that didn't force ridiculous tests.
[deleted]
There are 3 types of candidates:
1. Need a job bad and would do almost any assignment to get that job.
2. Want a job bad (not need it necessarily) because it is at their favorite company, unicorn etc etc.
3. Just looking around for an opportunity and unless it checks a lot of boxes, won't change.
If you are #2 or #3, then you have choices. Otherwise, I would say go back to them and offer "I can do this in language x since I am more comfortable" and then see their response.
1. Need a job bad and would do almost any assignment to get that job.
2. Want a job bad (not need it necessarily) because it is at their favorite company, unicorn etc etc.
3. Just looking around for an opportunity and unless it checks a lot of boxes, won't change.
If you are #2 or #3, then you have choices. Otherwise, I would say go back to them and offer "I can do this in language x since I am more comfortable" and then see their response.
Some companies deliberately give you too little time, to see how you handle it. Do you push back? Do you do as much as you can? Do you cut corners, and if so which corners, and why?
This is likely only partially an assignment to prove you can code, but the real question is what do you do when under a time crunch?
This is likely only partially an assignment to prove you can code, but the real question is what do you do when under a time crunch?
It sounds like you're free to make your own assumptions and constraints. I would create an API with a payment endpoint, validation endpoint etc. Then I would have a basic web page calling those endpoints. I would not implement security, auditing, logging etc
Send a reply saying that you’ve completed the challenge.
Say you’ve hidden the repo somewhere in the interwebs and in order to find it the recruiter will need to solve three riddles, each one more difficult than the last.
Then include just one final line of random characters and an encouraging “good luck!”
Say you’ve hidden the repo somewhere in the interwebs and in order to find it the recruiter will need to solve three riddles, each one more difficult than the last.
Then include just one final line of random characters and an encouraging “good luck!”
I must say, I love the way you think!
What language is this that you haven’t used since 2013? Without this piece of information the whole thing feels abstract. Is it Ruby?
Yes, it's Ruby, and api should be written in Ruby on Rails. I didn't want to specify but I figured could be guessed :)
Just forward everything to Stripe
Sub the assignment out on Upwork.
It's not cheating. This is not an academic exercise.
Simply, getting the job done through others.
It's not cheating. This is not an academic exercise.
Simply, getting the job done through others.
Don't do this. Instead, reject the assignment and move on. Getting it done on upwork is unfair to both employer and employee in my opinion.
The middle layer is implemented in a language and framework I haven't worked with since 2013 (the language I have used but only because a well known testing tool uses it for scripting so that's what I use it for).
When first approached I specified to the recruiter and to the company my limitations with the language and framework, in the interview I said I believed I could still do maintenance level coding in it (framework is MVC so maintenance is add some stuff to controller etc. ), but it would take me some weeks to a month to be able to contribute meaningfully. I said I was strong in Frontend, and I could of course do middle layer / backend work in other languages / frameworks I have used more recently.
So the take home assignment is to implement a financial payment api (with validation of Iban etc. ) in the language, framework I have not used since 2013. A '4 hour' assignment, from scratch.
I think this seems a little bit more unreasonable than the normal 4 hour assignment that actually takes 6-8 hours. How do you think I should approach this particular thing - I'm thinking call the recruiter and say not that interested in doing it. Other suggestions?
on edit: as always they don't "expect" you to finish the whole thing, but given what I told them I find it weird they would expect me to do much more than make some boilerplate.