Having gone through the process of hiring programmers and support staff a number of times, I've developed a few insights that I'd like to share. Although the bulk of these lessons apply to any type of position, they are geared primarily towards hiring technical staff. Also, this post, as with most of my posts, applies mostly to startups or small businesses as the hiring process for large companies is quite different.
When I first started hiring programmers, I approached the process with a rather cavalier attitude assuming it would be a simple process. After all, what is there to it, post the job, filter the resumes, interview and pick a front runner. Sure enough, after several unsuccessful hires, I learned that it's not so trivial after all.
I will begin with a suitable starting point, deciding who you are looking for. On the software side your choices essentially break down into two general groups: back-end programmers, and front-end programmers. Of course these can be broken down into more specific sub-categories, but in the interests of brevity I focus on these two. Naturally you will start with deciding what specific technologies your potential hire should be familiar with so we will gloss over this point. The real question is how much experience are you looking for? The first thing to consider is how many people are doing this (or a similar) job at your company already? If there are a number of senior individuals and you are willing to dedicate up to 3 months for training, then a junior employee may suffice. Another question is, how pressed for time are you? If time is of the essence then a junior programmer is a poor choice. Such an individual will not only take a long time to complete a task, they will also take up a lot of your senior employee’s time with questions. It is safe to expect that a seasoned programmer will be up to ten times more efficient then a novice so keep this in mind when creating your project plans. This statistic is even more palpable when hiring front-end programmers as they not only have to contend with specific technologies, but also the nuances of those technologies across various browsers. Finally, if you are hiring a contractor rather than a full timer, never go with a novice for obvious reasons (more on contractors later). Why then would you hire a junior programmer? Well there is the obvious difference in wage, but as we know, you get what you pay for. Therefore the main reason is to identify highly creative individuals with potential, that are not constrained by past experience. In addition to this compelling reason, recent graduates often qualify for government grants or subsidies such as Canada’s IRAP program which covers up to $30,000 of an employee’s first year wages. Therefore, hire an experienced programmer if the tasks to be performed are fundamentally complex, your team is small, deadlines are tight, or training resources are scant.
In part 2 of this post I will discuss what qualities you should look for in junior vs. senior developers, but first let us address the contract vs. full time question. My past experience with contract employees has been largely negative. Since they are with your company for a short period of time, they do not take ownership of the product and often produce results that are inferior to those of full time staffers. So when should you hire a contractor? If the task to be completed is highly specialized and nobody on your team has experience with it, or similar to outsourcing, if the task/project to be completed is non-core, isolated, and not expected to be modified frequently in the future. If you do chose to hire a contractor, ensure that you have enough time to perform frequent code reviews and have laid out a proper product requirements document.
The next issue we have to address is where to source from. The obvious options are: staffing companies, online job sites (e.g. Monster.com), company website, etc. My initial foray into hiring led me to use the most obvious source, job sites. After using them for nearly five years now, I'm more and more convinced that they are decent, albeit flawed resources. I continue to use them in the off chance that a good applicant will surface - and this has happened on a handful of occasions - but for the most part, their success rate is quite low and seems to be diminishing. One of the key problems is the ease with which users can scan through a plethora of jobs and submit countless resumes. This results in a massive influx of resumes that don't fit the job description. This of course is not a problem if you have an HR department to sift through them, but if you are a startup, you're likely doing this on your own. As a quick digression, here is how you sift through them:
- Scan to the bottom, if there is no cover letter I tend to discard them
- Paste it into MS Word, are there spelling or grammatical errors, if so then it's gone
- Is it long (depends on the job but 2-3 pages is usually enough), if so then it's gone
- Does it highlight the key skills you are looking for, if not then it's obviously garbage
- Is your company name contained anywhere in the cover letter or resume, if not then it has potential for disposal
If it passes these tests then you can begin to look at it in more detail. I've found that this typically removes up to 80% of resumes and I promise you that individuals that make the above errors are rarely a wise hire. What you are essentially looking for is whether or not the candidate took the time to apply to your position, if not then you shouldn't take the time to read their application.
Returning back to job sites, once you have whittled the resumes down to a manageable level and begin to examine them more closely, you will notice that only 10-30% are potential hires based on education, past experience etc. The key now - and this applies to any resume you receive - is to initiate a phone conversation to gauge their level of communication. A very large chunk of your applicants will originate from places like India and China and may speak very poor English. You must at this point determine how much you plan to communicate with your developer and what it is they will be working on. In 95% of cases I would say that you will communicate a lot and that good communication is the most important skill they can possess. If you expect them to work on routine engineering with a detailed written project plan, and you have a copywriter then you can sacrifice on communication slightly. Once you've completed this process you'll discover that only a small fraction (maybe 2%-4%) of the applicants are actually worth interviewing. I suspect that the reason for this, and this is purely speculative, is that the most talented employees have found jobs through networking, reputation, etc. and a large chunk of those on job sites are the ones that are struggling to find placement. Once again, this does not always apply; I have found some truly spectacular employees this way, but be prepared to prune a large number of resumes. To wrap up, you should use job sites as a secondary option. I've submitted posts where I've found a number of suitable applicants, and I've also had some where not a single candidate was acceptable.
The next resource I've used several times is staffing companies and in general, the experience has been negative. Commissions for staffing companies go as high as 25% of the employee’s first year income, and can be negotiated as low as 8%. Despite my negative experiences, success can be achieved by applying some rules. First off, you will be approached by dozens of staffing companies as soon as your position hits a job board so be very selective. The staffing company or individual you choose must specialize and have experience in recruiting software developers. This will save you lots headaches and wasted time. Secondly, ask the staffing company where they source from and how the candidates differ from those on job boards. You are looking for a company that brings you high potential individuals that are found through years of networking. Finally, meet with the recruiter in person, explain to them what you are looking for, and ask them to re-iterate in their own words the sorts of candidates they will send you. You would be surprised how many will send you resumes that ignore certain predefined criteria. The criteria most often ignored is communication, so I suggest that you clarify what the recruiter what classifies as average vs. good vs. excellent communication. Once you've chosen a staffing company, negotiate furiously as there is often room to bring the commission rate down.
So what are the best sources? Well, once your company has developed a bit more exposure, your company website can become a good source for collecting resumes as applicants will typically take more care in preparing their submission as they likely have a stronger desire to work for your company. Another free alternative is Craigslist which is becoming increasingly popular with job seekers, and best of all doesn't cost anything so why not give it a try. With LinkedIn's user base growing rapidly, I recently decided to post a job on their board as the price point was attractive at only $125. Although I received a smaller number of resumes then I did through other job sites, the quality of applicants seemed to be better. Most importantly I found an excellent candidate that my recruiter was unable to find for over a month. Given my sample size of 1 it is difficult for me to conclude that LinkedIn is a great resource, but once again, with the relatively low price it's certainly worth trying. The best resource however is networking. Create a referral program at your company whereby anyone that identifies a successful candidate is awarded a payment of X dollars. Since a recruiter will cost you at least 10%, you are looking at a cost of $5K-$20K so why not use this as reward money and have people you know and trust do the work for you. With the advent of social network tools such as Twitter, companies with a large number of followers can extend this reward to the public domain. A number of companies have started doing this and seen a great deal of success.
My next post will look at the specific traits and skills that you should look for and the interview process in general.
If you liked this post please follow me on Twitter for more