Hiring Programmers

We've just gone through a period of job interviews at work, hiring for C# and ASP development roles. It's been the usual mixed experience. We had one candidate pull out before an interview on the grounds that they 'refused to answer technical questions' - that was a low point. We had the usual fight with agencies over the level of experience we required (we ask for two years' C#, they send CVs showing 3 months.). We had, as usual, a generally very bland selection of CVs from average candidates to pick from. Luckily, this means that the really good candidates stood out from the norm even more, and we've hired some good people.

The trouble is, most programmers have nothing to differentiate themselves. I see CVs from people with 10 years' VB experience with two years' .NET (mostly in VB.NET with ASP.NET) and six years' SQL Server every single day. They've all done a variety of projects - almost all of them have spent at least three years building VB apps for the financial services industry - and they're all probably very nice people. Every time we interview someone with this sort of CV, though, they give the clear impression that they have moved to VB.NET because that was the next version of VB, and they've done precious little to adjust to the OO platform. What's a delegate? What would you use reflection for? Have you come across design patterns? What is an assembly? What's the real difference between a value type and a reference type*? Either I get canned answers without a flicker of deeper understanding, or a plain old 'I'm sorry, I've not really used that...'

I also don't get much of a feeling of enthusiasm for technology from these people. I guess if you've spent ten years fighting with Visual SourceSafe and COM, you lose your joy at discovering a funky new development toy in the end. I want people who have a demonstrable history of hacking about with technology. I like to see people who have PHP and Perl on their CV alongside C#. I love to see people who have Java experience (proper Java experience, not 'once built an applet' Java experience). Evidence that they once programmed a text adventure in DOS BASIC or on a Commodore 64 is solid gold. A current, active personal website would help.

Perhaps worst, and this applies across a wide range of interviewees, was the general level of interview technique. You have an hour of your interviewers' time in which to persuade them that you are someone they want to employ. You need to find, in every question you're asked, a way to sell yourself. When you're asked to recall a time when you worked as part of a team towards a deadline, don't pick a time when you missed the deadline (unless it's a really funny story). Find the parts of the story that emphasize which of your qualities helped ensure the team was successful. And always give the interviewers slightly more than they asked for. Don't make them work to drag what they want to know out of you (they want to know if you are a sheep, a leader, or a disruptive buffoon; they want to know if you can compromise to meet a business need) - if the interviewers have to keep probing, they'll get tired of trying, move on, and they'll never know that you're really quite good at teamwork.

And don't get me started on language skills. I'm a firm believer that computer programming is a communication skill. To do this job well, you need solid English comprehension - people will explain what they want you to do in plain English - and the ability to sort ideas and concepts into logical, coherent structures, so you can formulate computer programs which are comprehensible both to the computer itself, and to maintenance programmers. I therefore am also firmly of the belief that if you can't spell or formulate a coherent sentence or paragraph, you have no place in a development team. The number of CVs I see which disqualify the applicant on this basis alone is disheartening in the extreme.

Main lessons? If you're a .NET programmer, take some time to learn how the platform you're using really works. Learn some proper OO techniques - read about design patterns. When an interviewer gives you an opportunity to show how bright and interesting you are, take it. And spellcheck your CV. No, scratch that - learn to spell, then spellcheck your CV. If it finds more than three typos per page, your spelling's still not good enough.

* Hint: you won't get very far with me parroting the old 'value-types-are-allocated-on-the-stack-reference-types-are-allocated-on-the-heap' mantra

Print | posted on Thursday, February 03, 2005 9:05 AM

Comments on this post

# Passing That Interview

Requesting Gravatar...
Left by Dan's Archive on Feb 03, 2005 10:00 PM

# re: Hiring Programmers

Requesting Gravatar...
Perhaps the problem is an anachronistic function approach with static type checking on return values with fixed input types. In the post-post-modern programming of today inputs determine outputs utilising properly delegated responsibilities with type-independent method forms, hence your failure to receive the desired outputs is your own fault. ;)
Left by ppj on May 20, 2005 2:11 PM

# re: Hiring Programmers

Requesting Gravatar...
Have you ever thought about using effective tests to determine a few things about programmer applicants? First, their innate ability/aptitude to work as a first-rate programmer; second, their in-depth knowledge of the languages they work with, and third their analytical skills.

For the last 30 years, our company has been providing just such tests, of a type that nobody else has.

Might you be interested in learning more?

Have a good day..

Stephen
tel: 800-361-4908 x 303
Left by Stephen Silver on Jun 16, 2006 2:35 PM

Your comment:

 (will show your gravatar)
 
Please add 8 and 1 and type the answer here: