111

I am having an issue with this particular company's interview process and need some insight on what people think about this so that I can judge it more accurately.

Here's the situation:

After an initial conversation on a peer-to-peer recruiting platform and a phone call thereafter, I was assigned a take-home coding challenge that is using the same XMPP chat server that this company is using in production. I completed the assignment and went in for an on-site to present my solution and went through a standard behavioral/culture fit interview. From what I can tell, it went very well.

During the interview, however, they mentioned that the next and final step was for me to sign an NDA and give me access to the codebase so that I can implement a couple features on their site.

This caught me off-guard, because I have been actively interviewing for a while and usually when it comes to take-home project interviews, your work and your validation of the choices you made are enough proof of your ability to consider for employment. I politely questioned this, but they argued that it's different writing a project from scratch without any context to actually working with their codebase and seeing how they do things, which in theory I agree but I feel that it's not professional to use a candidate's work without compensation.

So my question is, how ethical or common is it to ask a candidate to implement a feature on your development site that can eventually be used in production?

Some facts that might help give context:

  • This is a small ~15-person startup in the San Francisco Bay Area
  • About half of the company's team works remotely, which may explain the extra vetting process
  • Relatively new company that launched its product very recently (and therefore excusing poor interviewing practices?)
  • They emphasized how they've needed these features for a while but haven't gotten around to them. During my presentation, the CTO insinuated that it's possibly a nice thing for me to work on.
  • The task isn't trivial but it isn't specialist work either. It's about a day's worth of work, which includes getting familiar with the codebase.

Edit: Thanks for the input everyone. At the end of the day I responded that I had some concerns with the task being assigned and offered to prove my skills by other means if they really needed an extra data point. Will update with their response soon.

Edit 2: After the email, we got on the phone and had a conversation about how I felt about the exercise. The CTO was understanding and receptive to the two alternatives I suggested: either 1) implement these features and pay a fixed, reasonable price for my time or 2) rollback a feature that has already been implemented in production and have me build the feature.

In the end however, because (in his words) we were so close to the final step, we started discussing compensation for the role. It came as no surprise that what was offered was far below the market rate. I thanked him for his time and we went our separate ways.

I sincerely want to thank everyone for contributing your perspectives on this matter. What a waste it would've been had I held my tongue and implemented these features only to find out at the last minute that we aren't even on the same page with the compensation!

11
  • 95
    this sounds like more than a test and has drifted to working for free. If they can't get an idea of how you would work in the codebase from the test, it's a bad test, they are overestimating how complex / amazing their code is, or they don't know how to hire developers imo
    – NKCampbell
    Mar 29, 2017 at 20:53
  • 67
    Agree to sign the NDA, but on the condition to work on it for no longer than X hours, at twice the usual rate. Suddenly, you're hired. Or not, but then you probably got out of a scam, so basically, you cannot lose. Mar 29, 2017 at 21:55
  • 35
    "Never attribute to malice when it can be sufficiently explained by stupidity or a misunderstanding." I am hoping that I'm in the wrong here, per Hanlon's Razor: en.wikipedia.org/wiki/Hanlon's_razor
    – danyim
    Mar 29, 2017 at 23:23
  • 2
    Glad this is resolved. At this point, perhaps adding an entry on glassdoor is appropriate? Perhaps one pointing here? Apr 2, 2017 at 2:05
  • 2
    Following on Matthew's comment, I doubt Glassdoors allows external links, but yes, adding a review on glassdoor would be helpful to many other future job hunters. FACT 1: They wanted you to work for free on new features as part of the hiring process. FACT 2: They wanted to pay a much lower amount than you expected once hired. Both those facts are very relevant to each other. And if a job hunter comes upon your glassdoor review of their startup, that person will know what to expect if he/she is asked to code new features for free. Apr 2, 2017 at 17:05

11 Answers 11

146

From what I've seen in terms of questions on this site, the practice is at least somewhat common.

That said; unless I was being paid for this "assignment", I would not do it. It is an unreasonable demand for your time and requesting you to deliver the very service they are interviewing for at no charge.

Doing an assignment to prove you can do what it takes is one thing, but at this point you'll be doing what paid members of the team are also doing and that means you ought to be paid for it.

