Frencil's Corner

Frencil is Christopher Clark, a guy who likes science, math, and programming.


How I've Learned To Hire Developers - Part I; Getting Started ~ 2015-06-25

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!

Iterative Preamble

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.

Anatomy of a Healthy Job Post

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:

  1. About the Company - Describe the company as if you're talking to someone on an elevator. Hit all the major points, goals, history, whatever in only a few sentences.
  2. About the Department - If applicable describe the department or team that this position is a part of and how it fits within the overall company.
  3. The Daily Workflow - What can applicant actually expect to do every day?
  4. Required Qualifications - What bits of knowledge or experience are necessary to be in the running
  5. Preferred Qualifications - What extras are applicable and will help a candidate stand apart from other applicants but are not necessary
  6. Workplace Benefits - Official benefits like vacation and/or sick leave, health plan details, etc.
  7. Perks - Unofficial benefits like flex time, attractive aspects of the office like an on-site gym, etc.
  8. How to Apply - Clear instructions on how to submit an application, if not obvious

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...

A Diversion about Diversity

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:

  1. How the job post is written
  2. How and where the job post is distributed
  3. How high the barrier for entry as an applicant is

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:

  • Avoid words like "rockstar" or "ninja". These labels appeal primarily to "brogrammer" culture and simply aren't professional. At all.
  • Avoid quantifying experience with a given skill or technology in years. Applicants with a more modest impression of their experience will tend to see these hurdles as much more solid than they really are. Instead of asking for 2, 5, or 10 years of experience with something I might ask for "general understanding of", "experience with", or "proficiency with" a given technology, respectively. This still makes it clear what I need but is way more flexible.
  • Avoid qualifiers like "strong" or "expert". This may seem odd because of course you want someone with strong skills in language X, but the thing is minorities in the tech field (especially women) have overwhelmingly been conditioned by the field's culture to undervalue their skills. This happens to men too, though disproportionately. What qualifies as "strong" may be very different to a candidate who thinks differently than you or has a different history in the field but is otherwise an excellent fit. As an extension to the previous point, "experience with" or "proficiency with" are more effective terms that allow more modest candidates to picture themselves in the role with more flexibility.
  • List items in descending order of importance. Any section that is an unordered list (e.g. either of the skills sections, workplace benefits, perks, etc.) should lead off with the most important bullet point and form an unofficial ranking as they descend. This plays into how people read/skim content, because in long lists they may only read the first few points. Make them count.
  • Be careful considering what to include for perks (the unofficial benefits). You may think it's awesome that your company has beer and foosball, and so might the young white male applicants, but other well-qualified candidates may read that and picture a frat house environment that they want no part of. You'll never know, either, because they simply won't apply. Stick to perks that appeal universally to everyone, like employee discounts or opportunities for professional development.

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.

Where and How to Apply

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

  1. Indeed
  2. LinkedIn
  3. Monster
  4. GlassDoor

More industry-specific but still worth the money

  1. Stack Overflow
  2. GitHub

Sites catering to classes of candidates that are worth the money

  1. Diversity Jobs
  2. Levo League

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:

  1. Job board websites localized to the area, perhaps run by a local chamber of commerce or similar organization
  2. Job board websites associated with nearby colleges
  3. Mailing lists associated with local organizations and meetup groups with an applicable focus
  4. Physically going to meetups with applicable focus—many tech meetups kick off gatherings with a call for open job opportunities

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.

Keeping Track of Applicants

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:

  1. Application vector (e.g. company website, Indeed, StackOverflow, etc.)
  2. Date they applied
  3. Date of the last time I contacted them
  4. Current status as an applicant

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 Email 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!

Conclusion / Continuation

Here's a recap (tl;dr) of some of the major points in this article:

  1. There's no right way to hire (though there are countless wrong ways) and each new hiring instance is an opportunity to improve the process.
  2. When setting out the primary goal is to make your applicant pool as diverse as possible.
  3. Instead of just assuming how best to approach hiring that appeals universally to all people (especially women and minorities) use the resources that are out there.
  4. The barrier of entry to apply should be as low as possible—focus on skills assessment in the interview process, not right up front.
  5. Be prepared to spend a few hundred to as much as a thousand dollars on job listings and use a listing aggregator for efficiency.
  6. Track your applicants in one place with high granularity. You can use this information in future hiring to learn how to tweak your process.

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.

--

Christopher Clark
2015-06-25