Don’t Sign An NDA Before A Programming Job Interview

When looking for a job, there are a lot of people who are wasting time and not serious about hiring someone great. If someone has a psychopathic/parasitic personality type, they actually will be frustrated if they hire someone really talented, rather than appreciating their contributions. If someone is rude to you during the job interview process, that’s a dead giveaway that they will be rude once you work for them.

I already mentioned that programming interview tests and assignments are almost always a waste of time. If a programming assignment is too simple, then it isn’t a real test. If it’s too long, then it’s a huge time-sink just for an interview. Multiple-choice screening tests tend to have mistakes or they focus on obscure language trivia. There are too many times that I did the test or assignment, did well, and didn’t even get an interview. My favorite is when I take a defective multiple-choice test, get 90th percentile, and the headhunter says “The client doesn’t want someone who’s 90th percentile. He wants 99th percentile.” Even more offensive, sometimes the interviewer is trying to trick me into giving him free consulting with his assignment, taking some problems he couldn’t solve and turning them into an interview assignment. Now, I don’t bother.

What’s the point of having a CS degree from a top university and more than 10 years of experience if every hiring manager is going to treat me like a completely unqualified fool? That’s a sign that writing software is not a true professional career. If the hiring manager isn’t willing to talk to you for a few minutes to figure out if you’re intelligent or not, then he’s probably clueless.

I do give code samples. For the exact same code sample, I’ve had some people say “That’s a great code sample.” and others say “That’s not good enough.” Again, it reflects more on the cluelessness of the interviewer, more than me doing something wrong.

I’ve noticed another trend. Some flaky startups demand you sign a non-disclosure or even a non-compete as a prerequisite to an interview. I’ve reluctantly agreed a few times, and regretted it. When someone demands that you sign a non-disclosure agreement before an interview, their idea invariably is incredibly stupid and not worth stealing. For example, I’ve signed several NDAs for someone making “a real estate listing website”. There literally was nothing more to their idea than “I want to make a real estate listing website.”, their spec was a copy of Zillow, and they were demanding an NDA! Do they realize how many people are entering that area?

One person even demanded a non-compete before agreeing to an interview! Why is that a bad idea? If his idea is incredibly vague and ill-defined, a “non-compete” could be interpreted as almost any other programming job! How can I agree to not compete with an idea that hasn’t been disclosed to me?

Also, for a contract to be valid, there has to be consideration, an exchange of value. If I’m signing a NDA in exchange for an interview, that isn’t a valid contract. I have to receive some tangible benefit for it to be a valid contract. Even though it may not be an enforceable contract, I don’t want to deal with someone who’s going to sue me over something trivial, especially if I later find a job that could be interpreted as related to his stupid idea.

When someone demands a non-disclosure agreement before telling you their startup idea, that’s a dead giveaway that they know nothing about running a successful business. It isn’t enough to have an idea. You also need the ability to execute.

It’s also a type of egoism, on the part of a non-technical startup founder. The non-technical startup founder brings nothing to the table, other than his ability to raise money, contacts for potential customers, and his idea. Therefore, he treats his idea as if it’s something incredibly brilliant and valuable. The nontechnical founder has been thinking about nothing but this idea for months, causing him to have an exaggerated sense of its importance.

If you’re a startup founder with an idea but no competent technical co-founder, then your startup is doomed. Unless you have a technical cofounder that can develop version 1.0 by himself in a few months, your startup is worthless. (Version 1.0 is frequently called MVP or “minimum viable product”.) If you are not technical yourself, then you are almost guaranteed to hire a good liar instead of someone who is going to create a great product.

An NDA is insulting. It says, right away, that they assume that I’m going to cheat them, rather than someone sincerely looking for a job. Do I have nothing better to do than steal your stupid idea? An NDA is an implied threat to sue someone. I don’t like it when the first thing someone does after I meet them, is threaten to sue me.

Also, I went on a few startup interviews that DIDN’T require a NDA for an interview. They had good ideas or somewhat viable ideas with a legitimate chance of success. It’s only the true fruitcakes, who demand an NDA for an interview.