13
  • 68
    @simbabque It is, and they waiters and cooks should not put up with it either. Trial days should be paid work.
    – Erik
    Mar 30, 2017 at 12:49
  • 12
    I think it is less about the time spent performing the work and more about the revenue that the company will then derive from the work performed. That being said though a company asking day(s) of a interviewee's time can be foreshadowing as to how they would respect your time after hiring.
    – JustinM
    Mar 30, 2017 at 15:06
  • 9
    @mfrankli the biggest difference is that it's very one-sided. The company just says "come here and spend 8 hours of your time for us." That's different from interviews, which are two-sided (an investment in the process from both sides).
    – Erik
    Mar 30, 2017 at 15:33
  • 50
    When it happened to a friend of mine and he asked about compensation, the CTO of that equally-small firm told him: "I want to see from you how much you are committed to get this position". My gut-reaction to this when we discussed it would be to answer by: "and I want to see how much you appreciate my work so pay me for it" Mar 30, 2017 at 15:45
  • 8
    Check with local labor law, but it might be that a trail day working on actual code that they intend to use in production would legally be required to be paid time. Personally I find this company unethical at best. If you are currently employed, they would expect you to take a full day off to work for them for free? I would have ended the interview right then.
    – HLGEM
    Mar 30, 2017 at 18:52
40

If you are feeling like this is some scam to get free work out of you, consider how much they've already invested in the interview process. If the whole goal was to get a couple hundred dollars worth of unpaid coding from you, would they have wound up ahead in this endeavor? Likely not. This is more likely a knee jerk reaction to a past poor hire who looked good on paper but couldn't work with code written by anyone else.

If you want to tank the process over this, it's your choice. I'd see that as an overreaction.

1
  • Comments are not for extended discussion; this conversation has been moved to chat.
    – Lilienthal
    Apr 3, 2017 at 6:40
33

For a production system??? No, they're trying to get free work from you. Put it this way - they stand to profit from your efforts, but you have no guarantee that you'll get hired!!! That's not a win-win, and you're really starting off on the wrong foot.

I'd decline with the above reasons, and bail if I got any friction as a result (that means they're systematically being jerks).

4
  • 2
    They technically want my work done on a development environment, but I can easily see them putting this feature into prod if it's working. They emphasized how they've needed it for a while.
    – danyim
    Mar 29, 2017 at 23:20
  • 15
    @danyim: "They emphasized how they've needed it for a while." You should add that to your question, it adds a bad impression about their intentions. Why didn't they implement it if they needed it for a while? Is a special skill required?
    – Chris
    Mar 30, 2017 at 5:42
  • 1
    @Chris Not a special skill required. I am assuming that they just haven't had the bandwidth to deal with it.
    – danyim
    Mar 30, 2017 at 6:07
  • 15
    @danyim Then they're absolutely looking for people to complete a task for free.
    – krillgar
    Mar 30, 2017 at 11:38
20

It is somewhat common, but mostly unethical. Some companies do this without the intention of hiring and paying for a top candidate, but maybe they can get, essentially, a free solution to a very specific, discrete problem, or at least can reverse engineer the right direction they should be going based on the work that this candidate produced for them.

Completely agree with Erik - if they want you to produce work product for them, they should be compensating you for your work.

Stop asking design candidates to redesign your product. It's unfair and unethical

1
19

No, they need to pay for your time.

Either that or they need to ask you to implement a feature that their team has already implemented themselves and already placed in production.

After all, if their objective is to truly evaluate your work, then they should compare it to work that has already been completed (Not that even this comparison will be fair to you since you can not be as familiar with their code base as they are, but at least if they refuse, it will show you their true underlying intent). This is California. It's an at-will state. Also, they could just hire you as a temporary independent contractor.

Also, you should check their glassdoor ratings, to see they asked this of others. And you should double-check that their NDA doesn't contain weird clauses.

They can not ask you to work on new features for free. That is simply unethical.

2
  • 1
    I fail to see how this being an existing or new feature changes the scenario. In one case, they don't profit, but it still sounds like a not-insignificant amount of work for which the asker should be paid. Mar 31, 2017 at 15:58
  • 1
    Well yes, you're right of course. I've worked on a project like that once, delivered successfully (on duplicate functionality that they already had), didn't get the job, and didn't get any constructive feedback either. And I also agree that there is something wrong with that too. But that's a much thornier problem to tackle, and at the same time, I wanted to make it obvious to the OP that this employer was more interested in getting the new features than actually evaluating the skills of the new candidate, or they would have asked him to code existing functionality instead. Mar 31, 2017 at 20:24
17

Another perspective which nobody has covered so far, is I would be very concerned that the company is not properly considering ownership considerations of this code they want you to write.

Who does the code belong to?

I cant speak for the details of law but I understand in most countries, if you wrote this code and they didn't pay you for it, it would remain your own property and would be problematic for them to use it, particularly if they do not then hire you. Most employment contracts deal with this by saying the written code belongs to the employer, but this requires consideration (that they pay you) to be acceptable.

