One thing I’ve noticed in hunting for a job recently is the number of companies that insist that you write them a code sample to spec. Not just any code sample, but a fully functional, complete application. This is absurd, for several reasons.
Eli White spends a good deal of time arguing why coding tests are bad. I won’t rehash that here.
My biggest pet peeve with these types of tests is this: there are a lot of companies out there, and I’m sending out resumes to each one that I can find. I simply do not have the time to write fifteen code samples a day, just because you want to evaluate me against your coding test. Period.
Joel Spolsky talks about how it’s important to ask developers to write code during their interview. But he also goes into detail about how he interprets this in his own company: namely, he asks people to write functions during the interview. He doesn’t administer a coding test. He wants to see how people think, how they respond to critique, and how they come up with solutions. He likens the coding test to asking a plumber or an electrician to provide some sort of proof that they’re capable.
But asking a programmer to write a complete application for you is like asking an electrician to build a small electrical grid for you before they work on your house. Can you imagine if every plumber had to prove that they could snake pipes before they could work on someone’s plumbing? Plumbers would be even harder to get to your house than they are today.
Asking a developer to write an application for you before you’ve made a formal offer of employment is also disingenuous, and disrespectful. It’s disingenuous to the value of their time, and disrespectful, especially to mid- and senior-level candidates, because it assumes that they don’t have an understanding of the language and they must prove to you otherwise. A coding sample, in the case of a mid-level developer, or a quick few phone calls, in the case of a senior developer, should establish pretty quickly as to whether or not they’re qualified.
A coding test also doesn’t identify the most important aspect of a programmer: whether or not they’re capable of learning. A fantastic test might represent their place now, but it doesn’t represent their ability to adapt to changing environments. The number of frameworks and projects in PHP should be evidence enough that the language is constantly evolving, and that we’re going to need people who can learn and adapt.
For those who administer coding tests, please reconsider what you’re doing. For junior developers, they’re fabulous tools. But for anyone who has a body of code samples all ready to go, ask for one. Ask a few technical questions that require code in an interview. And make your decision based on how they think, how they learn, and how competent they are.