Offensive Interview Programming Tests And Assignments

Almost every employer asks for a programming test. It’s pretty insulting.

What’s the point of having a CS degree from a top school when every employer is giving me a programming test? Almost all these tests are simpler than the work I did when in school.

A competent interviewer should be willing to spend a few minutes talking to someone and evaluating them. If you can’t evaluate technical ability in a few minutes of conversation, then you shouldn’t be making hiring decisions.

There might be a lot of unqualified fakers out there. Many CS programs allow programming assignments to be done in teams. That’s a huge mistake. If programming assignments are done in teams, that enables someone clueless to team up with someone competent, and earn a degree they shouldn’t have. Then, you have lots of unqualified people walking around with degrees.

Sometimes, it’s a multiple choice test with errors, or tests that use really obscure language features. Then, I have to guess the intelligence of the interviewer. One example question in C/C++ is “Does ‘if (x=3)’ … compile?” Technically, that’s legal code, but usually a bad idea. Any decent compiler will give a warning, and it’s good practice to make sure your code compiles with zero warning. Another example C++ test question is on multiple inheritance, which you should almost never use. I’ve never seen production code that used multiple inheritance where both base classes had a function with the same name, but that question is on many C++ programming tests.  Another example question is “What happens if you modify a data structure while looping over it with foreach?” The correct answer is “You’re an idiot if you write code like that.”

Sometimes, it’s a project that would take awhile, even when I already know the language well. Do you really expect me to waste a few hours/days for your stupid interview assignment?

I don’t have Visual Studio or Excel or SQL server on my PC at home. Why are you demanding I install those to do your stupid assignment?

Sometimes, the “assignment” is an attempt to get free consulting. One employer demanded I learn a 3rd party trading API and write some sample code. He was planning to convert his program from one broker to another. If I wrote the sample code for him, then he could cut+paste, and then he wouldn’t need to hire me!

A pro-State troll might say “FSK doesn’t want to do programming tests because he’s an unqualified loser.” I’m insulted by stupid assignments that usually have little similarity to real work. If it’s too short, it isn’t a valid test. If it’s too long, it’s a waste of my time. I’m offended by thinly-disguised attempts to get free consulting. Multiple choice tests frequently have errors.

I’m insulted by interviews that demand a programming test or assignment. There probably are a lot of unqualified losers out there, but there are other ways to evaluate someone. Most of those jobs aren’t desirable anyway. I’m filtering out clueless people by refusing to do the test. What’s the point of having 10+ years of experience and a CS degree from a top school if everyone’s asking basic skills questions on every interview? That’s an indication that writing software is not a true professional career.  If prospective employers aren’t treating you like a professional, then you probably made a bad career choice.

