The Workplace Stack Exchange is a question and answer site for members of the workforce navigating the professional setting. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Recently I had two interviews focused on programming language X. For most of the past five years, that language has been my professional and personal focus.

The first interview took place in-person with a tech lead and senior developer. At the end, the tech lead told me that it had gone well. Having worked as a developer almost 10 years, i.e. having gone on multiple interviews in my life, I know that it went well. Lastly, I had taught them a new technique in language X that they had not heard of previously. A few days later, I got a reply from the company that they'd like to take the next steps with me.

The second interview was a background and technical phone screen with a tech lead. The role is looking for someone with skills in language X. I answered every question immediately and accurately. At the end of the phone call, the tech lead stated that he wanted to proceed to the next steps.

In both interviews, I fully expected the next steps - given my read of the interviews' successes.

However, both companies want me to complete a 4-hour exercise in language X. When communicating over email to company 1, I had informed them of 5-6 GitHub repositories where I've contributed OSS and personal side studies in language X. For company 2, at the end of the phone interview, I was told that I was expected to complete an exercise in language X. I respectfully pushed back - asking, would it be OK if I linked you to my GitHub repository, which includes 5-6 projects demonstrating my skill in language X? However, the interviewer still wants me to complete the exercise.

In short, here's my objection to completion of these exercises:

  1. I have solid evidence of proficiency in language X by pointing to my side work (on GitHub) over the past three years, spanning 100's of hours of my own personal time.
  2. Given my desire to convey myself as a rigorous, test-heavy software engineer, it will likely take me ~6-8 hours to complete the exercise. In other words, to put my true face forward, I don't expect to complete the work in ~4 hours unless I give it less than 100%.
  3. To be honest, I'd rather use my personal time to continue studying my current "curriculum" of side projects, namely more advanced features and OSS in language X.

How can I respectfully, but boldly, convey my interest in the company, but decline to complete exercises given the above three points?

share|improve this question
    
Comments are not for extended discussion; this conversation has been moved to chat. – Jane S Mar 9 at 21:58
16  
Never worked somewhere where a developer was hired because he interviewed well but turned out to be a fake? These tests exist as filter for people who fake knowledge the interview and gives a chance for the company to see how your coding style and problem solving skills handle a specific situation. I could have claimed the same things for my current job — probably thousands of hours worth on my github — but many interviewers just want tangible proof. – pydsigner Mar 10 at 17:54
    
@corsiKa A comment. I don't address the OP's question, just question his objections. – pydsigner Mar 10 at 20:36
    
@corsiKa Although looking down again, this might have been better as a rephrased comment on your answer. – pydsigner Mar 10 at 20:38
3  
OP clearly states he values his time and isn't in a position to complete a partial day's work with no compensation. Based on his expectations, I'm sure he has plenty of opportunities as a developer and he isn't missing out on ditching this lame test. – SephVelut Mar 11 at 11:40

11 Answers 11

It is unlikely you can negotiate away the test, because it is something they have decided to expect in the interview process.

Personally, I would agree that their process is flawed - see e.g. A programming task is scaring off candidates, should we ditch it? for much discussion on appropriateness of such a test. Although stannius comments that at least this company has not used a long technical test at an early stage as a cheap filter, so is behaving with more respect of candidate's time than some.

Your counter-arguments are probably not going to hit the mark because of this, and are IMO not worth raising.

I have solid evidence of proficiency in language X by pointing to my side work (in github) over the past 3 years, spanning 100's of hours of my own personal time

How does the interviewer know this without detailed study of your projects, and some kind of evidence that the contributions are actually yours? An in-house test will solve a problem that the interviewer is familiar with and should be able to judge required skills from. In short it is less effort and risk for the company to use a standard test.

Given my desire to convey myself as a rigorous, test-heavy software engineer, it will likely take me ~6-8 hours to complete the exercise. In other words, to put my true face forward, I don't expect to complete the work in ~4 hours unless I give it less than 100%.

