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 found that many senior developers refuse to do paper exams in interviews. They regard the exam as a kind of humiliation, because they think that "They don't trust my programming ability even if I have five years working experience... only junior staff need take a paper exam...".

However, Joel insists:

11. Do new candidates write code during their interview?

Would you hire a magician without asking them to show you some magic tricks? Of course not.

Is it justifiable if a senior developer refuses to take a paper exam in an interview?

share|improve this question
51  
Do you really want to hire someone who regard writing code as a humiliation? –  SK-logic Apr 7 '11 at 13:23
16  
And everyone must do what Joel insists on, of course... –  FrustratedWithFormsDesigner Apr 7 '11 at 13:28
61  
5 years isn't a senior programmer... Not in my opinion. –  webdad3 Apr 7 '11 at 13:37
18  
I'm pretty sure Joel was referring to whiteboarding code in front of people, not quietly writing an exam in a room by yourself. –  bye Apr 7 '11 at 16:53
2  
I think you should always expect an exam... Unless you are the owner of your own company... –  webdad3 Apr 8 '11 at 14:40

18 Answers 18

up vote 83 down vote accepted

IMO, any senior developer who refuses to do a test to demonstrate his technical competency is either:

  • too full of himself, or

  • afraid that he might not be shown to be not as competent as he claims.

Neither of these is a good sign for the employer.

share|improve this answer
9  
or, c) not impressed by the attitude of the potential employer? Interviewers focused on weeding out bad applicants will easily also get rid of the really good ones. –  Bo Persson Apr 7 '11 at 22:18
8  
@Bo - IMO, No. The employer has every right to be sceptical of what you say about yourself in your CV, etc. It is down-right arrogant (not to mention unrealistic) to effectively demand that the employer takes you at your word. And arrogant people (aka prima donas) can be a major problem in a work environment that requires teamwork. –  Stephen C Apr 8 '11 at 1:58
4  
@Bo - I'm saying that it is a good idea to weed applicants who are too arrogant to take a test. Even if they are good developers, they are likely to be bad team players. –  Stephen C Apr 8 '11 at 7:45
8  
@Bo: I think that hiring someone who's unqualified is generally way more costly than missing out on someone who is qualified. –  Tim Goodman Apr 10 '11 at 20:15
3  
I don't want to work anywhere that doesn't give a fairly rigorous technical interview, because I don't want to work with the other people they have likely hired. –  kevin cline Jun 7 '12 at 16:53

I know tons of Senior Developers that know little to nothing. Writing a small amount of code, which at the end of the day will reveal the nature of the candidate's true function, seems necessary and obvious. What a quick litmus test to rule out garbage instead of taking a long expensive, shot-in-the-dark personality based risk on a candidate! I've seen many people hired that just don't know anything despite talking a big game and having a good history - I've unfortunately found most job acceleration to be through politics and social engineering than production.

share|improve this answer
37  
Isn't it the classical joke on programmers ? Some have 10 years of experience, some have 1 year repeated 10 times... –  Matthieu M. Apr 7 '11 at 17:16
3  
And some have 2 years but think in binary... –  Tim Goodman Apr 10 '11 at 20:19
4  
+1 My company just recently interviewed someone with 15 years experience and claimed to have taught programming for the 3 most recent years. This person, when given the question "using any language you like create an arry with the numbers 1 through 5 in it" (verbatim) stumbled, and eventually gave up. Coding in an interview is a must. –  Steve Evers May 10 '12 at 3:34

It depends upon how the exam is being delivered and more importantly, when the test is being given during the interviewing process.

Generally, if someone is being considered for a senior developer position they should have a pretty fair number of years of experience as well as a couple of major completed projects under their belt, all of which should be reflected on their resume or CV. Thus, you should have a fair idea of the individual before you make contact with them. A good deal of general technical questions can be asked during a phone screen and can give you a fair idea of the competency of the candidate.

As previously noted, the delivery of such an exam also make a huge impression on them and since the candidate is also interviewing you, their impression of you matters as well. For example, one company that I sent an CV to make contact with me via email and proceeded to have me do a number of employment exams on personality, general technical knowledge, and a "how well can you learn" test based upon MUMPS. For me personally this was quite off putting as I hadn't even talked to someone on the phone yet, but they wanted me to spend an evening taking tests for them prior to even talking to me on the phone. This serves to underscore my point that delivery matters a lot: if you aren't willing to invest a couple minutes of your time to talk to me when you are expecting me to invest a lot of time doing something for you, how are you going to treat me if end up being an employee at your company?

