16

Recently I went to some interviews and on many I've had the 'some small projects' to do for homework. Usually in the small companies I see this as a practice.

It is not such a problem, but I've collected several projects and when I ask for a feedback it appears that the task grows with some extra requirements that are really time-consuming. Moreover I see the employers are not willing to help or to evaluate it with care. Should this be a red flag for the interview or the company?

Edit: Thank you for all your responses. You covered almost all the aspects of my question. As a conclusion I think the only task for homework that worth doing it is:

  • when the company is decent enough and you want to work there eagerly

  • the task is not supposed to take more than one day to complete

In the other cases I would apply somewhere else.

  • 2
    As an interviewer I've always wanted to see the candidate actually write code. No assignment will be as complex as the actual work, so I want to watch you work. I'm inclined to see the take-home as an attempt to apply this to a bulk lot of applicants in the hope that none will cheat. It's a bad sign. Unfortunately this practice seems to be getting more common, so ruling out companies just for running with the herd really cuts out a lot of possible paychecks. The flip side is they're likely just expect you to turn up and fit in, rather than thinking too hard. – Móż Jan 29 '14 at 2:09
  • I know this is really old, but another reason for adding extra requirements is to see how well your initial design was to see if it was well thought out and extendable. If it wasn't then you suffer. It it was, great. Then they have the 2 versions of your work and see what work you had to do to acquire the extra requirements. Possibly in their work place, requirements are always changing or the work place is high paced and they want to know if you will be able to adapt. – TheOneWhoPrograms Mar 25 '14 at 11:54
32

As an interviewer, I face a number of challenges. If I just ask you about coding, I can rule out people who really don't know what they're talking about, but I might accidentally hire someone who "talks a good game" but writes horrible code - hard to read, insecure, bug-ridden, inefficient - or who is very slow, or who is rude to co-workers, or much more. So I ask you questions that aren't just about code, in the hopes I can learn enough about you to avoid a bad hire, but that isn't always enough either.

Some companies set coding problems in the interview, either on a whiteboard or at a computer. These are really expensive for the company because they add 30 or 60 minutes to the interview in many cases. A good programmer might do a bad job at these (so we recommend practicing for them) and a bad interviewer might misinterpret what happens during them.

As a result some companies think they will save money and time by giving you a sort of "take home test". They don't typically ask you to write something they want to sell, it's a way to see what you can do. Often it's a problem that was solved already so they can compare your solution to someone else's. There's still the risk that someone might help you do it, or you might spend far longer on it than you say, but they see it as a cheaper way to screen people. If you want the job, you'll invest the time in being screened, and if it's not worth it to do that, just decline the opportunity. This happens in other industries: cooks are sometimes asked to work unpaid in the kitchen for a day so their speed and technique can be evaluated, artists are asked to bring a portfolio which often includes works they created without being paid to do so, performers must audition - give an unpaid performance - and often spend time learning music, lines, or steps in order to do so, and so on.

I have heard people suggest that somehow they are not so much interviewing as doing free project work. That companies are asking for a day or two of work, then when it's submitted asking for another day or two of work, all while dangling a job offer in front of them. If this is happening to you, one of two situations exist:

  • you need a day or two for something that the ideal candidate would need only an hour to do, and they are screening hard to make sure they get that candidate
  • you are misunderstanding what they ask of you and doing much more than they wanted, so that either you or they have huge communication shortfalls
  • they are exploiting job applicants to get their web site built or some other small task done cheaply

The good news is, it doesn't matter which of these are true - you just don't want to continue applying for this job. You don't want to work for the place whose web site was glued together from samples provided by applicants of varying quality, or who doesn't mind exploiting vulnerable or desperate people, you don't want to work with a company that cannot explain its needs to you, and you won't get to work at the place where you need to be much faster or better than you are now. So thank them and decline to go further into the process.

| improve this answer | |
  • Definitely agree that sitting with candidates and watching them code is time-consuming, but it's incredibly effective. And only rarely does a candidate I'm doubtful about turn out to be a competent coder, so over time I've got more vigorous about cutting that session short. I can't see how letting them go away and work on it would help that process, what I want to see is how they approach the problem. – Móż Jan 29 '14 at 2:12
  • No argument from me. I don't do take home screeners pre interview and I do whiteboard tests in interviews. Just explaining the possible thought processes of those who give take homes. – Kate Gregory Jan 29 '14 at 2:13
  • Yes. I'd love to hear from someone who does give take home tests. – Móż Jan 29 '14 at 3:12
  • The do homework can be useful for far away candidates. Not all candidate can afford it. In this case, it's a good compromise I think – dyesdyes Jan 31 '14 at 17:33
6

I've never liked project-based interviews. I've done several and I have several public ones on my GitHub. Very rarely do they ever consider my previous work. Nowadays, it seems everyone wants to give their own test. However, not all employers respond to them. In the field of Android development, these apps take many hours. I've done some apps that took me five hours to do and was rejected without any feedback. Especially troubling are the companies that give them out without even having a phone conversation with them first. Who knows if that company is interested in them? You could work for hours for nothing.