I too find that these tests can take longer than suggested, although it varies a lot with different employers. I don't see a valid argument for not attempting the task here though, just a complaint that it is "too much work", and also a potential red flag that you will take double estimated time on real tasks in future because you expect to take your approach to test-driven development ahead of whatever the company thinks is appropriate.

to be honest, I'd rather use my personal time to continue studying my current "curriculum" of side projects, namely more advanced features and OSS in language X

What you want to use your personal time for is not something the interviewing company takes into account, any more than for instance your commute time should you accept the job.

The company may be wrong in their assessment of how useful the interview task is (or they lack appreciation of decent tests and your hobby work). They may not consider how much of a barrier the interview task is to getting good candidates. However, confronting them with that opinion before they've decided to hire you may give the impression you are argumentative, and is likely to reduce your chance of being hired.

Ultimately, you have to play their game by their rules, or decide it is not worth it.


Once you are hired, you may find yourself with enough good will and trust that you can give some feedback on their interview process. Although I suggest waiting until you are either asked or you feel you have built up enough trust that you can speak frankly on the issue. Future hires, and maybe even the company, may thank you if so.

share|improve this answer
47  
Among companies that use an at-home exercise, this company is well above average because they've put some effort into the candidate before presenting them with the test. Many companies expect candidates to complete such an exercise early in the process, after little more than a resume screen. – stannius Mar 8 at 16:48
2  
@Raystafarian what advice is different? If a company is deciding whether to employ a test that is proven to chase away candidates they don't want to chase away - perhaps they should change or remove that test. If an individual is deciding whether to take a test that is required to be considered for employment at a company they do wish to be considered for - take the dang test. It's all about achieving the result you want to achieve, and in this case the result is being considered for employment which stands behind a test of dubious value. – Jason Mar 8 at 18:19
2  
@BellAppLab: Actually people will read them, and they can be important IMO. Consider them part of the CV screening process though. Sometimes if a project is interesting it may make it to questions in the interview, and of course as a candidate you can try to direct conversation there to any favourite examples of good work. – Neil Slater Mar 9 at 8:26
2  
@BellAppLab No, not really. It's just that it isn't a get-in-our-company-for-free card. Your side-projects are still a great topic for conversation during the interview, exploring why and how you deal with things. It just doesn't help much with the screening part - after all, I can easily just copy some code from the internet and make it my GitHub repo, or the code might be horrid (for good or bad reasons, to boot), or it might be a huge overkill for the problem I'm trying to solve, or... – Luaan Mar 9 at 12:34
2  
@Luaan The way I see it, you have just given some pretty decent reasons to actually use GitHub repos as a screening tool. – Bell App Lab Mar 9 at 17:49

To answer your actual question:

Dear [Hiring Manager],

Thank you for taking the time to meet with me the other day1, I enjoyed learning more about [the position / company] and talking about [technical innovation / challenge / upcoming project at company / ...]. I appreciate the usefulness of coding exercises for novice developers, but I believe that my 10 years of professional experience and my personal projects and open-source contributions should say more about my skills than a coding test ever could. While I still actively contribute to open-source projects and explore [advanced / new] language features in my spare time, I would prefer not to [spend / waste] my time on [coding exercise]. As such I'd like to decline to complete this exercise. I'm sure that my references will also be able to attest to my technical knowledge and work ethic.