That said, I do understand where Joel is coming from and generally agree with him in regards to making sure the candidates write some code for you. During face to face interviews with candidates I've also had them write some code on the whiteboard to see what their thought process is and how they can handle some basic problems and modifications to those problems. However, this is being done during the face to face interview after the candidate has already passed the phone screening which tends to be pretty technical in nature.

share|improve this answer
9  
+1 The Delivery is important.+100 The senior developer is also interviewing You. –  Aditya P Apr 7 '11 at 13:40
1  
"all of which should be reflected on their resume or CV": true, but what verification of that CV is possible? Or: just because they think they're senior doesn't mean you will. –  Richard Apr 7 '11 at 15:24
1  
@Richard - I would argue that is what a phone screen or a short interview is for as opposed to having the candidate do a paper test before you actually talk to them. –  rjzii Apr 7 '11 at 16:15

I don't have a problem with taking an exam, but let's be real here. You don't have a single computer in your office I can type on?

  • Set up a computer in a conference room or empty office.
  • Unplug it from the network.
  • Put a decent text editor on it, even a simple one like Notepad2.
  • Better yet, put Word and Notepad2 and Notepad++ and a few others on there, and let each candidate use what he/she prefers.

Why would you need to waste my time with pencil and paper? How much time will I spend in the job writing with pencil and paper, and how much time will I spend typing at a keyboard? At least be courteous enough to let me type my answers and save us both some time.

share|improve this answer
2  
Typing code on a keyboard is a lot better for those of us whose handwriting is nearly illegible. –  Keith Thompson Feb 24 '12 at 7:26
1  
+1. Paper/whiteboard exams are stupid. Who codes on a whiteboard? Give me an editor and a shell, I'll show you something interesting. On a whiteboard, what am I going to show you, FizzBuzz? –  Jason Lewis May 10 '12 at 2:47

You are perfectly entitled to ask an interviewee to do a written test, but I think when Joel and others talk about writing code during an interview they normally mean some sort of white board exercise.

A white board exercise is very different to an exam and will (or should be) very interactive, a good question will allow the interviewee to ask you questions to clarify scope etc. In turn the interviewer can then expand on the question as the interview pans out, if the interviewee is struggling the interviewer can suggest ideas, if the interviewee writes some good code in a short time the interviewer could then move on to related questions, such as how to test the code, how to optimise it etc.

share|improve this answer
1  
+1. Writing code during interview: Good. Writing code and discussing it with the interviewer: Much, much better. –  Tim Goodman Apr 10 '11 at 20:21

I'll take a paper exam, but only as long as the interviewer takes one from me. And mine will be heavy on essay topics. After all, its a two way street. I'm providing a service, they're providing the money. Too many programmers (actually, too many employees of all types) fall into the notion that the employer/employee relationship is one of superior/inferior position. When in reality everyone is an individual contractor, and employment is a free exchange of service for money (at least, where its actually free).

That being said, I dont think a paper exam will tell you the things you really want to know about a senior level candidate. It doesnt tell you about their judgement, or breadth of industry knowlege, or ability to handle angry customers, or ability to lead others. Consider a written Java exam. A guy right out of college might do well on it. A senior C++ engineer with 25 years of experience wouldnt. Which is more approrpriate for a senior role?

share|improve this answer

The interview is what the interview is. If you don't like it then I guess you turn down the job offer if you get it.

I personally am not a fan of paper tests, but I understand why they have them. When presented with an exam I take it.

share|improve this answer
3  
+1 "the interview is what the interview is". Interviewing is hard, and it's a sad fact of life that you can't just take people's word for it that they can actually do what they say they can do. –  Dean Harding Apr 7 '11 at 13:57

For a senior position, the interview should be about whether the candidate fits your team/company culture and whether you fit their style first and foremost. They'd not have become seniors if they didn't know the rote knowledge an "exam" tests, but they've likely not taken a highschool style exam for long enough that they're liable to fail one for lack of practice.

It's ok to talk with them about design, implementation details and techniques, work out something on a whiteboard, a notepad, or even a laptop, but don't give them a stack of prefab questions taken from some schoolbook. It's debasing, it shows you mistrust them and don't care that they know it or what they think about you. I'd not even put an intern through that kind of exercise, let alone someone applying for a senior position who's supposed to have years and years of experience in the field.

In the end, you get the people you deserve, and if you select your employees based on their ability to repeat rote knowledge, you get robots with not a shred of creativity who can't program their way out of a problem but may be good for writing the same routine a thousand times as long as it's laid out exactly in a design document.

share|improve this answer

Why bother with the paper exam? Paper exams are weak-sauce compared to explaining live:

1) you can see how he thinks in real time
2) he can ask you clarifying questions
3) you can provide immediate feedback
4) you can nudge him in the right direction