There is one exception. If you get an interview at Google or some other established business that demands an NDA for an interview, then you should sign it. My “no NDA” rule is primarily directed at startup interviews. Google isn’t going to tell you the details of their search engine algorithm on an interview; what do they think they’re accomplishing with the NDA, other than making themselves seem more important than they are?

Also, to avoid confusion, it is acceptable to sign an NDA or a limited non-compete at the offer stage. It’s insulting when someone demands that before an interview. My favorite clause in an employment contract is the “non-disparagement clause”, forbidding you to say anything negative about them. Most of the people with a “non-disparagement clause” in their employment contract did some shady things.

I’m adding a new jobsearch rule, “Don’t sign an NDA as a prerequisite to a startup interview.”, in addition to “Don’t take programming tests and assignments.” These rules exist to help me avoid wasting time and energy on clueless and evil people. My primary reason is that, by requiring an NDA, the startup founder is identifying himself as someone clueless. It’s a bad idea to work for someone clueless. Such an NDA probably isn’t enforceable anyway, because there’s no consideration to make it a valid contract. I don’t want to deal with someone who might sue me over something trivial, especially if I someday find a job that might be vaguely interpreted as related.

There is one problem. If I’m the only person who refuses programming tests and NDAs, then I look like “not a team player”. If a lot of people start refusing, then employers might start to get the message “This is an insulting thing for us to demand of applicants.” The economy is bad right now, making it hard to take a principled stand. I’m doing it anyway, to avoid wasting time dealing with clueless people. After an interview with someone abusive, I feel frustrated for several hours afterwards.

These rules have been learned the hard way, rather than a result of me being stubborn. I’ve done many programming tests and assignments, and it never led anywhere, and now I refuse. What was the point of doing all that work for a CS degree, if many employers demand a stupid screening test? I know that I’m a great programmer, based on my education, raw ability, and by comparing myself to coworkers. It’s hard to measure that in a flawed multiple-choice test or short assignment. I’ve signed several NDAs for startup interviews, listened to some incredibly stupid ideas, and now I don’t do that anymore.