If you could waive this requirement and would like to continue the process then I would love to talk further as [reasons you're excited for the position]. If not then I would like to thank you for your time and wish you all the best in filling the position.

With kind regards,

Joe Developer

Based on your question, this is a deal-breaker for you (as it probably would be for me) and you shouldn't mince words. Clearly state that you won't be doing the exercise but remain respectful and give them the opportunity to drop the exercise entirely. I can see no way to justify a coding exercise for a developer with five years of experience, let alone ten.

Swap out phrases or terms as you'd like. I've erred on the side of staying respectful here. While you don't give that impression, if I felt belittled by the interviewers I'd probably use much more direct language.


1 - Use a different opener if you already sent a thank-you note.

share|improve this answer
27  
Yes this is the correct answer (and a well written letter) assuming the OP is willing to state his case and walk away if there is no chance of getting what he wants. Other answers, including mine, are working from the assumption that taking the interview process forward is higher priority than achieving OP's stated goal of not performing the test. You could view my answer as a "frame challenge" - assuming that is acceptable here? I.e. my answer is "You cannot do this without risking your chances of being hired, however it is phrased." – Neil Slater Mar 8 at 20:56
1  
Comments are not for extended discussion; this conversation has been moved to chat. – Jane S Mar 10 at 22:36
2  
Your assumption of 5+ years experience of programming (or even 10+ for that matter) is any guarantee that a programmer is any good is naive. I know of lots of programmers/developers that are rubbish even if they have lots of experience. – Bent Mar 13 at 11:25
    
@Bent That's why as a hiring manager you go off candidates' resume, cover letter, work history, references and you interview them. Good employees with that kind of experience will be good programmers. The trick is to not hire bad employees. See the chat for previous discussion on this topic. – Lilienthal Mar 13 at 19:40

There's three very simple reasons why you have to take the demo.

  1. They don't know the code on Github is yours.
  2. They can't compare that code to the code of the other candidates.
  3. Sometimes more important than the end result is how you get there. What questions you ask, how you solve problems, etc.

The demo they set up is specifically structured to highlight problem areas they want to avoid and to set up challenges they feel you'll be working with every day. So bite the bullet and do the exercise. If you're as great of a coder as you feel you are, it won't be a problem at all.

share|improve this answer
11  
@JamesAdam Except then it requires the interviewers to have an in-depth understanding of the project, and form questions about possible changes to design, new requirements, etc. This is costly work. The company reduces the cost of the activity by putting the onus on the prospective candidate, which I think is not too much to ask. They're a business and they're paying for the interview time, even if you don't get the job. I think it's reasonable to ask the candidate to offset some of the cost by playing their game. – Nate Diamond Mar 8 at 18:10
3  
1) they don't know.. This. For the same reason I can pass an A+ cert without knowing how to use computers... you can create a repository without knowing how to program. Having a Cert/Repo is nice - but the real question is how much do you ACTUALLY know and how do you work? Answering questions over a phone is one thing... working behind a keyboard is another. I know javascript... but I don't KNOW javascript. – WernerCD Mar 8 at 19:31
2  
@corsiKa The OP does not have to take the demo. 4 hours uncompensated time is a lot. If OP is reasonably happy with this current position, then OP could use that time on other things: spouse, kids, friends, hobbies, pursue other employment opportunities – emory Mar 8 at 23:19
9  
@emory Obviously... there is an implied "If you want the job". – corsiKa Mar 9 at 1:45
9  
The "can't compare your code to others'" is a very important point in more regulated industries where fairness has to be demonstrated and documented by the company. – Ben Mar 9 at 7:55

While a 4 hour exercise sounds like a complete drag to you, look at it from the company's point of view: they are investing in hiring an expert. If you turn out to not be as knowledgeable as you claimed to be then they've just wasted a significant chunk of time and money.

A Github repository could be faked. You could be copying in someone else's code for all they know.

Additionally, the programming test is also going to record how you went about writing the code, not just how the code works when you are done. Many managers will find this information crucial when making a hiring decision.

Your own comment outlines something a manager would watch out for:

"Given my desire to convey myself as a rigorous, test-heavy software engineer, it will likely take me ~6-8 hours to complete the exercise. In other words, to put my true face forward, I don't expect to complete the work in ~4 hours unless I give it less than 100%."

I'm sorry to say, but if you take 8 hours to complete a 4 hours exercise are you also going to take 2 weeks to complete a 1 week project? That's a major liability for a company who might only be getting paid for 1 week's worth of work, no matter how positive your intentions (bug free code). Remember that "the better is the enemy of the good".