Get him on a whiteboard. It sounds like you're trying to save time and money and cattle-call a large number of candidates. Am I wrong?

share|improve this answer

IMO depends on the kind of exam. If it's the typical recruiter bullcrap ("Prove It" exams that test on canned logic, etc.) it's okay to refuse as those tests usually indicate the company is totally clueless (or, at least, the person interviewing you is clueless). Writing pseudocode on a whiteboard and discussing the design process? That's fine. Writing some sample code for some trivial app to get a feel for your thought process and code style? That's fine as well.

I've turned down interviews that would have tested me on stupid nonsense that anyone can research if necessary, and on the contrary some of my fondest interviews have involved discussing the design for a bit of software with diagrams and code snippets (and not necessarily even 100% compilable code either) on a whiteboard.

share|improve this answer
What's your opinion about the attitude? 
Do you agree paper exam for senior developers?

Yes, I think all developers should have to do it.....especially the senior ones. For people with less experience, I give some leeway about mistakes they made or approaches they haven't thought of. For senior ones, I am much less forgiving. What I have found is "I have 5 years of experience" does not equate to "I know how the recursively walk through a tree structure." Being around in the industry does not excuse you from proving to me you know that.

Personally, as a senior developer, I want them to ask questions like that when I interview. It shows me that the company that is trying to hire me is on the same page. When interviewing the questions people ask are really telling about the quality of the company. In about 20 minutes you can sum the mentality of the company. Every place you interview it seems that the recruiter, person who wants to work there etc. ALWAYS says "It's a great place! Everyone is really smart." I've gotten to the point where I'm a little jaded when I hear that. My first thought is, really prove it. People asking technical questions/written exams is like a litmus test about who they want to work with. The less time they spend trying to find the right the person, the bigger the turnoff it is. Over and over I hear as a counter is, "We just need people, and devs get turned off by this." My response always is, "That's fine, I understand your plight and I wish you well. I'm not the right person for the job. I'm looking for a place that needs me."

share|improve this answer
6  
I've declined the offer of a second interview because the written test was so poor. It showed that the position specified wasn't going to be what it claimed to be (claimed "C/C++" but all the questions were C, and they marked me down for using a C++ approach). –  Richard Apr 7 '11 at 15:26

The more senior the more important the examination of their skills becomes. A senior developer can harm your organization much more than a junior one. SO it is more cirtical to test a senior than a junior.

share|improve this answer

I am not against coding on paper. It's an interesting exercise. I feel that as long as you can explain what you are trying to do and not get it entirely syntactically correct, then you should be fine. Any programmer worth his weight will be able to logically explain a problem even a linked list implementation if so desired. I am against, however, trick problems or problems sought out to trick programmers into the wrong answer. I believe they should present a reasonably difficult problem and force the engineer to discuss it. Also, making them demonstrate OO concepts is important.

share|improve this answer

Personally, I don't like exams, they usually fail to reflect my skill as I dont practice taking exams often, like say when I was in school.

The problem is its difficult to tell senior developers from the junior. There are so many different skills a "programmer" can or should have. Some old skills are now useless and some new skills are hugely important (think about unit testing and waterfall process).

The question should be how does an employer limit the risk of bad hire.

share|improve this answer
1  
No, the question should be "How does the employer attract a good hire?". –  Bo Persson Apr 7 '11 at 21:42

Why can't programmers program?, that is the question.

I recently interviewed a candidate for a Sr. Software Engineer position... this guy wanted the job so bad, but was very full of himself. He was a manager at his other job at the moment but said to me with complete confidence:

"I come here for a manager position, but... of course, if I really have to go back" —said with a snobby smirk— " and program, I would have no problem at all"

He had 15 years of very solid-looking experience or so, still, I told him:

"Oh yes?, cool... here, have a Fizz Buzz, do it in any language you want"

...which is an extremely easy programming exercise that can work magic for you, the employer. This exercise should take at most 15 minutes in any language (had interviewees who took 5-7 minutes in average)... what happened?, well, drum roll please:

He took 25 minutes, used pseudo-code and got it wrong

My answer to anyone who would refuse or even frown upon a written code test would be:

"oh, so... you don't want the job, yes?"

And yes... Fizz Buzz will do

