...how about we give you a project that more closely reflects problems we solve here day-to-day that you can solve in the comfort of your home on your own hardware in whatever IDE makes you comfortable?
Engineers: That's absurd! I've drawn a line in the sand!
But, software engineering interviews are pretty rough. It is a uniquely miserable experience. Since I'm a temp worker I have a lot of them. They don't get easier.
I don't know of anyone who likes high pressure time crunch interrogations except maybe the ones getting to do the interrogating part.
A take home test isn't so bad. But, ya if you asked me today if I'd be willing to do one like that again I'd say probably not unless I was desperate. The reality is, it is a lot of effort to put in for it to all come crashing down with a rejection anyway. When you're applying at dozens of companies if they're all requiring that level of time and mental commitment from you, you can't swing it really and it's stressful. Interviewing and being under financial pressure at the same time is already a stressful position to be in, let alone being mentally and emotionally flogged for it.
All the jobs I was ever hired onto the hiring manager just had a good gut feeling about me and the tests never mattered. And, they were happy with my work.
The ones that never hire me usually rely on all the employees to vote on you, if even one says no you're out. Or, the ones that are very fixated on your GPA or whether you can invert a binary tree on the whiteboard while they yell at you "Wrong!" along the way.
At one, the resume didn't matter! When through the interviews, got the offer, and then "oh, can you send me your resume, so we have it on file?"
As someone who has been through this early career I agree with the sentiment. But being mid-career it is kind of fun to go through one now, the catch being that you shouldn't give a sh/*t if you get through or not. Think of it more as two-way courting instead of a one-way interview, not all of them pan out.
Something that "reflects problems we solve here day-to-day" is missing one feature: you're not paid for it. I have a pretty good job right now, but it's not like I'd keep doing it if they decided to stop paying me.
I had an interview a few years ago that I thought did something cool: you spent half a day working with people, and they paid you for your time (around $40/hour, if I recall), and made an offer based on how well you worked with people. I ended up not getting the job, but at least I didn't feel used or like I wasted me time in the process.
Me: How about we do something that more closely reflects problems you solve there day-to-day there and during the day? Your interviewer being present throughout means you'll get to see how I work and you'll be able to provide clarifications or answer questions as well. As a convenient side-effect, we'll both know that the exercise is a sufficiently valuable use of everyone's time to give up the equivalent amount of salary over it.
"How about you, a highly trained professional, do 5-10+ hours of unpaid work for us, that will be judged against desperate candidates who invested 25+ hours into them and/or bought a solution online, so you will get nothing for hours of work, except a meaningless rejection notice by some overworked programmer who didn't even read much of your code since he had 50 candidates' solutions dumped on his plate?"
Personally, I've hired many great candidates, and got several great jobs, via whiteboard interviews. It's not perfect but it's far superior to takehomes, which are completely one-sided, very hard to get right (by the recruiting company), and often are boring.
Whiteboard interviews and (even better) pair-programming with an interviewer are reciprocal and allow me as a candidate to learn about the company rather than just do some work for them for free. Often the tasks are more interesting too.
In my opinion, it is the takehome tasks that are "doomed". Their premise is flawed: "we don't want to invest an hour of our engineers' time in talking you worthless candidate, so we'll instead have you spend several hours coding up a task that our engineers will never take the time to check properly, since their time is more valuable."
In my opinion, the future is platforms interviewing.io, where candidates are vetted and top candidates get the minimal investment of an hour of the company's engineer time to pair-program, which is far superior and more reliable way of screening.
How about we also give you this other project?
If it were 5 hours on-site versus 5 hours at home, that would be different than 5 hours on-site plus 10 hours at home.
Have you seen some of the study guides / roadmaps people make for FAANG interviews? I've seen people claim they've coded hackerrank / leetcode / CTCI questions for multiple hours a day, for months.
EDIT: Also, at least with the Hackerrank for hours a day, it's not for any specific company. Getting good at these problems is useful for getting a job at virtually any big company. Contrast this to the take-home project, where (in order to make sure you don't just copypaste someone else's from the internet), they make these things kind of specific, making the transferability to other things substantially less likely.
Once you get very good at leetcode-style questions, just apply anywhere and get an onsite with a one-hour interactive technical screen, that will also tell you about the sort of people and culture that employer has.
Conversely, homework assignments can easily take 5-10 hours. There's a lot of desperate unemployed people out there taking 10+ hours for these tasks, and setting the bar really high. A busy professional can be hard pressed to invest 5 hours they can ill-afford coding this task after a full day at work, then get rejected because some unemployed applicants dedicated 20+ hours for the same task.
There are also services that solve these tasks for you, so now you - a busy professional - are competing against hordes of people who do these tasks all day every day for a living.
So you hard-scramble 4-5 hours to finish a take home assignment to apply to just one place (!), and then you send it in and get a meaningless rejection note. Sometimes you don't get anything at all.
These are some of the reasons I'm never completing a homework assignment again.
What also frustrates me the most is when they say "use whatever language you want", I use Scheme or Haskell, and I get feedback to make it more "modular" by making it more object-oriented. The reviewers of the take-home assignment will be too afraid to admit that they don't understand Haskell, too afraid to admit that they made a mistake making the language a wildcard, and automatically assume that it's less scalable because it's not Java.
Not a great income at a place where a half decent 1br can easily cost you over $40k/yr.
Definitely became about a million times easier to live when I left academia and started making six figures.
Either way, let's get real for a second: a software engineer is a highly trained professional working in an high-demand field.
There's no reason for them to be earning $120k/yr, which is a pretty low salary in a very high CoL area like NYC.
I mean, not really? I just hopped onto the A train straight down to NYU; it took me like 40 minutes door to door, and being on the train allowed me to read, so it's much better than driving.
I make substantially more than that now, but have moved to Brooklyn since then; door to door it takes me about 50 minutes, but I wouldn't classify that as "a nightmare".
> a software engineer is a highly trained professional working in an high-demand field.
At the time I was a college dropout whose only professional experience was in startups, 4/5 of which had gone bankrupt, though the university actually paid their actually-qualified people pretty poorly. My coworker had a masters degree in data-science, and was only making $75,000/year.
Depends on your perspective, I suppose. Personally, spending 2 hours every day in commute is definitely not how I want to spend my life. A major reason I would move to a city like NYC is to eliminate such a long commute.
Last few times I took the train to Brooklyn, the train was always delayed by several minutes. Sometimes 15+ minutes. Trains were packed, especially during rush hour, and there was nowhere to sit. Occasionally they'd just stop place for technical reasons for as much as 10-20 minutes. Definitely not a smooth or pleasant experience.
Regarding compensation: $120k is becoming entry-level compensation in the Bay right now.
I have no desire to live north of 59th st, but lets be real here.
Anyway, NYC software engineers do not need to compromise on their living situation. Google alone has bought two billion dollar blocks of Manhattan pays just as much as in the bay area.
Here's an ad from someone looking to hire a programmer in Nassau county:
VOIP company looking for a technician to assist with programming back end systems. Should be knowledgeable with various database programs and voice services and applications.
Primary experience: Windows Environment - IIS / ASP.Net, VB.Net, MS-SQL, XML, Json. Primary helpful: PHP, MySQL
Secondary helpful: Google SDK, ffmpeg / sox, SIP Voip , basic CentOS / Debian navigation
Job Type: Full-time
Salary: $35,000.00 to $45,000.00 /year
I guess that will be the next trend in hiring propaganda: selling us on that sweet homeless life.
Here's the list of skills wanted from another NYC junior programmer want ad that says $35-40K/yr:
Programming Skills Desired:
Transact SQL
Database Design & Theory
HTML
XML
CSS
JavaScript
VB Script
Auto Hot Key (AHK)
PHP
C#
All of these (except for AHK which I've never heard of) look trivial, but I'd expect the interview would be impossible, because the interviewer is going to be primed to expect people with no skills and therefore assume the worst of anyone who doesn't have 110% current experience in each.
VB Script and PHP and T-SQL and C# along with the rest?
I'd expect a college student not to be actively taught any of these (T-SQL maybe if they took a database class), and they're not exactly the new hotness for languages to learn.
I'm saying this as a dev that works for a company that uses a Microsoft stack right now too (I almost never see anyone talk about C# on this site or in the Who's Hiring threads.).
This seems like a laundry list of that employer's specific tech stack hoping they can get some sucker that has their exact stack because they happened to experiment with all of those languages in their free time, which is unlikely. Anyone who does have this stack can probably get a much better salary almost anywhere else.
It does say "desired" at least, and not "required", so they might not expect applicants to match this completely, but I bet some of the interviewers haven't gotten that memo (which seems to be what you're saying in the last paragraph also).
Also you mention you haven't heard of AHK, and it can be pretty useful. It's basically a macro program for doing things in Windows and assigning a hotkey combination to it. I've scripted some things in it before, although I'm not currently using it. It's not that hard to learn, and I can't imagine that any programmer couldn't pick up the basics after a few hours on the job, so I don't know why anyone would include that in a list of technology, thereby adding one extra thing for an applicant to think they need to have experience in to apply and not apply to their company.
Like a lot of ads, they mix ridiculously specific qualifications with ridiculously generic ones.
For example, one important skill is: - "robust practices" such as "loops"!
and another is: - "knowledge of City University of New York Institutional Research Data"
Requirements are "in-depth knowledge in big data, data science, Python programming, object-oriented programming, machine learning, or natural language processing (NLP)."
Responsibilities are: "Lead technical workshops and training sessions in different areas of data science and Python programming
Help clients and students understand the immense career options for Python programmers and data science knowledge
Motivate clients about the career change and career boost that upskilling with Python, data science, and blockchain can provide."
I think it stands to reason that if big data, etc. generally paid much more in the NYC area, nobody would take such a position, so this must be representative of the job market.
These companies get a ton of candidates and tell them all to submit homework assignments that take at least 5 hours (in your case 12).
Reading 12 hours worth of coding work is intense effort even when you know the language well. If you don't, it can take a multiple of that number of hours.
Some programmer got 10-20+ of these completed tasks dumped in their lap.
I can pretty much guarantee they never really took the time to read and review the code with anything close to sufficient care or attention. Doubly so if it's in a language they didn't know very well.
But on the other hand, I think good professional like you, don't need to take 4-5 hours for a take home, since you'll be fine without doing it :)
Thanks, but I'm a programmer, not a magician. A good programmer might work faster, but he's not able to reduce any amount of work to a constant.
A good programmer may accomplish in 4 hours what an average one will accomplish in 7-8, but he will not be able to do it in 1 hour. Also, he will still seem inferior to an average programmer who took 20-25 hours to perfect this project, especially if those take-home tasks are all that other programmer does.
Do you mean you've gotten rejection letters straight after submission? In anything but exceptional cases I thought it was standard practice to always have an interview after the submission and talk about the solution - how you talk at the code, design choices, possible optimizations and issues should weigh heavier than the quality of the submission itself.
So I don't think anyone using services doing it for them has any success with it. And if they do, you may have dodged a bullet.
Yes, that definitely happens. In fact, from what I've seen, it's the norm: companies who give out homework projects only bother spending any time with you if you completed them to their satisfaction.
Otherwise you just get a meaningless auto-generated that they're rejecting you.
> So I don't think anyone using services doing it for them has any success with it.
Why not?
If I'm a mediocre programmer in the US, I can go online and buy a solution with a full, detailed verbal explanation attached. Then I'll take maybe 40 minutes to read through the solution and explanation, and voila, I'm ready for any followup session you may have.
So they'll have you do one before you even come onsite. Then if you pass, they'll run you through the same whiteboard loop we all know and love. Even if your take-home performance was fantastic, they'll still reject you if your onsite performance was anything short of.
In practice, I take jobs that don't require demonstrating anything technical in the interview.
But a take-home test would only add information, not take anything away. So there is no reason in principle someone couldn't use it to hire.
A candidate like that will have 10+ companies trying to recruit them. Out of these, 9 will require 1-2 hours of remote screens at most for an onsite. The 10th will require a 5-10 hour take-home project for the same onsite.
Which one will the strong candidate skip?
There's no contract nor payment for these and I write them from scratch, so it's still my IP.
tl;dr: I feel you completely and will never waste my time like this again.
Come on. It's not completely unheard of to be given confusing or impossible requirements while working for some companies and while in those situations I would probably just communicate back to the Business Analysts what's broken about the ask, you aren't given that opportunity in a take-home with a new company. Presumably a bunch of other people have been given the task and successfully completed it, so I would probably try to power through it.
I'm sorry, but that's an asshole thing to do to someone. In an interview setting it's more okay, because you have a chance to mention it after a few minutes and talk it out and get feedback on it or they can stop you if it's clear you're not pointing that out and you waste a bunch of time, but with a take-home you won't get that quick feedback, even if you send them an email, and can waste hours and hours on that thing.
Interviewers reading this, don't do this, please. It would leave a very bad impression on me and probably a bunch of other people about your company.