Programmer Hiring Practices and Standardized Testing

Ken Winters | 06-10-09

Programmer Hiring Practices and Standardized Testing

Hiring a competent programmer is an immense challenge, and hiring a great one is much more difficult on top of that. Here are some strategies I’ve learned along the way.

Zend offers PHP and Zend Framework Certification but I don’t put any stock into that kind of test. Since PHP has good API documentation, the memorization that multiple choice standardized tests can evaluate is minimally useful.

Even if I thought the tests were a good indication of language competence, it still wouldn’t be a useful metric because language competence is not a good indicator of new hire success. Some careers like DBA or server administration seem to benefit from the standardized tests, but what I value in a programmer doesn’t boil down in the same way.

We do, however, subject new hires to short-answer technical tests. Some things that we look for:

  • Did you take / pay attention in a basic algorithms class
  • Can you write a reasonably accurate SELECT statement off the top of your head
  • Can you identify poor Programming practices and sources of bugs when looking at code
  • Do you understand basic structures and patterns like binary trees and recursion / OOP

I would consider someone who knew nothing about PHP but was skilled in a different language and fully understood the concepts to be more valuable than someone with 10 years of full-time PHP experience but didn’t have any wider knowledge (on most projects). Once you know what you are looking for, you can figure out the PHP syntax quickly and achieve competence in a few weeks, but getting a real Computer Science education takes years.

I’ve found that there are only three good indicators of success for a new hire:

  • Specific experience. For example, if you are trying to do a facebook connect module, and the applicant has already used the facebook API, then they are often a natural hire because they will bring domain knowledge. This is usually a special case, and they might only be useful for the one project.
  • Education - any long-term hire that will ever do any system design needs to have a solid foundation, and a formal education is the best way to get it. However, our technical test has caught many applicants that looked good on paper but did not have any practical knowledge for our environment.
  • Personality - hiring a new person that can’t get along with the existing crew can easily be negatively productive so that is something we avoid as much as possible. Other things to look for are traits like attention to detail and willingness to learn or adapt.

Any time that the new hire will be working on architecture or designs rather than just implementing what is handed to them, I think education is more valuable than experience. However, if all you need for them to do is follow your plan then the only real requirement is language competence and basic knowledge of security. That’s not a situation that we normally run into, but for very large corporate Programming teams it can make sense.

If you are a programmer and are trying to increase your chances of being hired, learn about common security issues, source control, and the higher-level capabilities of your chosen language. If you don’t know much about algorithms and basic things like linked lists, take a class or buy a book.

| More

Comments

Name
Comment