If you're truly interested in these jobs then take the time and write the tests. They may be annoying, but it's a sign to the employer that you are willing to invest something in gaining their trust, not just a demonstration of your skills.

share|improve this answer

Before you act, think carefully.

  1. What is your real concern about doing these exercises?
  2. Are you willing to lose this job if they insist on the test?
  3. How strong is your leverage in these negotiations?

What is your real concern about doing these exercises?

You mention 3 broad concerns:

  1. You have already done a lot of coding that they can see and should be enough
  2. You are worried that they aren't giving you enough time to do a 'proper' job
  3. You have better things to do with your time

These are three very different reasons and would indicate taking very different approaches to the problem with the employer. Plus they are kind of contradictory. On one hand you have better things to do with your time, on the other hand you want to be given double the time to complete the exercise. On one hand you have a ton of work and experience in this language, yet on the other hand you aren't confident you can do these exercises in the allotted time.

Figure out what it is that really bothers you about this if you're going to approach your potential employer about it. At least then you can be honest about your concerns and they will be more willing to help accommodate you if you're able to be clear about what you want accommodation for.

What are you prepared to lose?

They want you to do the test. You don't want to. If push comes to shove and they say, "It's our way or the highway" which will you take?

If you are going to end up wanting the job more than you're dreading doing this coding test, then pushing the issue is only going to put you in a worse situation.

If you aren't willing to lose the job but want them to accommodate you, then perhaps you shouldn't be asking to skip the test, but rather to have them make the test suit you better if at all possible (which is a very different conversation).

If you are going to ask for something, think about your leverage

If they have 100 candidates for this position, all with similar skill and experience, all willing to take the test, then chances are that you being the odd man out isn't going to sit well with them.

If on the other hand they have had this position open for 3 years, are approaching a deadline, and couldn't feasibly get someone else to do the job by the time it's due then you are probably going to have a lot more leverage to work something out.

When you've figured out what it is that you are actually concerned about, how much you actually want to push for it, and how good your leverage is in getting it, then you can talk to the employer. Be honest, and be prepared for it to not work out if you aren't able to find a happy middle-ground.

That shouldn't burn any bridges down the line so long as you're respectful and honest about what you're after.

share|improve this answer
    
Yes. I agree that asking an applicant to take a 4 hour quiz is excessive. But if you refuse to do it, odds are that you are not going to get the job. From their point of view, they're going to conclude that either (a) you have been overstating your qualifications and you fear that you will fail the quiz; and/or (b) you are unwilling to take direction and follow company policies. You can protest that the demand is unreasonable all you want. Maybe you're right. But obviously they don't think so. – Jay Mar 9 at 14:31
    
Or c) You don't want the job and aren't passionate about working at the company. – stannius Mar 11 at 17:29

I will answer as someone that does hiring for my own company. GitHub profiles are a useless tool to assess competency. There are HUGE pieces of the puzzle missing. The most important ones are:

  • Can you take a problem and work it into a solution
  • Can you do so in a time-frame that I think is reasonable
  • Can you work with the conditions and policies that are set forth by my company (and they may not seam reasonable to a new hire)
  • Does you process for fixing a issue fit well with other team member's/the company's process
  • Can you inspire ideas in others and can you let others inspire ideas in you

The main problem with a GitHub profile is that it's very hard to tell, at a glance, what you actually did. Furthermore, it's very hard/impossible to tell "how you got there". I have seen developers that could create some technically wonderful looking code that were absolutely worthless because they couldn't take a problem and come up with a solution.

What I do, right wrong or otherwise, is ask applicants to show previous work, from a high level. Then talk to me about what they did on that project. For example, "I worked on this app, my job was to do this thing and that thing". Then I ask some quick trouble shooting style questions like "Where would you start looking if you could not connect to the database all of the sudden?" And I try to come up with some, if I think it's needed, some simple problem solving questions, like "How would you handle a request to add a large image to an already full page of information?" (These are horrible examples but you get the point.)