18 Responses to Offensive Interview Programming Tests And Assignments

  1. I’ve been hit a couple of times and had to do free programming work as part of an interview test. You can tell the difference. It rankles to have time stolen from you.

    In the first instance, an employee of the company told me during the interview they were doing to use the code I wrote for their pre-interview test in their software. I should have objected at the time. In the end I didn’t get the job because I refused to do more free work about a month after the first face-to-face interview. The company head telephoned me and asked me to visit again because they had a problem that needed to be fixed!

    The second time around I was asked to write a parser for a specific grammar. I guess amateur programmers can’t do this, but I can do it easily. Immediately after I sent the correct solution to the interviewer by email, I got rejected. No specific reason was given. It was odd because I didn’t apply for the job. The interviewer picked me from an old forum post and asked me to apply. He already knew some of my work background. Very suspicious.

    Some kind of interview test is OKAY. But some companies go overboard. In the worse cases they require 4 – 5 days of your time! Microsoft are the worst offenders in this regard. And even if you get every single question correct you still won’t get the job.

    Testing has gone too much in the wrong direction.

    You can’t say I’m a rotten programmer either. I run my own software company and I had hundreds of emails saying how much people like my software.

    In fact one of the largest, most famous organizations in the whole world emailed me and told me how much my software has helped them.

    Ironically FSK has written about this organization, so this should give you a clue who they are.

  2. I’ve written software since my early teens. I’ve written a vast amount of software in my life. If you travel to certain parts of Europe and use a credit/debit card, then it is likely my software is processing your transaction. That is back in the days when I worked in the corporate world.

    My own mini software company has sold software to practically every famous company, government and bank in the world.

    Yet, I have been rejected from the same companies and banks that have purchased my software on many different occasions.

    I’ve now given up applying for jobs and live off the income my software company products. Obviously when I was applying for jobs it was in the earlier stages of my software company and at a time I didn’t think it would provide a sustainable income.

    The thing is that a lot of companies copy the Microsoft and Amazon style of interviewing.

    If you go on a handful of these absurdly long interviews with 4 pre-interview assignments and 3 different trips of their offices and then for some reason don’t get a job offer, then you will end up so tired and so pissed off you will simply just not bother interviewing again.

    This is wrong.

    Employees from Microsoft and Google have started that you need to attend 3 different interviews before you get a job offer. What is going on? Maybe they pick 4- 5 very strong candidates to interview for every job. So they require 4 good candidates per interview. So that is why they tell people to interview again and again.

    At one Microsoft interview I was told I might have to interview with 2 – 3 more groups before I get one job offer.

    And each interview process requires the same lengthy technical questioning.

    At some point good candidates will get pissed off.

    These companies should cache interview results and have honest managers that don’t say you have got a question wrong when you have it right.

    It is simply a waste.

  3. Anonymous Coward January 8, 2013 at 8:05 pm

    There is a trend for full day interviews, even after 4 pre-interview assignments.

    I had one interview at Microsoft starting at 9am. As I live in a different city, I think I had to wake up at between 4 – 5am that day to get there on time.

    When I did arrive there none of the interviewers were available to meet me. So I had to wait around for another 30 – 60 minutes.

    My interviews took the whole day. By the end of the day I was getting a little surprised they were still firing long questions at me. In the end my mind gave up because the last question was just too big to fit on a whiteboard.

    Either I was not a favoured candidate or simply these people didn’t think that I would have had to have woken up at 4am to get there on time. Another stupid waste of time.

  4. The shop I’m at does two tests, one before in-person interviews and one during.

    Believe it or not over half the people who get the at home one (email with code to be returned in two hours) don’t complete it (it has 3 steps). A siginficant fraction don’t even produce working code for the first step.

    That said to address some of your complaints, both of the tests were related to the work I’d be doing and were designed not only to test if I could do it but do it well in the language in question. Both were used for interview questions during a code review where I was asked why I made certain design choices, the possible consequences of some of my choices, and ways to address those choices if they became problems (much of those were around scaling to various data set sizes).

    In that context I didn’t find the tests insulting. Why they were simple they were keyed to the work I’d be doing and instead of simply being pass/fail they were used as the jumping off point to probe my knowledge and thinking.

    Finally, for me they provided an opprotunity to demonstrate willingness to learn. During the phone interview I missed a couple of issues concerning modules for the language in question. When the opprotunity to use the things I had missed came in the in person test I used them. When I asked why I choice that method over another (and I was quizzed about other options) I answered “to clear up my missed earlier questions” (the gentleman from the phone interview had already picked up on that).

    • I used to diligently do every test, and I never got an offer from an interview that demanded a test. Now, I just refuse them, or only do them if it’ll take me an hour or less.

      If your hiring process filters out people who refuse to do tests, you’re eliminating two groups of people. You’re eliminating incompetent people. You’re also eliminating people who have better things to do than your stupid test.

      Some tests aren’t possible for me to do. I don’t have Excel (I use Open Office), Visual Studio, or SQL Server on my PC.

      On one recent interview, I’m 99% sure that the interviewer was trying to shake me down for free consulting.

      Would you ask a lawyer, doctor, plumber, or painter for free work before hiring them? They would laugh at you if you asked. Why is that standard practice for programmers? Act like a professional.

      —-

      According to my Piwik stats, you’re browsing my blog from Bank of America. I had a bad experience with them (via a headhunter). They demanded my SSN for an interview, which you should NEVER give out.

      Banks don’t need good software. Who needs skilled employees when you can get the government to give you a bailout?

    • Anonymous Coward January 9, 2013 at 7:05 pm

      I also diligently did pre-interview tests.

      I also had an interview at a Swiss bank in London and got 100% correct in a 45 minute written test. In an oral test I got every single question correct, except for the last one which was a silly question about a manufacturer’s name for a config file in a specific environment.

      It was a complete waste of time.

      I also got every single question correct during an interview with a Microsoft manager.

      No job offer. The manager lied and said I got the question incorrect. That or he was incompetent or couldn’t be bothered to listen to my answer.

  5. I do agree with FSK that there is something about a career in software development that makes it a bad choice.

    It is not that testing is inherently wrong, but that companies overdo it.

    Companies will test you. Reject you if you do well and that some years later ask you again to interview and want to put you through the same tests again even if you did well the first time round.

    As almost every company has the same hoops and today you need to apply for tens of jobs before you get one offer, the whole thing has become burdensome.

    If you do well technically in 15 interviews and each test takes 0.5 – 4 days of your time and you don’t get a job offer (maybe you are older than the managers or your far greater experience puts managers off) then you are effectively barred from working again.

    Your mind won’t simply let you do tests again do the realization it is a farce and pointless.

  6. Another annoyance is the recruiter that asks you to fill in a matrix of buzzword skills.

    I once when to an interview at a German bank with offices in London. The guy asked me what version of Java I had last used. I said version 1.21.

    After the interview, the recruiter told me that interviewer liked me and would like to offer me a job, but he could not because they used Java version 1.22!

    Obviously the version numbers I used here are made up as I can’t remember back years ago, but it was as stupid as that.

    FSK may concentrate on excessive interview testing, but there are lots of other things that make a “career” in software less desirable.

    One is that lack of stable jobs.

    Second is the fact that a lot of companies don’t provide time for training and just want to hire people with 10 buzzword skills. They will wait a whole year to find a liar that has all their twenty stated buzzword skills. Everybody wants to milk the system, but no employers wants to put anything into it.

    • The buzzwords are not relevant. Any skilled and experienced programmer can pick up new languages quickly as needed. Most competent people know this, but I’ve never seen a hiring manager or recruiter that does that.

      The “advantage” of buzzword screening is that enables someone computer illiterate to do resume screening. If the requirement is “n years of X” for a list of things, then someone clueless can filter resumes. There are enough liars so that sufficient resumes pass the filter.

      Hiring honest and intelligent people is a “mistake”, because their abusive coworkers and bosses will conspire to ruin them.

  7. What do you think of FizzBuzz?:

    http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

    From one of the comments: “Interestingly, the use of a technical test in interviews can actually work both ways. In my recent hunt for a new job I automatically turned down any vacancy where I was *not* given a technical test. My reasoning behind that is that I know *I* can program, but do I want to work with *other* programmers who haven’t been tested?”

    • There’s a difference between a whiteboard assignment or phone screen, and giving someone a project or homework assignment. I approve of brief whiteboard problems or technical phone questions. I don’t approve of trivia questions, such as “What API function does X in language Y?”, especially if it’s something obscure. If it’s a project or test that takes more than a few minutes, I’ll pass.

      I’ll also provide code samples, if asked.

      On the interview that prompted the post, the interviewer was pretty flagrantly trying to trick me into giving him free consulting. He took a few problems he couldn’t solve, and turned them into interview questions.

  8. I too used to take them and stopped a long time ago. It seems to have become a master slave thing where the employer is trying to weed out any but the most abject slaves. Just got an email from one inviting me to spend like 6 or 7 hours in such a process where they were very explicit that there was no compensation and they wanted you to show … what? I guess it’s a split between that and just utter cluelessness of the irrationality of spending that kind of the time, the degraded state of this particular market, class relations generally whatever.

    In any case it’s not by any means the case that all or even most employers are presenting these and they’re certainly the exception for contract work.

    Also I think when markets are glutted with labor, this comes back, it seems to be less a few years ago but seeing more now.

    For me with an unusual amount of experience, I’ve found from bitter experience it’s utterly futile to humor this. If you have decades of experience and they are testing you it just means they think you’re a fraud and it’s unlikely you’ll change that opinion because even if you pass an objective test, it will be followed by the subjective tech out where they’ll “show” you’re incompetent. After recently telling an internal recruiter for a silicon valley startup I don’t do tests, I relented because he pressed me. After doing well I was flown out there for just such a tech out.

    I think almost at any stage if you have a degree, at least a few years of experience, you should reject this, but what will drives it (the rejection of taking tests) is people see it’s a waste of time, doing well on the test seldom means you’re going to get the job.

    Anybody working on a contract basis that wastes like a days labor on this is rapidly going come to the point where they refuse them so it’s naturally self limiting to a large extent, forming hard core sweat shops and the like in a certain segment of the industry.

    • It certainly is a jumping-through-hoops exercise more than evaluating someone’s ability. It’s “better” to hire someone who’s totally desperate for the job.

      On the other hand, for one interview a few years ago, the headhunter talked me into doing their (only 2 hour) test, and they did wind up hiring me. I’ll do tests, provided it isn’t too long.

      The other negative of working as a programmer is that your experience has a very short half-life. Most of my experience is in C/C++, and I get zero credit for that experience for interviews for .NET or Java or other languages. Even if I get a couple years of .NET experience, a couple years from now there’ll be another new thing. Most experience is transferable to other languages, especially the experience for understanding requirements and working with legacy systems, but I’ve seen almost no headhunter/HR, recruiter, or hiring manager who understands this.

  9. Pro-state troll? As I understand the meaning of “troll” and “trolling” that is what it is. It’s really ironic that in this capital – labor conflict, and that is certainly what it is, you are regurgitating your masters propaganda. Unbelievable if it weren’t so typical.

  10. Pro-state troll? As I understand the meaning of “troll” and “trolling” that is what it is. It’s really ironic that in this capital – labor conflict, and that is certainly what it is, you are regurgitating your masters propaganda. Unbelievable if it weren’t so typical.

    I’m trying to work out an effective response to this as I refused to take tests for a long time but am now finding the same as a lot of above comment and it was the main reason, I didn’t. Very little light here. Programming/software is pure congealed labor and there is much cluelessness evinced here about how that works in society.

    • I don’t see it as a capital-labor conflict. The problem is a heavily restricted market. In a non-free labor market, prices don’t clear.

      For example, I’d be willing to take a lower salary to get new experience. However, then I’m rejected because “I’m overqualified”. It makes no difference to the employer that he rejected a good employee, because it’s a non-free market.

      When employers make stupid hiring decisions, the market doesn’t punish them, because the economy is carved out into a bunch of oligopolies/monopolies. An established business has its market position backed by the State. Regulations make it hard for new businesses to enter the market. Large corporations are subsidized by negative interest rates.

      Large corporations have their market position backed by the State. Each large corporation is effectively a branch of the government, with all the bureaucracy and inefficiency associated with government.

      In a non-free market, it’s hard for talented-but-underpaid workers to start businesses that compete with the established cartel. So, the labor market doesn’t clear.

  11. Just found this blog, and as an entrepreneur (read — someone who hires programmers and employees) I must say I agree with your philosophy to avoid intensive and offensive interviews and tests, especially obvious attempts to extort free code.

    My employment process is/was simple — Where did you work, what projects have you done, either on your own or for others, can you answer a few questions, do you have references, etc… but here’s the kicker — When I did ask for code to check competency, I ALWAYS asked for something generic and unrelated to my business (so it was pretty obvious I wasn’t trying to squeeze free work out of people).

    My interviews were no longer than two hours and I barely looked at resumes (as most of them are pure BS). Let me see that you know how to think and solve problems, you can work on a team (we had 12 developers at one point) AND by yourself (cause let’s face it, sometimes tasks are handed off and you just need coffee, cigarettes, and a closet to solve them).

    I’m no Microsoft (very far from it) but have been in business (several of them) for decades. I deduce more in 15 minute by chatting informally with you than I could from a resume or test. Most successful business owners are also intuitive, so we know if you’re capable or full of shit (ie — worked on a team where someone else did 99% of the work). It’s ashamed these same owners don’t look for those traits when hiring recruiters.

    To me, school means nothing when it comes to fast-paced technology. I’ve hired an 18 year old kid with no resume and no experience other than his own personal projects and a real-estate site he did locally. I liked him and saw tremendous potential. Was one of the best employees, stayed for 5 years until the company died, then started his own design firm and is still doing really well.

    FYI — I have programming experience (had to learn by necessity as I was too damn broke to pay anyone to implement my ideas years ago) which is why I’m on your site. Trying to decide what language to use for a re-write on an ancient Classic ASP site that’s starting to pick up steam (Appears node.JS will not be a contender, although I really wasn’t considering it to begin with). Heck, I still dabble in code and design and will probably play with .NET MVC , PHP, and a few others before leaning toward one direction.

    Way too much is royally screwed up in this world, both from my perspective as an entrepreneur and yours as a job applicant. Kudos for taking a stand on what’s right and only allowing yourself to be aligned with ethical entrepreneurs and prospective employers, even in a tough market. We need more people like you on both sides of the equation to make real progress.

    PS — If you haven’t read it already, you might enjoy the book “LynchPin” by Seth Godin. You have the attitude he describes is necessary to climb the ladder in today’s marketplace.

    If it were me looking for a job, I would walk in there with no resume and refuse to take any test, discuss what they are looking for, and (assuming you could code what they asked for) state you can start ASAP. Tell them you’re a perfect fit for the job, you’ll prove it to them, and if things don’t work out in two weeks they have the option of letting you go.

    As an employer who WANTS my company to grow, I want employees who know more than I do for the task I am hiring them to do (except low-end jobs) and people with BALLS who can step up to the plate, produce, and give feedback, not be a cog in a wheel. If they say no, give em a card, leave, and say “you have my number if you decide otherwise”.

    Obviously this isn’t going to work at Microsoft.

    • I’ve got another good story (draft queued for Tuesday) about someone who wanted to hire me for a small fixed-bid project.

      Even for small simple programming assignments, I do them, know I did well, and still I don’t get an interview.

      Also, I learned programming on my own on my 8-bit Atari, and then got a CS degree. Theoretically, that’s the best of both aspects, the ability to learn on my own and a formal CS degree. However, I’m not having any success looking for a job.

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>