This is a subject which is quite interesting to debate.
I have done quite a few interviews in my career and I started to think if there is any value in doing such a test as part of the interview process.
It depends on how they are conducted I suppose.
Technical tests can be done in a number of ways :
1. Impersonal ones. The interviewer hands you a pile of questions on paper and you’re expected to write your answers. This is the worst kind basically.
2. You are asked to write a test project.
3. Run like a discussion, the interviewer is grilling you on a number of topics to see what you know. As long as it stays as a discussion I think those are fine. if it’s conducted like a machine gun type of questions with very specific questions looking for very specific answers then it’s just as bad as the first one.
4. Pair programming with a developer already working at this company – interesting and unusual but they don’t take into consideration personal circumstances. People are usually not themselves in an interview and stress plays an important part. Plus it’s difficult to show what you know in 30 minutes or less.
I am a fan of the open discussion type of technical test. You can get to know how a person thinks and about their attitude instead of very specific.
The first and second types need to be avoided at all costs. All you will accomplish is that you will waste your time and in most cases you will not have any feedback. Another point to consider is that you don’t know what that company will do with your code. They may take your idea and use it and you’ve done all that for them for free. I value my time so no technical tests for me.