Tell HN: Unpaid home assignments are not ok
It took me about 6h to develop and iron out the edge cases.
My take away from this is that:
I will not do take home assignments for free if they take more than 1h of my time.
It took me about 6h to develop and iron out the edge cases.
My take away from this is that:
I will not do take home assignments for free if they take more than 1h of my time.
[+] [-] jerf|3 years ago|reply
Apparently the approved HN method is to arrange the resumes on a dartboard, throw darts at it, and commit up front to hiring whoever you hit unconditionally for at least two years without no possibility of having to fire them. Or something like that.
Setting limits on what you will do is good, and ghosting is bad, certainly.
But in the end, you're going to have to do something unfun to get hired. There's no way around it. I know we'd all love to live in a world where Google one day just logs on to LinkedIn and is so impressed by the sheer brilliance of our awesomeness which just somehow oozes through our listing despite the fact we didn't have to do anything to demonstrate it, as it's also unrealistic to expect programmers to have a lot of publicly-available demonstrations of their skill such as open source projects (forgot to mention that one!), that instead of hitting you with a job interview they just lead with a job offer for their best position, but that's just not going to happen.
[+] [-] JadoJodo|3 years ago|reply
We then walk through their notes (if they made any), and the code sample itself together. I have them make any observations, critiques, suggestions, or other thoughts together with me. This gives me an idea of how they think, what issues they saw, how they would improve things, how familiar they are with the specific language, and coding in general. It also gives an opportunity for some light “conflict” resolution , if I push back on their thoughts.
This has worked really well. Those that don’t do well on the spot can make notes ahead of time (but aren’t expected to spend time coding for hours) and those that are confident can walk through it live.
[+] [-] cableshaft|3 years ago|reply
The guy also asked me a few relatively simple technical questions, then said "Okay I know you can handle the job, let's see what you really know," asked me some really difficult questions, when I said "I don't know" to some he actually spent a few minutes teaching me the concepts.
That same guy was the lead programmer on some famous arcade games, btw. Did a lot of assembly programming back in the day. He had serious technical chops.
Got a job offer the next day. 1 interview, 1 interviewer, a little over 30 minutes spent.
Best interview experience I ever had. If more interviews were like that I wouldn't feel dread every time I felt the urge to switch jobs.
Also if that's all someone of his caliber needed to determine applicant quality, I don't see why everyone else feels the need to go through all this other bullshit.
[+] [-] phreack|3 years ago|reply
It was such a good trigger for discussion and we could easily measure a candidate's fit in moments. Some would just go "yeah this code's perfect" and not argue at all, some would spend ages with irrelevant details, and the couple of people who immediately looked at the diagram and spotted the most glaring OOP issues turned out to be great at their job.
[+] [-] bambax|3 years ago|reply
[+] [-] dcminter|3 years ago|reply
One swift interview process I did included a single short page of code and the invitation to (with pen and paper) review it; I was given some time to think about it on my own and then to talk it over with the technical interviewer.
I liked that one and they had what I thought was an above average quality of developer when I joined. Anecdotal but interesting.
[+] [-] rubylark|3 years ago|reply
I've had 4ish interviews since that job, and all of them gave an on-the-spot code reading assignment to walk through their code to find the bugs. It let me see who has old style coding standards, who takes advantage of modern C++ utilities, and that the interviewers are competent enough to walk through coding examples, too.
[+] [-] jdthedisciple|3 years ago|reply
[+] [-] rapht|3 years ago|reply
[+] [-] lenocinor|3 years ago|reply
[+] [-] LocalPCGuy|3 years ago|reply
The one thing I didn't feel just asking for review/discussion accounted well for was their ability to build/add something new to the code, and so we have followed up the code review/discussion with a very specific/small exercise to evaluate the process (architecture, pseudo-code) they'd use to do that, and then discuss that as well.
[+] [-] willcipriano|3 years ago|reply
[+] [-] sidewndr46|3 years ago|reply
[+] [-] roenxi|3 years ago|reply
[+] [-] test1235|3 years ago|reply
[+] [-] water8|3 years ago|reply
[+] [-] smcl|3 years ago|reply
[+] [-] blackoil|3 years ago|reply
2nd aspect is unpaid take homes. It's complicated. Companies do pay a lot to fly candidates, put them in hotels and feed them for onsite interview. So financially company can afford to pay something. But it adds a moral hazard as you are paying cash irrespective of any expected quality or commitment.
Other thing I would like to highlight is that unlike any other industry, tech. allows people to enter at ease irrespective of the pedigree and credentials. No hospital would hire a physician who has read a lot on the Internet and did some pro-bono help to the neighbourhood kids. So what is the best way to hire isn't very well defined. It could be Leetcode, puzzle problems, take home tests or something else.
[+] [-] PaywallBuster|3 years ago|reply
I tend to see 1) quick phone call with recruiter 2) please make assignment
in Europe at least
[+] [-] Ancalagon|3 years ago|reply
[+] [-] lbreakjai|3 years ago|reply
The take-home assignment is short. It shouldn't take more than an hour if you really really want it to be polished, which we heavily insist we do not care about. The overall process is a bit longer, because we then discuss it together.
For the pair programming session, the exercise is picked by a developer that isn't involved in the process, to put candidates and interviewers on equal footing.
Our goal is to be able to give an offer within 48 hours starting at the first contact, and give a feedback, positive or negative, maximum one hour after each stage.
It's a candidates' market. A long and complicated process only ensures you weed out the candidates who have plenty of options. I'd almost be tempted to give a long assignment and consider everything but a firm "Not even in your dreams" as a failure.
[+] [-] VoodooJuJu|3 years ago|reply
That's fine, pay me.
>pair-programming
Again, that's fine, pay me.
>go through an existing project of theirs, discuss it, and extend it together
The SaaS's I own and operate are closed-source and I'm not looking to take on any contractors at this time, but I'll let you know if anything opens up.
[+] [-] jjgreen|3 years ago|reply
[+] [-] iambateman|3 years ago|reply
1. Is it actually giving the employer more confidence or information about your candidacy?
2. Is it within the normal bounds of an interview? If someone asked you to do another 60 minute technical interview, would you?
3. Is the company clearly not trying to use the product of your code challenge?
To be honest, there are a lot of people who can look impressive but turn out to be totally under-skilled at coding. I’m sympathetic to hiring managers who feel like they need to test for that. As long as it’s not a super long exercise, they’re not just hazing you, and they’re not trying to use the results, I think it’s fine.
[+] [-] Verdex|3 years ago|reply
The technical interview itself drilled down more deeply into my skill level, however I can appreciate that they wanted to have a bare minimum idea that I could actually program before committing more time.
The favor was more than returned when they took me out to lunch in the middle of the technical interview and let me ask as many questions as I liked about the company.
[+] [-] androa|3 years ago|reply
Almost everyone chooses to do the small coding assignment, because they don't have code to bring.
[+] [-] androa|3 years ago|reply
[+] [-] rajasimon|3 years ago|reply
[+] [-] walthamstow|3 years ago|reply
[+] [-] lr4444lr|3 years ago|reply
[+] [-] AdvancedCarrot|3 years ago|reply
[+] [-] oleg_antonyan|3 years ago|reply
[+] [-] gwd|3 years ago|reply
[+] [-] unknown|3 years ago|reply
[deleted]
[+] [-] collyw|3 years ago|reply
[+] [-] throwaway43345|3 years ago|reply
Lucky for me, landed a role that had checked my github profile and answered some questions, which was sufficient to convince them. No waterboarding required :)
[+] [-] kasey_junk|3 years ago|reply
The second is they didn’t set expectations (or at least you didn’t tell us if they did). Should you have spent 6 hours on this? How long does it normally take? After the assignment would you be brought in for 6 more hours of interviews or is the assignment the major filter?
At the end of the day, take home assignments are the best filter, the most equitable and the most efficient way to do hiring consideration. Companies (usually the middle managers within them) just don’t have the courage to use them correctly and don’t spend the resources to make them a good filter (they also don’t spend resources on the other job filters so those aren’t good either).
[+] [-] rrwo|3 years ago|reply
[+] [-] 101008|3 years ago|reply
Nonetheless, I can't think of a better solution for this. Hiring someone is a big commitment (for both parts), so I want to be completely sure that I am hiring the right person. How do you that? How do you measure the quality of the other person in an area such as IT where it's so easy to lie about knowledge and experience?
[+] [-] sumtechguy|3 years ago|reply
The original fizz buzz type test was to weed out the fakers. It is something most people with a bit of skill can pull off. But as an industry we did what engineers do. We over think it. We blow it way out of the bounds of what it should do. We ended up with enterprise style fizz buzz testing as a filter. Honestly, at this point you really can not expect more. But can they bash out any code, can they read code (and understand it), are they cool with your 'culture'. There are 2 things you do not want on your team, a jerk (they can usually hide it in a few hours of interview), or someone who does not 'get it' (they can become help vampires). But I will take a dozen help vampires over a jerk every day of the week.
It is not like most people are going to 'hit the ground running'. In many places it takes a few weeks just to figure out who to talk to so you can check in code, or get your computer setup correctly. I have yet to come into a job and not have to wait on getting a computer (first day), then a few days of getting access to everything. Let alone beginning to comprehend the problem they are trying to solve.
[+] [-] dcminter|3 years ago|reply
It's much the same vein as that Canonical recruitment questionnaire that was doing the rounds a while ago - if you want to sit with me (virtually or IRL) and ask me questions, that's fine. If you want me to submit an essay that takes me hours to write then you're going to have to be offering me something I cannot possibly get elsewhere!
In the end it's about mutual respect.
[+] [-] collyw|3 years ago|reply
[+] [-] cbanek|3 years ago|reply
Let me tell you why that was better than the current hiring meta.
1) I can learn everything I need to know in an hour with someone. 2 will likely not drastically give me a better idea. 8 hours with someone is not 8 times better, it just doesn't scale like that. So the idea that the more work you give a candidate, or the more interviews, or whatever, the better your hiring practice, it's just not true.
2) People can be very nervous in interviews. It's an intimidating, adversarial environment that has no relation at all to the job or work. It's almost the beginning of the way for the company to treat you as lesser, and they will take advantage of that to screw you these days. As you say, they will just ghost you. They didn't used to do this nearly so much. They'd at least send you a letter, or give you a call.
3) Even if 1 and 2 weren't true, the questions asked in interviews have no relationship with the real job. You just can't ramp up in time, etc. There's too much learning. Picture an intern. They do nothing except take everyone's time for the first month, but it's the rest that matters. Will they get something useful done before they leave? Maybe. But it does take a while to ramp up. So interview questions don't judge job performance.
But we still do it, because people like that tinge of power I guess. That feeling of control in that you can say yes or no to someone, they have to placate you for the job, etc. A lot of interviewers I know act very strange in interviews too, and they don't act that normally.
For the interviewee, it's even worse. You waste your time, you spend a lot of emotional energy, you don't know if you like the people you'd be working with, you don't know really what you'll work on, and no matter what you have to do what your boss says anyway, which can change at any time. Oh and it's "right-to-work" so they can fire you any time for any reason.
It's much more useful to talk to their previous boss or friends or references. Even if they are biased, you can usually tell pretty quick again who is telling you nonsense. At least then you can hear real stories about real situations in the past, rather than useless hypotheticals. But we don't do that anymore because of liability from lawsuits in hiring. Because a lot of companies are actively discriminating. Some are passively doing it, some are trying to do better but are hopeless. So everyone is just covering their ass.
Sounds like a great deal!
[+] [-] badpun|3 years ago|reply
I will however not accept a take-home coding test before I spoke with the engineering team and saw that they're seriously considering my application (i.e. it looks like I will be a good fit, and they just want to make sure I'm not some fraud who can somehow talk the talk, but can't walk the walk).
[+] [-] ManVanderHuge|3 years ago|reply
What I DO HATE about take homes, is if you complete one, clearly put time into it, and then are refused feedback when you are rejected. If I put 2-10 hours into writing something for you, I at least deserve three sentences on why it wasn't accepted. I know these people are busy, but so am I. Most of us also have jobs, and even if we don't we want to know how to improve.
[+] [-] pgm8705|3 years ago|reply
That being said, I've seen cases where the take home assignment is actual company work, in which case I 100% agree you should be paid.
[+] [-] im_dario|3 years ago|reply
Actually, the assignment was "take this shitty service and make it production-ready". It had some pitfalls that I avoided, and I introduced monitoring, automated deployment, API documentation, etc.
There was a bug - a minor misunderstanding that was simple to fix if they gave the feedback and allowed to do a quick fix - but the rest was production-ready.
I had fun doing it, that's why I didn't mind taking time. What I didn't expect was the poor binary feedback with zero content.
From now on, I'm only taking these assignments if they agree to have a feedback session. If not, I won't do anything. I'm close to 20 years of experience and it feels like they treat me like an undergrad (although I have a full Github profile).
[+] [-] the_only_law|3 years ago|reply
Then I got grilled in the interview for not pulling in all sorts of bloat and other bullshit for a single endpoint CRUD app.
[+] [-] antisthenes|3 years ago|reply
Full stop.
[+] [-] hyperman1|3 years ago|reply
So I decided to mail a take home assignment. I took about an hour myself to prepare it, the assignment was not work related, it was a completely fictional task. I think it was creating a HTML page of ~50 lines demonstrating the hole could be filled if the person had access to internet and all relevant docs. The person delivered the next work day, did well, and we hired.
I've thought long and hard about this, and decided the assignment was a mistake and I would not do it again (sorry to the person in question). Why? In practice, when listening an hour to a candidate and let them write a minimum of code, you know if you have a complete weirdo who never touched a computer, or someone who is at least basically OK. In this case, it was a short term job, so the blast radius was pretty small even if candidate was bad. For longer term engagements, there is generally a test period and better vetting available. Meanwhile, I was in a position of power over someone else, and while the whole thing seemed minor to me at the time, I later heard the (junior) candidate was worried sick and spent way to much time on the assignment.
An underlying cause for my mistake was the interview situation, which was very bad. Basically, I was in the middle of something else, and a project lead I had never heard of for a project I had never head of asked me to do a technical interview while the candidate I had never heard of was already sitting in a meeting room. Needless to say, I was completely unprepared. There wasn't even a whiteboard in the meeting room. So I basically adjusted by always being prepared for surprise candidates: A list of questions for most common technologies and a template for technically grading candidates were always stashed away in my locker from then on, and the people starting projects would keep us interviewers in the loop when a job would open.