While I don't personally believe in "home work", a GitHub repo is not substitute for "homework" or other probing questions. All it actually does show is that you can use git. Because of the ability to squash commits, it doesn't even show rather or not you can write in the language the project is in (at least not without some deep looking).

share|improve this answer
2  
In other words, you really want to communicate with the (potential or not) employee. A GitHub account is a great topic to explore in your talk (Why did you do this? How did you do this? Did you design this yourself? What were you thinking? ...), but isn't worth much as "here's examples of my work, hire me now, kthx?". In a way, the standardised excercise gives you a similar opportunity, but quite a bit cheaper for the interviewer. – Luaan Mar 9 at 12:29
1  
I don't understand how they created technically wonderful code without being able to problem solve. Did this "technically wonderful code" serve literally no purpose? Was it just some exquisitely written "hello world!"? – Technik Empire Mar 10 at 18:23
    
A lot of "developers" can write code to tests, or up to some metrics, but can't take a problem, and work it to find an answer. Example; "This page loads slow, go fix it." is not something they can handle, but they could handle "write a class that has these properties and methods". – coteyr Mar 11 at 21:09

I think that the issue here is difference of viewpoint.

  1. They may be able to see what you've done, but, as @Moo said, that's only evidence of the output. It's not something that they can verify independently, or easily.
  2. This is a spec issue. If they've got a problem that they think will take 4 hours, they expect it to take 4 hours. If you think it's going to take more, tell them, discuss your reasoning. They're obviously going to give you deadlines in the future, and you're going to need to adhere to them.
  3. This is, frankly, irrelevant. What they're asking you to do isn't learning it's demonstrating. It doesn't matter that it holds little educational value to you, because that's not the point of the exercise.

I'll admit that a 4-hour technical question is a little long, but is probably something to do with the seniority of the role. You appear to have missed the point of the exercise and are making excuses not to do it. Job hunting requires a sacrifice of personal time to do (the hunting, interviewing and testing), and companies expect you to be able to make those sacrifices.

share|improve this answer
3  
I learn something from every piece of code I write. – Amy Blankenship Mar 8 at 16:56
1  
Good to know, but the objective of every piece of code isn't your learning. There's a difference between code you learn from, and code for learning. Dismissing the problem given because they'd prefer to learn in a different manner is silly because it misses the point of the task. – Jozef Woods Mar 9 at 10:46
1  
My point is that the OP might unexpectedly learn something he would not have learned in the normal course of things. This happened to me. I didn't get the job, but the skills I learned in successfully (IMO) completing it are ones I've used over and over. It was just a part of the language I hadn't exercised before. – Amy Blankenship Mar 9 at 16:11
    
Except that that's not what was said. OP said that he didn't want to do the exercise, and would prefer self-study instead, which would work, if learning was the main object of the exercise. It wasn't, the object was to demonstrate to the prospective employer what he was able to do, learning would be a side benefit, but being able to learn something more efficiently should not be an argument not to perform the exercise. – Jozef Woods Mar 9 at 16:17

The other answers already address why your first two arguments are not convincing, and may even cast you in a bad light. This leaves the third argument:

To be honest, I'd rather use my personal time to continue studying my current "curriculum" of side projects, namely more advanced features and OSS in language X

Presumably, you have no objection to doing boring work as long as you are paid for it?

If so, I'd ask to be paid for completing the assessment. This is less risky than outright refusing the assessment, which might look like you want to hide something, while still meeting your goal of not doing boring work for free, and also gives potentially valuable insight of how flexible or stingy the company is when reimbursing expenses.

That said, I you do ask for compensation, you should prepare beforehand how you'll react if they are not receptive. Are you willing to back down or will you walk away? (Personally, I'd not to do more than a very polite inquiry, but be willing to do the test for free if they do not seem receptive. After all, a better job is likely worth far more than 4 hours of your time. This is assuming, of course, that it does not look like they'll use your work in production).