share|improve this answer
1  
I don't think Fizz Buzz will do much good for Senior Developers. I just did it in less than a minute :p I recently applied for a job two top tier companies and both required completion of a programming and related (development of a test plan etc) task, assumed to take approximately 10-12 hours, before the candidate would be invited in for an interview. I had no problem doing it because it was a fun little challenge and I enjoy coding. The Senior Devs you want to hire shouldn't have a problem doing this type of task. –  Rob Gray May 10 '12 at 5:45
1  
10-12 hours is a lot for anyone who already has a job. I don't mind an all-day interview, since the employer is also participating, but I wouldn't spend a full day on an exercise unless the upside was pretty large. –  kevin cline Jun 7 '12 at 16:50
1  
Fizz Buzz doesn't test skill, it filters out bad programmers –  dukeofgaming Jun 7 '12 at 22:58

I would look from another angle: why is a senior developer going through an interview that requires him to do a paper exam? The real good ones would supposedly be sought after, companies and recruiters lining up to have him on board, with hordes of managers and co-workers vouching for his track record. This one will never go through a paper interview unless it is for a company that absolutely requires it no matter what.

So being in that position may mean that he was caught off guard by a layoff (it happens) and forced now to really want a job. It is not hard to see why it may be psychologically tough for someone in that situation.

Also... what evidence does the OP have that "many developers refuse to do paper exams"? Is this really a common occurrence in the developers community? Does anyone know of a survey showing such?

share|improve this answer
2  
Track record can easily be a fake. But you can't fake a skill. –  SK-logic Apr 7 '11 at 13:40
1  
many companies have "standard hiring procedures" that all candidates have to go through. For development functions those can include a written test of "core competencies", the exact same "exam" applied to anyone from an intern to a senior architect. –  jwenting Apr 8 '11 at 20:20

First off, exams like fizzbuzz, "find the bug", "what is the outcome of " and many others are a joke! Look up 'Griggs vs Duke Power Co.' Whether it is tech or some other field more often than not, tests like these give absolutely no indication as to how well or poorly the person will do the job. If you block a person from working at your place because they can't do fizzbuzz in 12:30. You my friend are a moron. Coding fast != Coding good...

In many situations tests during the interview process are a nefarious way to racially discriminate or gender discriminate or age discriminate without having to actually admit that is what you are doing.

In other situations tests many times are a very cheap way for a "senior" or "lead" to trap/trick a potential candidate so that they can protect their current job. Often a senior or lead is the one asked to make the test...

I once was asked "what is the command to partition and install a hard drive in a server?" -- My answer: Is that an everyday activity here? You need to use fdisk or gparted and/or other related commands. Then again is if it is a Windows server then there are another whole set of tools to use (ex, Partition Magick )."

Now on some days and with some candidates that will be a fine enough answer move on. However, if for whatever arbitrary thing that question could also be "interpreted" as incorrect to simply make sure a friend is hired instead, or uncle, or white person, or better dressing person or someone else that doesn't threaten your job.

Additionally, the only thing that you are testing with a question like above is whether or not the person has in recent memory partitioned a hard drive... which isn't really useful for anything.

I've turned down job openings too when they crack out these tests. If my 16 years of experience, linkedin recommendations, and open readable coding examples I share online are not enough to convince you that I can do the job. Sorry you got bigger problems than just an open position.

share|improve this answer
1  
Rejecting someone for taking twelve and a half minutes to do fizzbuzz makes you a "moron". Fizzbuzz and "how do you partition a hard disk" are unfair questions that discriminate against good professionals in protected classes. Uh huh. Seriously, this ridiculous "answer" can't get dowvoted enough. –  user16764 Jun 7 '12 at 21:28

I personally feel that a paper test lets you know right away whether someone is married to an IDE.

share|improve this answer
8  
The big problem with not allowing use of an IDE or Google is that some frameworks (.NET, I'm looking at you) are so big you can't hold enough of it in your head. I can't remember exactly what properties or methods are available on the classes I use every day - how do you expect me to remember the ones I don't use? –  ChrisF Apr 7 '11 at 21:08
1  
the IDE is central to modern development. A good programmer can however switch between different ones relatively quickly (but not within the timeframe of a job interview). A SENIOR developer especially should be trusted (a job interview at that level especially is about developing a mutual understanding, NOT about the candidate justifying themselves and nothing else) to be so capable. –  jwenting Apr 7 '11 at 21:15
1  
@ChrisF Exactly. Are you a programmer who really learned the ins and out of the programming language you're coding in? –  Christopher Mahan Apr 7 '11 at 21:16
1  
@ChrisF Sure, but if they can't code on paper, they're not a coder. Coders know how to code on paper. –  Christopher Mahan Apr 7 '11 at 21:24
1  
I'm a .NET developer. Of course I'm married to an IDE. It would be rather bizarre to program .NET in Notepad. –  Kyralessa Apr 8 '11 at 3:34

protected by Yannis Rizos Feb 9 at 16:47

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

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