Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm interviewing for a position at an internet startup. The position relates to doing data mining on their very large database of user information. As part of the (long-distance) interview procedure which involves examining a subset of their database, they requested that I submit the code I used for analysis.

My main concern is that this code is "proprietary", for lack of a better word. I have no problems giving them all my code if I end up working for them, but considering that they could potentially take the code, not hire me, and use it on their larger database to generate revenue, I'm hesitant. Am I being just being paranoid? Is this a legitimate concern?

share|improve this question
8  
how many hours did you spend writing this code ? –  Matthieu Aug 4 '11 at 14:46
1  
Does that really matter? The inherent value is the same if it's four minutes or four days. –  dharel Aug 4 '11 at 14:48
7  
I think Matthieu's question is valid, actually. Ignoring for a moment that some people can do in an hour what it might take another a week, I'd be very suspicious if they asked you to perform a task that would take an average worker more than a couple of hours. –  David Ruttka Aug 4 '11 at 14:51
2  
How about putting a restrictive license on the code before you submit it? –  fejd Aug 4 '11 at 14:52
4  
@dharel : for me it would. more than a certain time would look like those unpaid internships where there is a promise of a job in exchange of free work, and not like a regular interview process. –  Matthieu Aug 4 '11 at 14:52

9 Answers 9

If you want the job, and if this is their process, you'll probably have to submit. I think you're wise to consider the possibility that they could "steal" your code and you'll have worked for free. However, if your code works and impresses them, they'll probably want more of it.

You should also weigh the potential earnings of keeping the code for yourself vs. releasing it to get the job.

share|improve this answer
3  
I like that answer. If it's specific to their database, what else are you going to do with it? Write it off as the price for interviewing. Also, chances are you're not going to be blowing their minds with your brilliance...Not being mean, but I know enough of that sort of people to know that they never look for jobs, or interview. –  Satanicpuppy Aug 4 '11 at 15:02
    
@satan - :) no offense taken, I doubt I will be either. –  dharel Aug 4 '11 at 15:05
1  
@dharel - I personally would not for a start up. If it was an established company then the risks are lower. But I have been burned by consultants trying to figure out a problem staging a fake interview, getting me to write some code to do what they need, then never hearing from them again. I found out from someone else at the company that they did implement at least some version of the solution I provided. –  Chad Aug 4 '11 at 15:56
16  
dude if they're getting their best code from a fake interview they'll be sunk inside a year anyway. –  Kevin Aug 4 '11 at 16:06
2  
If they DO take your code and run, you don't want to be working for them anyway.. –  Styler Aug 4 '11 at 21:13

Usually I don't care unless it's obvious they're trying to get work for free. Writing a bit of code using "live" data or the like is fine, being handed a task from the product backlog and being expected to implement it for free as an "example" is underhanded and that's when you should refuse (or send them a bill afterwards).

Use your own judgement on the matter, but if the job is worth it then I wouldn't be too concerned as long as they aren't blatantly trying to get you to do real work without paying.

share|improve this answer

If you only a few two hours in it, you can expect that their programmers could do it as fast and have most likely spent more time to do the interviewing and finding an interesting piece of work for you to do than they ever could gain by stealing your code. You question would only be relevant if you wrote some seriously large amount of code or had some domain knowledge that they don't have themselves. Stealing work would only start to pay if you get at least several days of professional code out of each interviewee. And you never know in advance if the code will have good quality.

share|improve this answer

You should bail on this job. Seriously -- if you truly think that there's even one chance in ten that the company is so nefarious as to hatch a scheme to get free labor through a sham hiring process, there's clearly a lack of trust between you and them. If you can't trust them with a couple hours' work, how can you trust them with your livelihood?

Alternately, try looking at it from their perspective: would you hire yourself without some measure of your skill level?

share|improve this answer

I've submitted small bits of code that only took a couple of hours to write but solved a real problem for people twice. Both times I did not get the job. Both times I'm not sure there really was a job.

In your case you might have the advantage that if you ever discover your code in their product you would probably have a great case against them in a lawsuit, so before submitting it, if you do, maybe you should do something to allow you to prove you wrote it, and when you wrote it.

share|improve this answer
2  
To expand - in the US, at least, this can be as simple as printing it out and mailing it to yourself (but don't open it!). Doing so gives you a sealed hard copy and a government-backed record of the date. –  Shauna Aug 4 '11 at 18:55

Don't spend too much time working on code during the recruitment process (i.e. more than a day on it) because that's essentially free work for your prospective employer. If such happens they're not acting very professional and you should consider gently running away from them.

Usually during these kinds of interviews, where you submit code to solve a specific small problem, it's only silly to assume that you'll have issues with it. Why?

  • If it is code that you've written for one, very specific, throw-away problem and the code may need to be refactored in order to be useful anyway.
  • In geographic locations where software patents are in effect it might be subject of patent infringement anyway and no amount of copyright will protect you from scare tactics used by greedy lawyers. (Disclaimer: I'm not a lawyer.)
share|improve this answer

If you are worried about people stealing your code, the best protection against it is to license it using the Creative Commons Licenses. I would personally choose the Attribution-NoDerivs 3.0 Unported. However you are never going to prevent people from looking at your code and re-writing it, this is the Kevlar vest you can put on to protect you legally from pirates trying to rip your code line for line.

If youre serious about this job, show them bits and pieces, or highlights of the code. Let them know what you're doing logically without giving away your trade secrets. If you practice good design in your coding, they will see it first handed in your code.

share|improve this answer

Am I being just being paranoid? Is this a legitimate concern?

I think you probably being paranoid. Or mercenary. Or both.

You are worrying about something that is highly unlikely to have any significant inherent value1.

You commented thus:

Does that really matter? The inherent value is the same if it's four minutes or four days.

Erm ... this is not a realistic. A 2 line "hello world" program is not the same as something you spent days, weeks, months working on. But either way, the real value of this code (i.e. the potential for making money) to YOU is most likely zero. If you make a fuss about the IP issues, a prospective employer is likely take this as a sign of things to come.

And on the ethics side, of course they have a legitimate need to see how you implemented the code. How else are they going to assess the quality of your work? They also have a moral obligation to treat your code as your property. But you don't need legal agreements and stuff for something like this. It is simply a waste of everyone's time for a trivial amount of effort.


Footnote 1 - The exception would be is that if your solution to the "interview homework" problem included a large body of private code that you spent months / years developing, and that you have realistic plans to make money out of it. If that is the case you should not be using it in "interview homework" questions.

No employer wants to employ a programmer only to get into fights about who owns the IP rights for critical code that may-or-may-not have been written by said programmer outside of work hours. And if your effectiveness as a programmer depends on your use of a bunch of your own private code, then your employer will have major problems if / when you "move on".

share|improve this answer

Yeah, imma chime in 2 years later in case someone stumbles upon this in a Google search like I did.

I would just submit it. What kind of IT shop does their programming by tricking interviewees into doing their work for them? That's just backwards. If your code is good enough for them to use, they'll probably hire you to write more of it. That's why they're interviewing you... to find out if your code is good enough for their application. It isn't like you're submitting source code for something proprietary you wrote for someone else... you don't own their database or their products, so what's it to you? Even if they do steal your code, that isn't gonna hurt you. You really have nothing to lose but your time, which... you're gonna lose that anyways. If you don't plan on giving them the code, I would just walk away from the prospect altogether. If that's their process that's their process. You're not going to gain anything by not giving them the code.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.