Who has liability for the code?

Conversely if your code seriously malfunctions and destroys their services, you may find you have additional liabilities given you are not an employee.

Working on real code with no employment contract seems really dangerous.

Is the code going be to used in production?

I would suggest asking explicitly if they plan to use this code for production use, and if so I could not recommend writing it without an actual contract involving being paid, and hammering out liability and (implied) warranty issues explicitly.

If it is just an example of how you modify existing code however and they do not plan to use it I would probably go ahead assuming the time commitment is not excessive.

14

I'm not sure if this practice is Australia specific - but here we have a (usually) 6 month period after employment acceptance called a probationary period. During this time, the company can choose to let an employee go with little to no reasoning.

To me, the second assignment task they have give you should be done during this period. They have already established your skills. The probationary period would usually be when they find out whether you fit in the team or can understand their codebase enough to be useful.

So I don't think what they are attempting to get you to do is particularly ethical. As others have pointed out, you would be doing work that you coworkers are being paid to do. So why wouldn't you be?

6
  • We have the same procedure over here in Germany (both sides can cancel the contract with short notice during the probationary period). Mar 30, 2017 at 16:34
  • 1
    This is common with larger corporations in the US as well but the probationary period is usually more like 30-90 days.
    – user48276
    Mar 30, 2017 at 18:04
  • We have probation here in the UK too - typically 1-3 months (depending on the job) but can be extended more or less indefinitely if an employee isn't quite cutting it (but isn't so bad as to be let go).
    – RB.
    Mar 30, 2017 at 20:03
  • 4
    In the US, the majority of states operate under at-will employment laws, and thus effectively with an infinitely long probationary period. Mar 31, 2017 at 20:38
  • 1
    @Timbo, the flip side, though, is that with discrimination laws as they are and a litigation-happy populace, there is effectively a ZERO day probationary period. If you hire someone and fire them three days later, they can still sue you for discrimination and cause a lot of hassle.
    – Wildcard
    Apr 1, 2017 at 1:43
8

I have done this before

The only problem with this is that you are not being paid. When an employer makes me an offer like the one you mention I respond with "Sure. Let's go with a pro tempore rate of (fairly high estimate of what I think doing the task is worth if I was freelancing) and then we can renegotiate after the task if you decide you're going to bring me onboard. Is that acceptable?"

If the communication isn't already happening via email, I would initially say something like "Yes, I'm pretty sure I'll be able to accomplish X task for you. I'll shoot you an email about it when I get home."

I've not had anybody outright refuse me payment when I tried this. I've had a couple acceptances, a couple counter offers, a couple variations on 'eh, we'll just hire you', and a couple times where they wouldn't respond to the email but would keep asking me to do the thing in not-writing or would respond with a vague 'we'll talk it out' and then more verbal affirmations with a severe aversion to putting anything in writing. Avoid that last category, they're just trying to scam you for slave labor.

I haven't done this in the software industry, however. It might be different there, though I doubt it and I don't see any reason why it would be.

4
  • In which industry has this happened to you?
    – danyim
    Mar 30, 2017 at 23:06
  • @danyim construction, also ?manufacturing? I guess (like, assembling special purpose machinery for a variety of food processing and other industrial production facilities). Also pizza delivery, weirdly. And one time writing for somebody else's RPG product but that was one where it didn't work out and got really sketchy. Mar 30, 2017 at 23:59
  • An added advantage of @the dark wanderer's approach is that you get an idea of management's approach to compensation in general (stock options, etc.). Although I think probably that question is pretty much already answered, and based on mistakes I have made in the past I would look elsewhere.
    – plasmo
    Mar 31, 2017 at 2:25
  • Good answer. Too bad it's too far down to get the deserved upvotes. Stating how to make their request work is infinitely better than refusing it, and can even make you look more professional than silent compliance.
    – Peter
    Apr 2, 2017 at 17:17
3

It seems unlikely that they are using this as "free work" - unless the task is for specialist skills which the team don't currently have, having candidates complete development tasks will be orders of magnitude more expensive than completing those tasks internally.

My issue here would be the time commitment - Its well established that it takes some time before new team members become a "net gain" on team productivity. As a result this exercise is either going to be relatively lengthy, or candidates will be very reliant on assistance from existing team-members. While this might impact the usefulness of the exercise, ethically I see no difference between spending time on exercises, and spending time with real code.

3

