Guide to Hiring Developers

Editor's Note: This is the second posting in our series of items from guest contributors. Since all of our current CodeSnipers and community have looked for a job, I thought this perspective would be helpful. If you are interested in contributing to CodeSnipers, please check out the previous posting.

This is the first of a three-article series that touch upon the subject of hiring developers. These articles reflect the procedure that I had established when I was working as R & D Manager in LogicDIS, having interviews for new hires as part of my job. Of course I'll be following the same procedures in my newly formed company, called think.BIG.

There is a lot of material on the Internet with regards to hiring technical people. Some of the most prominent articles and information can be found in the links below:

The first article by Joel is an absolute must. I suggest that you also read the extended version of the article found in Joel's book.

The outline of the process I am using is as follows:

  1. CV Screening
  2. First Interview (30 minutes)
  3. Second Interview (no time limit)

More or less 75% of incoming CVs will be rejected in phase one. Only 25% of those that make it to the first interview will prove good enough to reach to the 2nd interview. I broke the interviewing process in two sessions in order to achieve best utilization of my time. A strict 30-minute first interview makes it easier for me to do 8-10 interviews in a row. The 2nd interviews are almost always scheduled on a one-per-day basis, usually starting at 15:00.

The first interview is equivalent to the phone screening that many companies do before inviting a candidate to an interview. However, I like talking to people and I want to see how they look and feel and talk and move, so I don't do telephone screenings. Remember that this takes place in Athens, Greece, so travel times are not a big issue.

CV Screening
The first thing that you ever see or hear from a candidate is his or her CV. Now it is highly possible that the candidate has also read the above sources of information and has avoided many of the common pitfalls. This is not bad. Indeed it is a good sign. I like candidates that face the whole recruiting process like true engineers:

'I have a task to achieve. What information do I need to know to succeed in it?’

Then they go and look things up in world’s largest encyclopaedia: The Internet. Understanding which candidates to drop immediately, just by having a look at their CV, is the first major task that I am faced with. Rejecting a CV may mean that either the candidate is promising but inappropriate for the position we are currently hiring for, or that the candidate is useless. If the candidate's CV looks good, I might just as well call him for the 30-minute interview, just to see what a kind of person he or she is, let him know about our company, what we do day in and day out, and how we work. More than once we have hired persons whom we interviewed several months ago. When the appropriate opening appeared, the right CVs were in stock.

So my first advice is this:

Interview with as many promising candidates as you can. It is never a waste of time.

All candidates are informed about the two-interview process when we call them to arrange the 1st interview. If they don't like it, the can opt out at that moment.

CV - Things to pay attention to
Let us now see a list of things I pay attention to when I am looking at a CV. Each item is prefixed by a plus or minus sign to indicate whether it refers to something positive or negative about the CV.

(+) Cover Letter
Writing a cover letter demonstrates a sense of professionalism. Most of the sites above recommend it. However a ‘canned’ letter is not worth much:

I am really hardworking and love to learn new things all the time. I would like to work in a dynamic company like GUTS S.A. where I could achieve my full professional potential.

Do you think I am looking for a non-hardworking guy, who hates to learn new things and does not care at all to achieve his potential? If you want my attention write something that comes from inside of you. A truly PERSONAL statement.

(+) Career Goals at the beginning of the CV or the Cover Letter
Remember: Not Canned Stuff. If your life’s ambition is to become a software pro, then I need to know this as soon as possible. These are the people I am looking for.

(-) Spelling mistakes or mistypings that are not errors
Well let’s face it… If in such an important issue as trying to persuade someone to hire you and you don’t bother to spell check and proof-read your CV, then why should I think you will pay attention to something as trivial and unimportant as for example... the metric units used in the spaceship navigation system we are implementing?

Some common mistypings:
You want to type MANAGER but you type MANGER.
You want to type WHINE but you type WINE.

All valid English words but their meanings are quite far apart.

I really enjoyed a comment someone made on some site, about those hundreds of mangers looking for jobs out there...

(+) Touch Typing
If you know how to type without actually looking at the keyboard (that’s called Touch System in English I think), then LET ME KNOW. You are SERIOUS about your work and you don’t want to spend a lifetime looking around the keyboard for the keys. If you don’t know Touch System, then go ahead and learn it now. It will save you endless wasted hours. At work I make it almost mandatory to ALL newly hired programmers. I received some feedback on this issue at Joel's Business of Software. Many reacted with something that essentially boils down to:

"Com'on, will touch system make me write code faster? There can be no correlation between code quality and typing speed, or programming experience/skill and typing speed"

Well, I agree.

In order to write code faster you need things like Visual Assist or CodeRush. Now that I am used, or rather addicted, to them, it is impossible for me to work without them. However, in order to write documentation and emails faster you need Touch Type. If you don't intend to ever write documentation and emails longer than 3 lines, that's fine. Go ahead and telnet port 25.

(+) Career Timeline Summary
I am looking into dozens of CVs each month. I need to be able to locate QUICKLY what you have been doing in the past years. Please give me a quick summary in table format without too much detail, for example:
(a) 1989-1995 National Technical University of Athens
(b) 1996-1998 Military Service
(c) 1998-2001 HonkyDonk S.A. Senior Architect
(d) 2001-currently NASA Chief Astronaut for unmanned mission to Mars