share|improve this answer

Is that exercise to happen at the company, under their eyes?

If yes, and you're actually proficient with the topic, you'll probably have that excercise completed in 2 hours with qood quality.

Don't underestimate your skill, or overestimate the complexity of such excercises.

Often, they don't want to see what solution you can produce but rather how you go about solving the problem. You demonstrate that you can read and understand a requirements document, show that you know your IDE and the common tools and APIs, show how you react to some side-issue you don't know the answer to right away. You do that, you'll probably pass the test with absolutely no problem.

share|improve this answer

I never heard a company require a senior developer to do a 4 hour test. Usually the interview is enough to gage how qualify a candidate is. I'm sure they asked you some technical questions, so asking you to take a test is a waste of time.

The market I'm in is very competitive so if I was you I'll simply tell them:

"I'm a senior developer with 10 years of experience which is reflected by my resume. I enjoyed meeting you and I would love to work with you further but I feel 4 h test is undue burden on my time. Such a test is not long enough to produce anything meaningful that we didn't cover during our meeting and I would rather use my time more productively. If you still have questions for me please let me know and we can talk over the phone or schedule another meeting."

Obviously that's only valid if you are comfortable with not getting the job. Also let them know if you have other offers / interviews and stress you simply don't have the time to do a test.

share|improve this answer

Technical Director for a large development firm here. Honestly I wouldn't hire you purely based on the fact you've had to ask this question. I'm actually surprised how much support you've gotten in terms of suggestions to ask the company to modify the test for you or why you should give your reasons of why you don't think you should have to complete it. For me, your obvious disgust at being asked to do something that you feel is beneath you is a huge red flag that you're going to be a complete PITA once hired. I've been a developer for 15 years and successful enough at it to work my way up through several companies and I see no issue at all asking a senior level developer candidate to complete a 4 hour test. It's the same length of test I issue. On the spot, fizz buzz type tests are useless and unfair to many candidates. A four hour random task that can't be pulled off the web tells so much about the a developers approach to a problem - and better yet, filters out those that think tests are beneath them. My advice; do the best you can in the test and then write some notes about what else you'd have done if you had more time. Showing that you'll have a go at anything but having a clear idea of how you'd take it further if given the opportunity, would be such a positive sign for me personally. More often that not I find it's not the hardcore smarter-than-thou developers that turn out to be the best workers, it's the less confident people who fell into developer roles that feel they've something to prove. In my opinion, if you want the job - do the test and do it well. If it's beneath you then you should really be looking at working for yourself, but you're going to need to do something that pays well without requiring other staff because you're going to find it really hard to recruit good, reliable people who will take your direction if you apply your current attitude to your hiring process.

share|improve this answer
    
I really like doing programming to solve actual problems and to actually improve people's lives, and really dislike programming only for the sake of programming, such as doing these tests. I once spent an entire day on a meaningless programming task (I worked at their office) and hated it. I got some compensation for it, but that doesn't matter. I just wasted my entire day. I'm not sure if I would agree to such a thing again, especially since I worked on 30+ open source projects and 200+ Stack Overflow answers (some quite detailed). I'll happily do ... – Carpetsmoker Mar 12 at 23:43
    
... any boring tasks by the way, as long as it has actual meaning (and yes, this even includes things like cleaning toilets, and yes, I've had to do that too in a programming job, because sometimes someone has to do the crappy stuff in small companies). So my advice: try to make a test that really solves a problem and will actually be used! ... – Carpetsmoker Mar 12 at 23:44
    
... I think you'll find a lot of people will be a lot more motivated to do their best on such a test (I certainly would be). And let me reverse things here, how many hours would you want to spend on to prove that your company is worthy of the applicant, especially if you have a bunch of applicants lined up? – Carpetsmoker Mar 12 at 23:44
    
I get you are new. Answers are more effective without the fluff. – Paparazzi Mar 13 at 0:43

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.