This essay outlines my approach to writing job descriptions. It is the second part of a mini-series on hiring top engineers. Although I think about hiring from the engineering standpoint, most of the advice is universal.
The key to remember is that talented engineers have a choice of where to work, therefore it is the hiring company's job to sell the prospective candidates on itself. Jobs with mediocre descriptions tend to get mediocre candidates who apply everywhere it is possible to apply.
About The Company
A job description should briefly introduce the company and its real (for an established company) or hopeful (for a startup) place in the world. The goal of this section is to make the candidate excited about the company, so that they would spend several hours going through the interview process for your vacancy.
"Compare and contrast" is a very effective technique in this regard, and the comparison can be expicit or implicit. For example, Google's mission statement is to "organize the world's information", implying that currently the world's information is not organized. Microsoft wanted to put a "computer in every home" at a time when computers were a rarity.
The company blurb should provide a decent idea of the company's potential. Most companies want to hire employees for long employment periods - it only makes sense to tell the prospective empolyees what they can expect if they choose to stay at the company for a while. Talk about the company's successes to date, current situation, short and long term goals.
Avoid fluff and marketing speak. Engineers can spot it from a mile away and it does not present the company in a good light. Obvious signs your blurb needs more work are:
- Most of your "about us" section also applies to a competitor of yours;
- Most of your "about us" section is also true for a random company of your size which is hiring for a similar position.
About The Job
Make sure to describe the job in the job description! It sounds obvious but many companies barely mention anything related to the position that the job ad is for. Recent college graduates often choose companies based solely on their perceived image in the world, because they don't have other preferences; more experienced workers usually care a lot about what they would be doing day to day, because they've learned that there is massive variability between companies in this regard. If you are looking for senior talent, you need to have a clear description of what role you are hiring for.
Be honest - just like you are interviewing the candidates, the candidates are interivewing you during the hiring process. More talented candidates who have more employment options (who are the people you probably want to hire the most) will be able to spot the inconsistencies between the job description and the reality, if any exist, and that's a red flag.
Technology often matters thus include the tech you are using or are planning to use in the near future. Don't say you are "technology agnostic" unless you have actually changed a programming language or framework during the company's existence - see above regarding being honest.
Signs your job description part of the job description needs more work:
- Your junior and senior job descriptions are virtually identical;
- Your job descriptions for backend and frontend engineers are virtually identical;
- Most of your job description can apply to a job which is not in the engineering department.
Now that you have set the stage by describing the job, you can enumerate any requirements that the candidates must meet before you would talk to them.
A huge benefit of writing good candidate requirements is doing so helps you clearly define who it is you are looking for, which then helps you screen resumes efficiently. To this end, anything listed under "requirements" should be truly required, in the sense that you should talk to any candidate who meets the requirements and you should not talk to any candidate who does not.
Every position should have at least some candidate requirements, otherwise any person off the street could theoretically fill it. But as many companies would consider a wide range of candidates figuring out what the requirements really are focuses the company on the essential skills, traits or achievements it deems absolutely necessary for success.
Signs your requirements section needs work:
- You don't have a requirements section;
- It is not clear which of the requirements are in fact required (requirements and nice-to-haves are mixed together);
- Your requirements include theory/skills/technology that the hire wouldn't use in the first 6-12 months on the job, or ever;
- Your requirements include frontend/design/UX and database/devops bullet points in the same job description.
Nice To Haves
This is the section where you list out all of the skills, abilities, traits and accomplishments that you consider helpful for the performance of the defined job, or would make you more likely to hire the candidate. In most tech companies this section would be bigger than the requirements section, as the true requirement for tech talent is something very close to "smart and gets things done", with the details going into the nice to haves.
List all of the tech you are using, or considering using, here. If the role is primarily a backend role but has some frontend potential, this is a good time to mention it. Nice to have section communicates to the prospective applicants which of their less developed skills they may be able to utilize in your company, or potentially what skills they may be able to learn. Along with the company description, this section helps the candidate determine their potential in the company.
Benefits & Culture
If your company has regular happy hours, an "unlimited" vacation policy or other perks, this is the place to talk them up. Again, it's best to be truthful about both benefits and culture: covering premium for the cheapest health plan with a $5,000/year deductible hardly qualifies as "outstanding health insurance coverage", and if the company used to have weekly happy hours but the latest one was months ago putting "weekly happy hours" on the job ad is misleading. Things like 401(k) match and health insurance premiums can add up to a significant amount of money, and claiming benefits that the company doesn't in reality offer is very similar to paying a different salary to the one agreed on.