So, no I don't do project-based interviews for people who I haven't talked to yet and ones that are seemingly long.

| improve this answer | |
  • 1
    Most annoying are the companies that insist on giving you their own tests, and then in the face-to-face interview, can't make any commentary on your submission (often admitting they didn't read it). – Edwin Buck Nov 29 '18 at 23:16
5

A homework exam is good news.

If you are given a homework assignment that you actually do correctly, you are almost certain to get the job. Very few employers will interview you, decide you are good enough to do the take-home, see that you did very well on it, and not hire you.

Almost every homework assignment I have been given has lead to a job offer. Moreover, you should enjoy doing them... if you don't, why are you applying for this particular job?

I don't find this exploitative. Most of the time, employers will give you a sample test that has no relevance to their business. And even if they were open to having unwitting applicants do their own work as part of an interview, would you really trust someone you've only just met, whose competence is still in question, with your business?

| improve this answer | |
  • Have you ever been asked to do additional work on one of these take home tasks? Seems like a red flag if they do. – user8365 Jan 28 '14 at 13:58
  • Personally, in every case I've done a homework assignment, they just call me up and offer me the job a few days later. Rarely is the content of the work even discussed. – Code Whisperer Jan 28 '14 at 18:18
  • 7
    @itcouldevenbeaboat, really? I've done a couple of these and never heard a word back. I was annoyed that I'd wasted my time. I guess it depends on the company. – Jeremy Stein Jan 29 '14 at 0:17
  • @itcouldevenbeaboat, the alternate explanation is that I did a bad job. I guess you have to take my word for it that they were good answers. I was a 4.0 student in college and I work for a famously-selective company now as a developer. I felt like I gave solid submissions, but who knows! – Jeremy Stein Jan 30 '14 at 19:00
  • 3
    I respectfully decline it without being paid per hour. At most I would be willing to come up with the main points of algorithm and describe it in a short paragraph of for a few minutes on the phone. If they want at least 4 hours to be spent on assessing my candidacy, I prefer it to be their 4 hours perusing one of my always-non-trivial GitHub projects. That's why I've put these projects there. If a company would not hire Alan Turing because he would not take the initial coding test, then I know I should not waste my time there. Yes, it's often an initial assignment, before even a phone call. – rapt Mar 17 '18 at 17:56
5

I've had to deal with this. One measure I've had to use is to make sure that whatever the 'homework' is, it has to be something generic. If it's specific enough for the company to actually benefit from (as in -- take your work and make a buck from it without hiring you), that's a red flag.

There'd be nothing wrong with sharing your proximate approach to dealing with a challenge they present to do. But when it comes down to nuts-and-bolts details, remember that the whole reason that you showed up in the first place is so that you can get paid for your expertise.

The tact some companies take would be like you taking your car into the local mechanic and having them do an exam before you agree to pay for them to fix the car. It's stupid.

| improve this answer | |
  • Well, I don't mind to show my skills but in 2 hours should be enough. – Bor Jan 28 '14 at 19:43
  • For me it's not a question of demonstrating my skills. I can do that on paper, or by verbal question-and-answer. I just have a problem with solving a company's issue in the interview -- why should they pay someone who's dumb enough to give all the answers for free? – Xavier J Jan 28 '14 at 19:46
  • @codenoire if you really think they don't know the answers, and want yours for their revenue potential, don't work for them. But the chances of that are tiny. I would not run my business using code or other project output from people who wanted to work for me, and I doubt others would either. They want to know how good you are, that's all. – Kate Gregory Jan 29 '14 at 15:49
  • @Kate I'm a consultant and accordingly I am interviewing sometimes 2-3 times a year as a matter of course. This has actually happened to me a couple of times, but I got wise real quick. The first time (long ago), I'd driven about 80 miles to meet with a potential client and I didn't occur to me until I got home that the 'exam' i did was actually the crux of the technology the company was trying to implement. What's the saying... fool me once, shame on you; fool me twice, shame on ME... right? :) – Xavier J Jan 29 '14 at 16:36
  • Your last comment is a bit of an empty argument, it is more analogous to the local mechanic shop having a mechanic come into the shop and work for a day to assess his knowledge and technique. Of course, such a mechanic would be paid for his day of work. Perhaps these companies should pay a day's wages for these take home assignments? – daaxix Feb 19 '15 at 3:37
3

Some homework assignments could be seen as a red flag, others not. It all depends on the type of assignment and how it is framed.

I give a homework assignment to all developer candidates who pass through the phone screen (the phone screen is with me, after carefully scrutinizing your resume and anything else I can find about you, and it's 30-40 minutes of 3 - 5 general questions about methodology, preferences, and general development practices), and that homework assignment was written by the entire development team to represent what they want to test in a candidate. Because the homework assignment will take a person a few hours to perform, and takes each member of our team an hour or so to assess, we only give the assignment to candidates who we think have the opportunity to do well on it. We don't want to waste anyone's time, ours included.

If the homework problem you are given is one that you think will take you 10 hours to complete, you can ask the company how long they think it will take to complete. If they say "10 hours" then pat yourself on the back for estimating correctly, but then wonder why they're giving you a 10 hour test -- is it work they want done and are using homework problems to get work for free? Are they just really rigorous, and this homework assignment is much like the 8 hour/all-day interviews higher level candidates in management, architecture, etc perform (I've done these a lot, for many different senior roles)?