22 Responses to Don’t Sign An NDA Before A Programming Job Interview

  1. Anonymous Coward May 21, 2013 at 4:56 pm

    I’ve been bitten twice by the programming assignment that was in fact real work.

    The first company that pulled this trick on me was a 3 man company in the countryside. I was suspicious because the assignment seemed like real work. Anyway I did it one afternoon at home and emailed it to them. I eventually went to face-to-face interviews and spent the whole day at the company. The company consisted of one Visual Basic programmer, one recent graduate and the boss. The solution I wrote was in C/C++. The Visual Basic programmer told me they were moving to C/C++ as Visual Basic didn’t cut it. He also said I was the only person to submit a correct solution and *they were going to use my code in their software product*.

    Anyway a month went by and I didn’t hear from them. Late one evening I got a phone call from the boss and he told me they were having a problem and could I visit and solve it for them. He said he would pay my train fare. I told him I couldn’t really do any more free work for them. The next day I got a snotty rejection email.

    So even though I was the only one that submitted the correct solution I still didn’t get the job.

      • They would just laugh at him. They would claim their current production code has nothing to do with the programming assignment they gave him. If they weren’t cheapskates, they would have hired him as a short-term consultant. Unless you’re prepared to sue (and lawyers are a waste of time and money), write it off as a loss and a learning experience. Employers know that it’s expensive and impractical to sue them, giving them leverage to cheat you.

  2. Anonymous Coward May 21, 2013 at 5:03 pm

    About 5 years ago I got talking to a manager I met on the joelonsoftware forum. I told him none of his jobs was suitable for me, but I really liked his stated company’s attitude to software development. That was it. I did email any further and he didn’t email me.

    For some strange reason he remembered me and out-of-the-blue, 5 years later he emailed me and recommended I apply for a job at his company. Well I was quite flattered he remembered me. So I looked up the job. It has a pre-interview assignment. Again it looked like real work. I had been bitten before, but I thought that I shouldn’t become all paranoid just because it happened once before.

    Anyway the work was writing a parser. I’ve written quite a few parsers in my time. It took me a good few hours. I understand that a fair amount of programmers probably wouldn’t be able to do this work. I tested my code thoroughly and it worked fine. I was quite pleased with it. It was an efficient piece of code.

    I emailed my solution in one evening. First thing in the morning I got a rejection email. As the job had only just been posted, I suspect I would have been the only applicant at that time.

    I emailed the manager and expressed surprise. I asked him to give details how my solution wasn’t good enough. I got no specifics from him at all.

    I strongly suspect it was just a scam to get some free code, he was too dumb to write himself.

    This is nasty stuff, because if enough people try this trick it will discourage people applying for real jobs. Shame on this scumbag.

    • I have another offensive story. I went on one interview, and the guy spoke to me for just a few minutes. All he did was ask my salary expectations, and that he wanted me to come back another day for a programming test. I was offended, because he could have accomplished that with a phone screen, rather than making me commute 2 hours for a 5 minute interview. On the other hand, I’ve got nothing else to do, and might as well waste time on it.

    • For what it’s worth, people do a similar scam in the translation business. They send out snippets of text to be translated from language X to language Y as a “test”, when in fact all they’ve done is break a real project into individual paragraphs to be translated as tests by numerous people who are hopeful and/or don’t know any better.

      My suggestion is, if you think a coding assignment is real work, make sure you put a bug in the code if possible and/or structure it in the most complex way possible that still looks good e.g. for a parser, definitely use YACC.

      As an alternative, when you send the code over:
      (A) make sure your copyright is on it.
      (B) apply the GPL to it.
      (C) post it to your personal website.

      That way, if the douche bag you’re interviewing with tries to use it, he’ll be violating the GPL plus anyone can use the code is a real (free) project.

  3. Matthew Walker May 21, 2013 at 6:02 pm

    If a programming assignment is too simple, then it isn’t a real test.

    Not in my experience. A fair number of literal non-programmers do get through the screening process to an on-site interview. I have seen it, not infrequently. So you give them what Jeff Atwood called a “fizzbuzz” test: Just prove you’re a vertebrate, and we’ll continue the interview.

    But if somebody wants you to write non-trivial, commercial-quality code for the interview, yeah… no. That’s crazy. A half an hour worth of coding, tops. Not a lot of guys can do enough to be worth stealing in half an hour.

    I’ve had guys ask me to code stuff on the whiteboard and talk them through why I did what I did. That’s cool. You want to know how somebody thinks about coding.

    • I certainly don’t mind fizzbuzz-type screening questions. Those are reasonable. If someone asked me fizzbuzz and another similar question as a written pre-screen, I’d do it.

      What I hate are questions that test obscure language trivia. For example, questions regarding dynamic_cast in C++. I’ve never seen dynamic_cast used in production C++ code.

      I also hate design pattern questions, because they never accept my answer “I don’t like design patterns. They are too general to be useful. If you use too many design patterns, your code starts to become a mess of extra classes and extra methods.”

      Here was one interview project. “Write a trading system in VB/Excel that connects to Interactive Brokers. Write a VB/Excel script that executes VWAP trades.” Seriously? I offered to do it as a 1 week consulting project, and he declined. That guy was flagrantly looking for free consulting. I also can tell, due to the way he got angry when I refused.

      What happened to the technical interview? I’ve been on 50+ interviews in the past 6 months while looking, and there’s been almost no serious technical interviews. Most interviews don’t get more sophisticated than “Do you have 3-5 years of experience in X? No? Why are you wasting my time?”

  4. Anonymous Coward May 21, 2013 at 6:44 pm

    > A half an hour worth of coding, tops. N

    Several years ago I applied for a job at Microsoft, UK.

    There were 3 coding questions to be submitted pre-interview and one whiteboard coding question.

    At the time I was running a software business and taking a part-time university course. So from time to time I would be asked to add enhancements to my software. I also had about 5 – 6 assignments per year for my university course. I was reasonably busy and had the belief interviews shouldn’t consume too much of your time.

    The interview was in a different city to where I live. I had to wake up around 5 am to get to the interview on time.

    I interviewed with the whole team. Something like 6 – 7 different interviews. Each interviewer asked 2 whiteboard coding questions. I was even questioned through lunch!

    I was thinking it was getting to be a bit much.

    Anyway at the end of the day I was asked to write practically a mini computer program on the whiteboard. It simply would not have fitted. There was no effort to reduce the size of the task down. Then the manager started bashing loudly on his keyword. I realized that the guy was taking the piss. My mind stopping working. I didn’t answer his question at all. I was getting tired and he was obviously bashing loudly on his keys to distract me.

    Two weeks later I got a phone call from their HR woman. She asked me if I wanted interview feedback. I said I didn’t. Eventually she convinced me and I accepted.

    I was surprised at some of the negative comments. In fact I was surprised that some of the interviewers were picking on everything but my coding ability. One interviewer (a QA guy) even bothered to comment I delayed for 30 seconds before answering one question! I was offended that I interviewed at the largest software company in the world and they couldn’t care less about my programming ability. Eventually I complained. Then the HR woman said the manager said I was so stupid I didn’t realize I got his question wrong. I wasn’t stupid, I was tired and I didn’t bother to answer his question at all.

    • Wow! This post generated a traffic spike! Most of the comments are about programming interview tests, and not the original subject, “Only people with stupid ideas demand you sign an NDA before interviewing for a job with their startup.”

      I left this comment on Captian Capitalism’s blog. (He promoted my post!)


      Well, for really simple tests like fizzbuzz, I always agree to do it.

      No, I’ve never been responsible for hiring. With my ability to evaluate intelligence and personality type, I should be great at it, but I’ve never had the opportunity.

      What I hate are programming assignments. I do it, I know I did well, and then I don’t get an interview.

      I also hate the multiple choice screening tests. They always test obscure language trivia that I don’t use, and they have mistakes or really obscure loopholes that makes me question the intelligence of the author. (Seriously, this question expects me to know that really obscure thing? If you know that really obscure thing, the correct answer is d; otherwise c. What do I choose?) Brainbench is the most annoying, but there are others.

      Once, I went on an interview, and after the interview he gave me an assignment and implied that I’d get an offer if I passed. It took a few hours, I did it, I know it worked, but no offer.

      I have the opposite problem as the hiring manager who complains interviewees can’t pass fizzbuzz. I know I’m one of the top 1% performers, but my resume gets drowned out by all the chaff. For 95%+ of resume submissions, I don’t make it past the keyword screening phase.

      I don’t have any connections or “networking” (another thing Captain Capitalism hates), so I’m SOL.

      Most of my experience is in C/C++, which nobody uses anymore. I get zero credit for that experience when applying for jobs in PHP, Java, .NET, or other things. They aren’t that much different. You still have to understand the requirements and understand the legacy code, and that skill is transferable, but nobody considers me. So, even though I’m one of the top 1% performers, I’m an unemployable loser.

      There’s also something that nobody ever explicitly states. No matter how much he claims to want the best, a hiring manager ALMOST NEVER wants to hire someone more skilled than him, because he’s insecure about his own job. Paradoxically, being on the top end of the experience and ability scale makes me unemployable.

      I’m never even asked fizzbuzz or sincere technical questions on an interview! It’s all resume keyword matching! I haven’t gone on a single interview where the interviewer was genuinely evaluating my technical ability! That wasn’t the case 5-10 years ago when I started.

      BTW, hooray for Captain Capitalism! He sent me over 150 visits today to that post! Just in case you wanted to know how much power you have to promote a link. According to piwik, I got 5x my normal traffic today.

      I’m doing my part to promote the decline! Instead of being gainfully employed generating wealth that criminals can steal, I’m going on the occasional interview, browsing the Internet, and working on some personal projects.

      The thing that offends me is that I can’t find *ANY* job. I’d take something entry-level just to get back in the workforce and get more experience. I can’t even get that.

      Maybe I should get a job as a security guard? I could work on my blog, write a book, or work on my own projects in the idle time.


  5. lol, I agree.

    I had a phone interview and the guy — in a very thick Indian accent, which made it difficult to understand what he was saying — asked me how the C# memory management worked. He then asked me to dictate SQL code to him… over the phone…

    I don’t miss having missed that “boat”.

    • Another amusing story, another Indian interviewer:

      Indian: How much SQL experience do you have?
      FSK: I have 10 years of experience, about half of it working with SQL.
      Indian: Sorry, I’m looking for someone who’s only worked on SQL and nothing else.
      [end of interview]

      • Another interesting bit from Captian Capitalism’s blog:

        A question comes to my mind regarding IT guys vs HR and other hiring practices:

        Why isn’t there more IT guys that start their own business instead of trying to get a job or a gig ?

        It isn’t easy as it sounds. If you’re targeting individual customers, you need a *LOT* of customers before it becomes viable as a solo business.

        If you want to raise capital, VC is another headache. Great programmers don’t have the personality type the VCs are looking for (and if they did, they wouldn’t be great programmers). If you partner with someone non-technical, more likely than not, you wind up partnering with a Steve Jobs-type psychopath who winds up controlling the business. (Zuckerberg is hailed in the mainstream media as a genius. His biggest accomplishment was cheating all his early partners, especially Eduardo Saverin.)

        If you target corporate customers, you’re SOL unless you have contacts.

        If you’re a consultant, you’re just a higher-paid hourly employee.

        Even if I do successfully bootstrap a business, part of the taxes I pay subsidize banksters. Then, the banksters will prefer a good Ponzi like Twitter or LinkedIn or Facebook, rather than a fundamentally sound business.

        If I want to save up my salary and use that as seed capital, high taxes make that hard.

        The State severely restricts the economy, making it very hard for talented workers to start or bootstrap a business.

        High taxes and a corrupt monetary system are one of the big reasons talented workers can’t easily start businesses. Software isn’t heavily regulated, but frivolous lawsuits from software patent trolls are a big problem.

  6. In an interview, you are interviewing them as much as they you. Just walk away from any interview that doesn’t treat you like a human and demands too much prep work. Politely conclude any interview where someone on your team or in mgmt appears to be incompetent, rude, evil, or devious.

    The key is to weed-out places of employment that you’ll just have to leave after a short time due to horrible work climate/horrible people/horrible mgmt.

  7. Anonymous Coward May 22, 2013 at 7:45 am

    I had one and half days of interviews at Microsoft in Denmark.

    For the second day I actually did well. During my interview with the manager, I got every question he asked me correct. At the end of the interview he asked one question. After some working out I gave the answer. He then repeated my answer in different words and said he had to rush to the next interview.

    I then had two more interviews. The last one involved a difficult problem and I had to write a large amount of software on the whiteboard. I could tell the manager didn’t understand what I was writing. He then trotted out the answer in a French accent, which actually didn’t match his question. I guess he wasn’t that technical and/or wasn’t fluent in spoken English. Anyway I had to write a massive amount of difficult code for the precise question he phrased me.

    It was all wasted. My last two interviews were pointless and I was told I had got the last question incorrect in my third from last interview. That is untrue. I said the correct answer and all the manager did was re-phrase it.

    As this interview was in a foreign country and involved traveling, it was a waste (in total) of about 4 days of my life. I was angry at the time that the picked on one wrong answer, which is fact was correct. This is seriously not nice.

  8. Pingback: Have an idea? | Photonic Culture

  9. Funny, a “major” real estate company asked me to sign an NDA for the interview. I declined. There was also a code assignment after an initial phone call (but before the NDA), not overly difficult and thus not a big deal.

    Out of principle I don’t want to be under an NDA, i.e. in a position where I cannot speak or act freely. Also the NDA covered confidential information that maybe wasn’t even divulged during the interview. So basically, if I signed the NDA and ever used or talked about something that they considered their confidential information then they could pursue me in court. Doesn’t that basically turn into a non-compete then? Adding further insult, the main HQ of the company is located in another state so if they were to pursue me in court, I’d have to appear in that (distant) state.

    Don’t sign NDA’s for interviews.

  10. Have had the same issue, immediately cut off interview when I realized it was ‘free work’

    The worst case: very small company breaks down needed code into API’s then empty classes, and uses interviews to build their prod code!

    Always copyright your code, NEVER sign an interview NDA

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>