Many companies need to maintain programs that may have been written in absolutely dreadful fashion. They may consequently need someone with the ability to maintain one or more of those particular programs. While some people are better than others at reading programs in general, certain programmers may also "click" with certain programs. Given two prospective programmers, one of who was absolutely brilliant but was totally stymied by the particular piece of code a company had to maintain, and one of whom wasn't generally as skilled but, for whatever reason, was able to look at the code and instinctively understand what was going on, the latter candidate may be a much better fit for the company's needs. There would be no way a company could find that out, however, without seeing how the candidate would fare given the actual code in question.

That having been said, I would suggest that there should be a very clear agreement that the company will not make any production use of code written by the candidate unless the candidate gets paid for having written it. For that reason, it would likely be best if the company asks the candidate to do something that has already been done satisfactorily by someone else, and tell the candidate that. If the goal is to find a candidate with a unique ability to understand a particular piece of arcane code, make it clear that the candidate should focus on showing an understanding of the existing code, rather than showing how new code should be written.

2
  • Or just pay them. It's a few hundred dollars. Suck it up. You spent more than that already on the payroll for the hiring manager and phone interviews for this candidate.
    – Wildcard
    Apr 1, 2017 at 1:46
  • @Wildcard: The company shouldn't invite the candidate in for this kind of evaluation if it wouldn't guarantee that demonstrable competence with the code would yield a job or else some sort of compensation. On the other hand, if the candidate can tell early on that there's no realistic possibility of success it may be just as well for all concerned if the candidate admits that early on than. Continuing to pay the candidate for efforts which aren't going to be successful would encourage the candidate to keep slogging away and delay the company's search for an alternative candidate.
    – supercat
    Apr 1, 2017 at 3:28
1

I am going to take a different stance here. Let's compare this to the hiring process of a fancy cafe or restaurant. At least in Europe, you get a work contract in these places, and a full salary, like in any other job. A lot of restaurants (maybe the less fancy ones) mostly use employees that are not always fully trained, but rather work with students as waitresses.

In Germany it is not untypical to ask potential hires to come in for a shift before signing the work contract. You would essentially need to bring your own uniform (like a white shirt and black pants/skirt) and work there for one shift, possibly during an event they are hosting, or something else with enough work load to see how you are doing. Of course you would have to ask a lot of questions, and get to know some things, like how to they assemble a tray with a cup of coffee, where are the glasses for this specific wine, or how does the register work. But you'd have to ask those anyway, later.

It's a good chance for the employer to see you work, possibly under pressure. It's a good chance for you to look at the processes and the equipment that is there, the work culture and such. Even if you don't get paid for one day of work, you get a unique insight. I think the same thing applies to a developer.

I would ask them to not just implement a feature, but to do it on-site. Let them put you in the office and have a trial day. If they decide that you should do an actual ticket with a real feature on real code, this is your chance to see how their code base looks. Usually companies don't give that insight. Some companies don't even let you see the offices during the interview.

Even if you don't get paid for a day, you at least learn a lot about that company's culture, atmosphere and the product you will be working on. I believe that this is invaluable, and well worth one day of salary. They'll probably pay for your lunch, so you at least get that. And you'll meet the team for something real.

I think this is great, as it lets you go heads-first into the real job, as compared to signing a contract and then sitting around for the first two weeks because no-one gives you anything to do.

Don't see it as they are getting free work. See it as I get to try this job out and if I don't like it I can still say no.

9
  • The OP doesn't mention 1 day's work, but implementing features, which could take longer. In the OP's jurisdiction, there is at-will hiring and firing in any case, so the risk/reward is already quite far in employer's favour, whilst the OP could still try out on the projects and walk away if they dislike the job. I think this answer would do better if it made clearer what the differences are between use of probationary period/at-will and the OP's situation, and why that might be still worth considering. Mar 30, 2017 at 12:49
  • 1
    @neil actually the OP said that it's about one day work in this comment. But I agree that there is a huge cutlural and jurisdictional difference between California and Central Europe. I'll see how I can get that in.
    – simbabque
    Mar 30, 2017 at 12:52
  • 3
    There is a massive, massive difference between manual labor and original intellectual creative output. The proficiency in the specific work tasks for a programmer can easily be demonstrated with samples, test exercises and a myriad of ways that do not involve creating "live" work product that the company profits from without compensating the person. You're comparing apples to oranges here. Mar 30, 2017 at 14:24
  • 7
    If they're going to have him on site, producing work product for the benefit of the company, he should be compensated for his time, then. You don't have to give free labor to a company to secure a position. That is unethical. Mar 30, 2017 at 14:36
  • 1
    I don't agree with this because I am not a junior-level engineer who would most benefit from your advice. I could just as easily "try the company out" while getting paid and leave on my own terms if things are truly bad.
    – danyim
    Mar 30, 2017 at 19:35

You must log in to answer this question.

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