In other words, some companies will use the homework assignment poorly, some not. It's a judgement call on whether it raises a red flag for you, but remember that it is quite common to put in some amount of time to prepare for and then execute on an interview process. In companies where I have been a hiring manager, a developer candidate could expect probably 5 hours of total interview time in three stages over a couple weeks, and a homework problem that might take another 2 to 3 hours. That's 8 hours of effort for a $100K/year job, which seems pretty reasonable to me (which is why I continue to do it).

For me and my teams, how you perform on the homework problem leads directly to what the team will talk about in their couple hours of interview -- why did you select the gems or libraries you did, what was your testing approach, what did you or did you not document in your work and why, and so on. You could always ask the company who gives the assignment to you how they plan to use it, so you can better understand the context. If they don't give you a good answer, like "we'll use this as an evaluation of basic skills in xyz, and use it as the foundation of discussion in your second round of interviews," then that could be a red flag.

| improve this answer | |
  • I've been given tasks different tasks - some are just 2-3 hours, other are at least a whole day and some are supposed to be easy but when you add the time to understand X technology it is still the second type task. – Bor Jan 29 '14 at 16:56
  • 1
    @Bor On the latter, if it's testing technology that the company expects a developer to use, and you don't know it (and you apply anyway), that's really not the company giving a candidate a lengthy task, it's the candidate having to beef up their own knowledge in order to match the job requirements. – jcmeloni Jan 29 '14 at 17:06
1

This is a sign of trouble ahead.

The companies which are doing this are testing you to see how willing you are to use your personal time for their projects. A person who states that they are uncertain about or unwilling to do so will almost certainly be removed from their potential list of candidates.

It's also rather legally tricky for the company, as if they assign you a task and you accidentally develop something which they later attempt to sell, since you are neither a contractor nor an employee, they could owe you compensation for your efforts

Also this could cause practical problems for them if you far exceed their expectations (and they may this apparent), this may change the compensation rates you are seeking to levels beyond what they are willing to pay for the position.

It would advisable to make certain exactly what they are seeking when they ask you to take a project before you accept this and what assistance (if any) that they will provide to perform this task. If they balk at this or they make it clear that you are expected to work for an extended period without compensation, then it's probably best to politely decline to do this.

Frankly, unless the companies are "industry leaders" or what they are doing is cutting edge, it might be advisable to continue to look for a company which respects your work/life balance.

| improve this answer | |
  • 1
    It would depend upon how long it would take. If it is clear that you are being used, then it would be advisable to politely decline. If they expect you to spend more than a reasonable amount of time on their "test" (reasonable being less than 1 hour) then it also might not be advisable. – Mistah Mix Jan 28 '14 at 14:20
  • 3
    sounds like a bunch of unfounded paranoia about a little coding exercise whose typical intent is to check whether the candidate actually knows how to code, knows basic concepts (like concurrency or data structures), and has a habit of writing well structured and commented code. – amphibient Jan 28 '14 at 17:39
  • 3
    My time is valuable. I have no idea how (or even if) you value yours. Unless there's a strong possibility that I'm going to get the job, then in my assessment it's a waste of time that might be spent elsewhere. – Mistah Mix Jan 28 '14 at 17:46
  • 5
    if your time is so "valuable" that you don't want to use a few of its hours to complete a coding assignment as often the last step before getting a job, i would not hire you. Is your time also too valuable to shower, shave and dress up before an interview? Sheesh, it'd be nice if jobs just came on a silver platter... – amphibient Jan 28 '14 at 20:49
  • 2
    I've always felt more suspicious about interviews where you don't do a technical test. How on earth can they tell the level of technical competence by just talking? Soft skills yeah, but a technical test requires a sufficiently complex and small task to accurately prove skill or learning capacity. Otherwise it will look bad on both - perhaps the candidate overestimated his skill, or the employer underestimated the difficulty of the job. – Juha Untinen Aug 26 '14 at 8:10
0

Few times I have received quite serious "mini projects" to do that took me almost all day to complete. These projects produced small applications that are directly useful as utilities or library functions. The produced code worked well, and I used to be deeply surprised when the companies refused the next round without much explaining.

Could it be an easy way to get a free day of attention from the professional? You need a task to be done, you post a job proposal for a job you never think to offer, you put the high salary proposal and send a "small home assignment" for every applicant. Then all you need to do is to pick between even multiple versions of the code that does that you need, maybe some really ugly but others may actually be really good, various people are looking for a job. That a great idea to grow your business productivity!

| improve this answer | |

You must log in to answer this question.

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