When you're advertising a developer position online, a job posting is often the first time a developer hears about your company. Despite the posting being the first step in the hiring flow, companies put little effort into them, often having it be little more than a list of requirements for the candidate. This kind of poor job posting will stop talented developers from applying to your company. By improving your job posting, you’ll get more and better applicants. I’ve helped a dozen or so companies with writing job postings for developers, and want to share my tips for creating a good posting.
Communicate the culture of your development team
Talented developers tend to make the assumption that any given company is a boring place to work with a poor work environment. By describing the culture of your development team, you can set yourself apart from other companies.
A good place to start is by asking your existing team to describe what it is like being a developer there. What do they enjoy about working there? What values do they have? How do they develop software? Based on their answers, write up a couple paragraphs describing the development culture.
If your company has open source contributions, be sure to mention that it values open source and link to the contributions (such as your company's GitHub organisation page). Seeing that a company has contributed something meaningful to the community (i.e., not just a wrapper for their APIs), sends a good signal that it has a healthy environment for developers.
Avoid requiring experience with specific technologies
Besides culture, talking about the technology you are using can be a good way of connecting with candidates who have used the same technology in the past, or want to try it out. I’d steer away from putting requirements with experience in a specific candidate unless it is absolutely necessary, as a good developer can become proficient with new technology in days, and outperform experienced but poor ones in months.
Furthermore, I’ve noticed that good developers tend to underestimate their skills, and I’ve seen ones that almost but don’t quite meet the listed requirements avoid applying, despite them being a great match for the position. Rather than letting the candidates talk themselves out of applying, you’re in a better position if you let anyone who is interested in applying do so, and then work on improving your screening process to quickly weed out the bad matches.
The only case where I’d explicitly look to hire a developer experienced in a specific technology is when you are hiring for a new technical skill set that your team doesn’t already have. For instance, if you are looking to develop your first iOS application in house, and are wanting to hire someone to develop it, requiring experience is perfectly reasonable. In the job posting though, I’d make it clear that this will be your first iOS hire, and that’s why you’re looking for someone experienced. Furthermore, rather than putting in a requirement such as "three years experience iOS development", use something achievement based instead. “Have your own app on the iOS store” is a much more meaningful requirement, and will help you filter out poor candidates better than the years of experience requirement, while not discouraging quick learners from applying.
Clarify your position on remote work
Another thing that can be worthwhile putting in the posting is whether you allow employees to work remotely or not. I’d only put this in if you have a firm stance on this, be it your company is already set up to accommodate remote developers, or your company requires them to be onsite (if so explain why). If you’re company doesn’t have a strong opinion on it, I’d not mention anything about it though.
Don't list generic benefits
After you’ve covered culture and technology, I’d include benefits, but only if your company offers something exceptional. So don’t bother listing stuff like health insurance or paid holidays, as it is the expectation that you’ll offer them. I’d exclude minor benefits like catered meals or on site gym as well. These kind of perks can be great when your employees talk to other developers about how great they are, but as a bullet item in a job posting they don’t do anything to convince someone who would not otherwise apply to do so. The absence of a benefits section leaves a better impression than one with poor or average benefits, so don’t be afraid to not have one at all.
Help applicants make their application shine
Give candidates detailed instructions on how to apply for the position. Describe to them what your ideal application would look like, rather than hoping they send you what you want to see. Developers are terrible at applying for jobs and by giving them instructions on how to do so, you help avoid biasing yourself against those who are good candidates but poor at applying. I think Stripe’s questions are a good starting point:
You should include these in your application:
- A writeup explaining who you are as a programmer. Sample questions you might want to address: What projects have you enjoyed working on? Which have you disliked? What motivates you? What surprising things have you learned about yourself since starting to program?
- A piece of code that does something you find interesting, and an explanation of why. (It doesn't have to be your own code.)
- Links to online profiles you use (GitHub, Twitter, etc).
- A description of your work history (whether as a resume, LinkedIn profile, or prose).
If there are teams you'd be particularly interested in working on, please let us know (and tell us why!). This way we can have you interview with the people you'll likely work best with. This won't bind you to a specific team—we can figure that out together as the we learn more about your interests and strengths.
What I like about Stripe’s questions is that they reflect what is important to them when making a hiring decision. They are also open ended with no clear right answer, so they help candidates get their personality accross.
Describe your hiring process
As a final section, included what your hiring process looks like. Having a clear process in place demonstrates to candidates that you’re taking them seriously, and that their applications won’t go into a black hole. One of the best examples of this (and job postings in general) is nccgroup’s security consultant jobs page:
We like our recruiting process to be transparent to our candidates. It roughly consists of the following steps:
- An initial call between you and a member of our team. We’ll tell you more about the company, the work that we do, a day in the life of one of our consultants, and why we think NCC Group is a great place to work. Our pitch, basically. You’ll surely have some questions for us. Ask away! We will also have some basic technical questions on this call, but they are more for scoping your experience, rather than to determine if you move forward. You will move forward past this point.
- 1-2-1 technical phone interviews. We’ll connect you with members of our team for more in-depth technical conversations to see what you know and how your mind works.
- Practical Challenges. We have several at our disposal that we can use to gauge practical abilities in areas like web application, network security, and protocol analysis. Most candidates will complete both the web and protocol challenges. These challenges aren’t meant to be imposing. We will arm you with resources allowing you to prepare adequately to be successful.
- In-person interviews. We now have a good sense of your skillset. If it seems like a good fit, we’ll bring you in to meet with the team in your preferred region for some final interviews.
- The offer. If you made it this far, hopefully we’ve hired you!
After reading it, I’m left with the impression that they’ve thought a lot about the hiring process, making me enthusiastic to work with them as they clearly value hiring the right people (so their existing team is probably great).
Need more help?
I'm happy to give you feedback on your developer job posting. Just shoot me an email at firstname.lastname@example.org and I'll give you some suggestions on how you can improve it.