Then go ahead and analyze each section as much as you like. Many resume-advice sites suggest that the CV should not be very long, or it will get overlooked. I am clearly against that. If you have working experience then let me know. I am serious about hiring and I will never drop a CV that is 10 pages long.

(+) Computer Science books you have read recently
If you are serious, I NEED TO KNOW, and I need to know just HOW serious you are. If you read Computer Science books, then put it in your CV. That’s an interview question as well:

Have you read any books lately?

A guy once told me:

I don’t need to read no books; I can look things up on the Internet!

Wow, how did I miss that? Quick, let me call Fowler, McConnell, Brooks, Beck, Don Box, etc, and give them a hint not to waste their precious years writing those useless books they write... Don't misunderstand me here. The Internet is an immensely valuable source of information, but there is a lot of priceless stuff that is not on the public domain.

(+) CV in PDF format
Now most sites mentioned above suggest against this. 'It is a non-standard format' they whine. Well, I am looking for a developer, not a secretary. A CV in PDF shows me that you are serious enough to be able to use one program or another that can spit out PDF.

I sent my own CV 5 years ago in PDF format directly to the Technical Director of a ‘big’ software house here in Greece. The guy himself (not his secretary) answered back that he doesn’t know how to read the document, so if I may send it to him as a doc please. Wow! What makes you think I would like to go and work for a Technical Director who is not smart enough to understand that by asking me such a question he appears outright dumb? You get something that you don’t know how to read. Go and ask one of your developers or your tech-support stuff to tell you.

Then... maybe I like PDF because I used to send my own CV in PDF format :-) It's not such a big deal really.

(-) CV comes in by FAX
Last time I checked we were in the Internet era. Even my grandma goes around nowadays purchasing domain names as Christmas gifts for her grandchildren, and you send me your CV by fax??? Yeah yeah... I know... what if it's just a poor graduate who can’t afford a PC at home, with a high-speed Internet connection? Sure. Then what about Internet cafes and free email accounts? They are a dime a dozen! That is if you know what the Internet is in the first place...

(+/-) CV File Naming
I don't use any sophisticated software to manage the incoming CVs. I just dump them in a folder and then check'em out. When I have to deal with hundreds of CVs, a file called myCV.doc is not helpful at all. A name like DimitrisStaikos.doc is better, but it won’t sort right in a folder full of resumes. Naming it StaikosDimitris.doc is almost the best you can do to make my life easier. It shows a minimal ability to think ahead. You can also possibly prefix the name with the code of the position you are applying for, like in SK42_StaikosDimitris.doc. What I don't find very clever is something like CV_ver7.doc. It makes me wonder: "How many versions of his CV does the guy actually have?"

A name like StaikosDimitris_LogicDIS.doc is also OK for me, because you might have prepared a special edition of your CV for the target company. If you are an old-dog, switching jobs often or working on contracts, then you might add to the filename the year and month of last update, so that it is immediately evident how old the CV is, for example Staikos_Dimitris_Aug_2005.pdf.

(+/-) Communication Email
I think that an email address like fluffy382@hotmail.com is totally unprofessional. I know that you are a funny guy, who is great to hang around with, but we just don't know each other well enough yet for me to call you 'fluffy'. If you are really serious to make a good impression, then go buy a domain name with your name in it, together with a hosted mailbox, or setup some mail forwarding rules. Otherwise just get a professionally looking mailbox at a free provider, like for example Joe.Satriani@gmail.com

This is the end of the first part of my three-article series on hiring developers.

About the author: Dimitris Staikos has been working as a software pro since 1995. He worked for over five years writing Windows kernel mode device drivers and related applications. Then he joined LogicDIS (www.logicdis.gr) where he first served as a Senior Developer for three years and then promoted to R&D Manager and served for two years. Now he is planning to start up his own micro ISV. In his immense free time, he plays the electric guitar, piano, and has two kids who keep life fun.

Kudos on the cover letter part

For years I've been beating the drum about cover letters. In my view, they are just slightly less important than the resume itself, but a good cover letter really stands out. Another good resource on this topic is Ask The Headhunter.

Resume Filenames

I figured out the whole filename thing quite a while ago, but it seems that very few others have. I get tired of seeing "Resume.doc" fifty times.

I send all of mine as "Casey_Keith_Resume.pdf" and I keep archived versions around with the date in there. It makes tracking and sorting much easier.

The touch-typing is a good

The touch-typing is a good point. I worked with a developer once, who did not appear to be able to type without closely watching the keyboard. For one, this seemed painfully slow and second, honestly, this can well be a sign of a programmer who actually never spent much time writing code before. Not good.

mixed feelings

I have mixed feelings on this one. I type well over 60 words per minute via the touch type method, but I've known some people who are surprisingly adept at their hunt-n-peck style. This matter does bring up a good point though -- it makes sense to actually program with someone before hiring them. This may be a little stressful for some candidates, but spending 20 minutes pair programming a small task could reveal many things, the least of which being a typing bottleneck.

Right, plus there might be

Right, plus there might be cultural differences, as many people did not grow with the US keyboard layout. (Myself included; I first learned programming on German keyboards. The major and most irritating difference is that the "z" and "y" keys are switched around.) Still though, I was speaking of my own perception at the time. The typing I witnessed appeared slow and hesitant. Maybe 60 characters per minute?