Note: This post focuses on hiring and recruiting software developers, but these principles apply to other specialist job roles as well.
Job recruitment ads are terrible.
The process of creating job/recruitment ads goes something like this:
- Hiring Manager needs to hire for a role.
- Hiring Manager asks Recruiter to advertise for the position.
- Recruiter asks Hiring Manager what essential technologies & skills are required.
- Hiring Manager lists all technologies & skills relevant to the team.
- Recruiter creates the job ad, listing all of the “required” skills.
So, what’s the problem?
The problem is that we end up with an advertisement that looks something like this:
The MUST HAVE skills experience:
- ASP.NET Web Development experience
- SQL Server (2000 – 2008)
- 2 years in-depth MVC recent experience (design patterns etc..)
- C#/ASP.NET 4.0
- Entity Framework
- TDD, Unit testing and MVC3/4
- Web based development experience
- Finance background is a bonus!
- Agile based projects
- Enterprise level applications
- Must be passionate, team player and enthusiastic
- Flexible to work in various areas of the business
- Outstanding communication and interpersonal skills
- IT Degree or relevant qualifications
The excerpt above was extracted verbatim from a job advertisement I found while preparing this post. I (intentionally) didn’t search long – it was the second job ad I encountered. I am highlighting this advertisement specifically because it is typical.
What’s wrong with our job ad?
- There are exactly 14 “must have” skills.
- One of the skills mentions it is as a “bonus”, leaving us to assume only 13 are mandatory.
- Is it really mandatory to have worked with C#/ASP.NET 4.0?
- If a good developer has “only” worked with version 3.5, then they should not apply?
- Is it really mandatory to have “2 years in-depth MVC recent experience”?
- Agreed, experience with ASP.NET MVC is helpful. But, would deep knowledge of web technologies and web development would be just as (or more) important?
- Is it really mandatory to have “Entity Framework” experience?
- Or, would it be more important to understand data access and possibly troubleshoot ORM frameworks? If the applicant knew NHibernate and SQL development well, would that be just as important?
- How many applicants would say they are not “passionate, team players or enthusiastic”, and do not have “outstanding communication and interpersonal skills”?
Okay, you get the idea. This checklist approach is not an effective way to find good candidates.
Of course, in reality, hiring managers and recruiters will (have to) be flexible on one ore more of the listed items. But that’s my point! Take the time to think about what type of candidate you really want, and list those qualities. It will improve your advertisement, and, more importantly, it will help you clarify what type of person you really need for your team.
“Take the time to think about what type of candidate you really want, and list those qualities. It will improve your advertisement, and, more importantly, it will help you clarify what type of person you really need for your team.”
Possible counter-argument: ”We will get too many applicants if we don’t narrow down our criteria!”
Okay, maybe it is true. It will screen out some candidates. But not the ones you think…
Thus, an outstanding developer might review the required skills in the job advertisement and think:
- “I haven’t worked with C# 4.0″ (even though I’m great with v3.5)
- “I haven’t worked with Entity Framework” (although I’m an expert with NHibernate and data access)
- “I only have 1 year of MVC experience” (even though I’ve done web development for 10 years).
- Therefore, I am not qualified. I cannot apply for this position.
Whereas, the mediocre (less-skilled) developer might think:
- “I know C# 4.0″ (I know Java and I heard the syntax is mostly the same)
- “Yes, I know Entity Framework” (I may have read a blog post about it and I think know how it works)
- “I have 2 years of MVC experience” (I read about the MVC pattern in school a few years ago, so that counts as 2 years experience).
- Therefore, I am qualified. I will apply for this position.
If you are not sure about your advertisement, show it to a few great developers that are not part of your current team. (For example, ask your best developers to show it to their friends, the ones they would recommend as great candidates to hire). Would their friends apply to the advertisement? Why would they hesitate? What would encourage them to try?
Possible counter-argument #2: ”But this position is especially critical and highly specialized! I must include these skills!”
You are might be right. But…
Everywhere I have worked has advertised for specialist roles: some for developers, some for business analysts, some for testers, and some for team leaders. At least once, they have all written highly restrictive job advertisements, received less than desirable applicants (who may talk a good talk), and then had to settle for the “best” of the candidates that applied. Then, the hired applicant didn’t work out…
So, to be more certain, try asking yourself:
- How restrictive is this ad? How many people will meet all of these criteria?
- Are all of these exact skills required? In other words, are they deal-breakers?
- Could I think of anyone who would be great for the role, who might not meet all of the criteria?
- Could I find a good candidate and train them in one or more of the criteria instead?
- Am I willing to wait for the right person? Or will I have to take one of the applicants anyway?
If time is critical and you just need to hire someone who is “good enough“, then the standard job advertisement might work. You may even find the best candidate anyway.
However, its usually worth investing the additonal time to screen your candidates
in other ways. Make the advertisement clear that you’re looking for candidates who can demonstrate their abilities (e.g. by writing good code, solving hard problems, following good practices…). Then, enhance your hiring process to allow them to do so.
A few ways to have candidates demonstrate these abilities could be:
- Submit sample code as part of job applications.
- Have them write code (again) in their interviews.
- Give them small applications that are in need of fixing or enhancements
- Ask them questions (during or afterwards) on why they solved problems they way they did
- Watch whether they demonstrate the skills you are seeking (do they write good code, unit tests, use TDD, …)
Still need help: Feel free to contact me