For a long while now I've been wanting to write a blog post all about hiring developers, so here it is. It got a bit long so I broke into three parts.
This first part focuses almost entirely on the prep work involved. Part II covers the interview and finalization processes, and Part III (not yet written) will flip to how to get hired as a developer. Enjoy!
To start off, I know just how well-worn this territory is. There are many blog posts on this topic out there, and chances are mine may be much of the same. But so be it. In my years on the employer side of the hiring table I've learned many lessons espoused by others more eloquently than I'll repeat here as well as some lessons of my own that I've never seen laid out in black and white.
At last count I think I've hired around 25 people for various technical positions (mostly web developers, but also systems and network administrators, data analysts, help desk technicians, etc.). A couple dozen isn't even that large of a number, especially for folks whose job it is to hire people all the time. With each of those individuals, though, I iterated over my hiring process and honed it. There's still a lot of room for improvement and I'll likely continue to tweak and adjust or even scrap whole tactics in future hiring stints as the situation suggests.
Compared to my fumblings as a novice hiring manager, however, I've come a long way and learned a lot. If nothing else that's the main takeaway from this post: treat hiring like any other technical project. There's no right way to do it (though there are countless wrong ways) and each new hiring instance is an opportunity to improve the process. Never ever stop improving, and never fool yourself into thinking your process (or anyone's process) is perfect.
A quality job post is complete, concise, and cordial. Complete and concise mean that the post covers all the information it should, without being excessively long, such that an applicant can form a good mental image of what they would be getting into. Cordial is perhaps the most critical, though, and that has to do with making your post welcoming, professional, and respectful. More on that in the next section. First, here's a breakdown of the units I consider important for a post to feel complete:
Items 1, 2, and 3 in this list introduce an applicant to the company, a relevant portion of its structure, and their potential place within it. I always like to lead off posts with these three because if I can't write them to satisfaction then I'm not ready to hire for this position yet. Items 4 and 5 are pretty standard, especially for technical hiring. Here it's very important to separate what are potential deal-breakers if missing and what are the nice-to-haves. Finally, items 6 and 7 lay out details on the whole package that comes with employment at Company X, and the official/unofficial split is important. The official workplace benefits are the things that HR or some other admin takes care of and the perks are things that you, as a manager, may have a more direct hand in (like allowing travel or flex time) or are otherwise just a part of the company culture. Here be dragons, so read on about cordiality...
Okay, so I picked the word cordial because it kept the alliteration with complete and concise going. I could have just as easily said congenial, inviting, or whatever the opposite of alienating or off-putting is. This is perhaps the most important aspect of writing a quality job post: your post should repel people only if they lack some of your required qualifications, not because of who they are as a person. This lesson took me some time to truly internalize, and as a white male in the tech industry (i.e. because of my majority blinders) it took a dose of humility to understand what types of words and phrases helped drive quality candidates away despite my naïveté.
The primary goal is to make your applicant pool as diverse as possible. Diverse teams are important. People with different backgrounds and lines of thinking free associate on problems differently and bring a greater variety of solutions to the table. More diverse teams are better at constructively challenging one another. But simply extending offers to more women and minorities, even when they aren't the best candidates who applied, is an awful solution. As a hiring manager you should always be looking for the absolute best candidate for the job, and in technical walks like this that relies heavily on experience and critical thinking skills, not on ethnic background. Fortunately the balance is pretty simple: focus on diversity in the applicant pool and excellence in who gets hired.
Increasing diversity in the applicant pool means taking a hard look at three things:
Every time I took meaningful steps to move any of these three elements in the direction of being more universally appealing to any applicant with the right skill set, regardless of other personal characteristics, diversity in my applicant pool measurably improved. As that happened, though, the overall quality of all of my applicants seemed to go up. I attribute this to the notion that job posts focused on appealing universally to all skilled humans are simply better posts. All these more diverse and otherwise excellent candidates were always out there, and now my posts were more appealing to them. And since these are the first steps in any hiring process they just set the right tone throughout.
In practice, for writing a job post, it all comes down to language. There are a variety of little tricks and tactics that make posts appealing—or cordial—to everyone, and all it takes is some sensitivity and humility to see them. As a general rule of thumb consider that most young white male programmers—the majority—tend to think highly of themselves and their capabilities while women and minorities in the field, for a variety of historical and cultural reasons, tend to be more modest and measured in how they value their capabilities (despite being no less capable). Thus playing to an applicant's ego is a great way to stifle your applicant pool's diversity. Here's an incomplete list of tactics that illustrate that point:
The last one was a tough one for me personally and really requires stepping into the shoes of someone completely unlike yourself (well, if you happen to be a white male like I am). I did most of my technical hiring at SparkFun, a company that keeps multiple functioning beer kegs in the office at all times and has since its birth. This seemed like a no-brainer to include as a perk but, as in the example above, one of the excellent women who worked in HR helped me understand why it's only an awesome perk for people who like beer, and not everyone does, even when it comes to white males. Leaving that off the perks list entirely doesn't eliminate those kegs from existence, and hopefully by the time a candidate learns about them they know enough about the company to not draw negative conclusions about them (as they might just reading about them in first impression of the company). Consider what other perks might behave the same way.
For comprehensive resources on this topic I recommend checking out the National Center for Women & Information Technology (NCWIT). I joined NCWIT as a member of the Entrepreneurial Alliance several years ago and gleaned many valuable lessons, including some of the few I've condensed here. It's also worth noting that writing better job posts will be fruitless if your organization has deeper issues retaining women and minorities. Such issues may stem from aspects of the culture that are subtle or even invisible to someone who is unaffected by them but constantly hostile to those who are. As a hiring manager bringing on new staff is an excellent vehicle to address deeper issues, because why focus on bringing on new staff if you can't keep them? How to address such issues is a much bigger topic than I want to go into here, but suffice it to say there are resources out there to help you define and address such issues in an effective way. NCWIT is a great place to find those resources.
Okay, so you've got a well-written job post. The last step, before listing and advertising, is to consider how an applicant should apply.
When I was sophomorish in my hiring skills I considered a higher barrier to entry a wise move. I was plainly sick of receiving a deluge of completely unqualified résumés every time I listed, and could see that many of these applicants barely read the post and just flung the document at me without a second thought. Why create so much work for myself? Up went the barrier for entry.
Big mistake. Not only did I choke off my applicant stream but I surely alienated high quality candidates that took one look at the hoops I was asking them to jump through and said "not worth it". There's nothing wrong with making candidates jump through hoops (constructive hoops that have real potential at skill assessment), but not right up front. A job post is analogous to a résumé itself. It's a foot in the door, a first impression, a conversation starter. If you're ever considering creating a series of tasks for an applicant to apply because you're getting too many unqualified applicants it's the job post itself that likely needs clarification. Also: no matter how clear you make it there will always be unqualified schlubs who just fire off a résumé. Let them. You're not obligated to put in any more energy than they did.
In general I favor as low a barrier of entry to apply as possible. Maybe it's my eCommerce background influencing my thinking here, because in that world you want the checkout process as frictionless as possible. I think the same applies, because the best candidates tend to also be the ones in the highest demand. They're likely not just applying to your shop, so make it easy to for them to express their interest by getting an application in the pile. Skills assessment and cultural fit are problems to worry about once the conversation has begun, not things to stand in the way of the conversation ever starting.
***
With that last bit of nuts and bolts out of the way it's time to list and advertise.
First, and perhaps most obvious, is to list on your company's website. If that site doesn't have a jobs section then create one. It's worth the effort... even if you have a low traffic website and your applicants will primarily be people who've never heard of you savvy candidates will likely look up the site before they apply to get a sense of the business beyond what the post describes. If there's a means of applying through the company website itself they may even opt to go that route instead of through whatever job post aggregation site they used to find the listing in the first place.
A quick word about company website application forms: make them as short as possible. Applicants hate having to retype their resume content in an endless series of form inputs (and how useful is it to model that information? really?) Again, applying should be as frictionless as eCommerce checkout should be. Most HR departments will require a few yes/no questions that pertain to legal issues like eligibility to work or prior felony convictions. If your HR department pushes for more, like requiring applicants to list every school they ever went to back to kindergarten, push back.
When it comes to listing, I found it best to use an aggregator like SmartRecruiters. Other alternatives include ZipRecruiter and Jobvite, though I've personally only used SmartRecruiters. Such services are essentially middle-ware to get to a variety of different job boards, both free and paid. Picking and choosing listings is like filling a shopping cart, a single job post can be cross-posted on many job boards quickly, and applicants are then aggregated back into one place. In practice, combining an aggregator like SmartRecruiters with a posting on the company website, I would have only two streams of applicants to process though I had posted a given position to several dozen places.
Here's a breakdown of job boards I found to be effective or otherwise for my developer hiring (based primarily in Colorado - location could be a factor):
General audience and worth the money
More industry-specific but still worth the money
Sites catering to classes of candidates that are worth the money
Early on I got all my candidates from CraigsList but that didn't last. I would still post there but found that I would rarely get good candidates anymore. I also had bad luck posting to the Society of Women Engineers for whatever reason - two paid attempts that never netted a single candidate. Maybe the job itself wasn't appealing to their user base, or there were still elements of my post's wording that prevented anyone from applying there. Either way your mileage may vary, but be prepared to spend a few hundred to as much as a thousand dollars on job listings. Budget for it so it doesn't catch anyone off-guard, but sticking exclusively to boards where employers can post for free will really limit the breadth of your applicant pool.
Lastly, it's always worth looking at local opportunities for advertising in your area:
Good applicants will only be able to find you if you make your opening as visible as possible to the world! Put in the work and time and it will pay off.
Regardless of how many streams of incoming applicants you have (in my example described above there are two: the company website and the listing aggregator like SmartRecruiters) it's important to aggregate all applicants in one spot. For this I just opt for a basic spreadsheet. No reason to overthink it.
With a custom spreadsheet there's a bit of a data entry hurdle to clear but keeping on top of the applicant streams or recruiting help from another human or two can keep it manageable. On my applicant spreadsheets I usually include the following columns in addition to an applicant's name a contact information:
Tracking the application vector for every applicant is useful in aggregate to know what listing sites are working to bring in candidates. This is especially helpful when tracking the status of your applicants so you can cross-reference the vectors with who got interviews and who got hired.
Tracking dates is also critical as one thing applicants hate more than anything else are non-responsive employers. Don't be that jerk hiring manager who considers silence as implied rejection. It's worth the time and energy to actively let candidates know when they've been rejected and to do it promptly. But be it rejection or advancement into the interview process a good rule of thumb to consider is that the most qualified candidates tend to be off the job market within just a couple of weeks. By being responsive and getting conversations with your good candidates started early you can at least keep them talking to you while other opportunities materialize for them.
When it comes to tracking status I like to color code things. New/undecided applicants are yellow, rejected applicants (that have received rejection notices) are red and those actively interviewing are green. Here's an oversimplified example of what my spreadsheet might look like in the midst of hiring:
Applicant Name | Vector | Date Applied | Last Contacted | Status | |
---|---|---|---|---|---|
Arnie Pye | arnieinthesky@foo | Company Site | 2015-06-19 | 2015-06-24 | Rejected |
Cookie Kwan | westside@bar | Diversity Jobs | 2015-06-21 | 2015-06-24 | Invited for Phone Screen |
Johnny Tightlips | aintsayinnothin@baz | Indeed | 2015-06-21 | 2015-06-24 | Invited for Phone Screen |
Helen Lovejoy | thechildren@foo | Company Site | 2015-06-22 | 2015-06-24 | Rejected |
Inanimate Carbon Rod | rodcloseups@bar | Stack Overflow | 2015-06-23 | - | Applied |
I've found these spreadsheets are really useful to refer back to when iterating and improving the hiring process, especially when firing up a new round. As such it's important to preserve as much detail as possible. For instance, I put applicants I'm interviewing in bold and keep them that way so that, even if they're rejected down the line, it's still clear that I interviewed them. One could go much further to include columns for each hurdle in the process and the dates an applicant cleared them for even more retrospective granularity. Either way, don't delete anything and be as detailed as possible without creating too much data entry work for yourself. Your future self will appreciate it!
Here's a recap (tl;dr) of some of the major points in this article:
All this detail has just covered the setup and launch of a round of hiring. There's so much more to be said here that I left out and we didn't even get to interviews and beyond!
Thus this is three part article and this marks the end of Part I. Part II covers my interview process and rejecting and/or finalizing candidates, and Part III (not yet written) will flip tables to the applicant's point of view.