Note: I'm not looking for work (unless you're some European company foolish enough to pay my relocation expenses
I was reading about a company having difficulty finding competent Perl programmers. The problem appeared to lie, in part, with the advertisement. The main thing you want out of an ad is for people to read it. If you have nothing compelling in the ad, the people who will read and respond are the unemployed or the unsatisfied. Why overlook the competent, happy programmers? You want everyone reading your ad.
I'll get the most contentious issue out of the way first. It's the first thing programmers want to see and the last thing employers want to admit.
If you really want their attention, list a salary range.
If you have the courage to list a salary, that commands attention like nobody's business. Let's face it: how often do you read a want ad and not look for a salary? When scanning a list of ads, most programmers are going to first read the ones with a salary.
I think most programmers suspect (either consciously or not) that any company that is not willing to list in their ad even a hint of the salary range is going to try and pay too little. They want to see if they can pull a fast one and pay 10 to 20 K less than the programmer's worth. So there, right in the ad, is the first mark against the company.
Note: The range isn't set in stone and it can be a wide range. The lower end should actually be less than what you expect to pay because anyone hired at that will resent it.
What do you want?
I don't care if you want me to write robust, scalable, buzzward-compliant code. Everyone wants that. Big deal. I don't want to read something obviously written by a marketroid. Hell, write that you want fragile, insecure, poorly organized and undocumented code and you'll have everyone's attention. That would be easy to twist into a funny ad that programmers will appreciate.
my @wanted = qw/fragile insecure obfuscated/;
@wanted = map ! $_ => @wanted;
If you only need (or are willing to pay for) a maintenance programmer, don't try for top-notch programmers. Most will realize this in the interview and either not take the job or take it with the intent of leaving for something better as soon as they can find it. This is a waste of time for everyone (and often a huge waste of money for the company.)
Do not let Human Resources write the ad.
Many companies have policies that HR must approve all hiring ads and that's fine. Good HR people are worth their weight in gold and are tremendously underappreciated but they rarely understand tech culture and will usually not create a compelling ad. They don't know what TDD, SQL or XHTML are. They can't build an effective ad around that. To this day, I still laugh about the company that tried to recruit me with an ad for a senior programming position where I had to demonstrate a "strong marketing and sales background."
Write the ad yourself, run it past your tech people and then hand it to HR. Before it goes out, you and HR need to mutually agree on it.
Don't list every damned skill that all of your developers have.
Help wanted: entry level programmer with Perl, Mason, JSP, SQL, ASP, ASP.net, JUnit, XML, XHTML, WSDL, RDF, EasyTrieve, Crystal Reports and SOAP.
You've seen those ads and you know they're a joke. Maybe (maybe) you have a position for a lead architect who needs brief exposure to all of these to be able to do her job, but I doubt it. List the skills they're really going to use on a day-to-day basis. Why scare people off?
Understand the programming culture: it's Perl, not PERL.
This one is really important. Yeah, it seems nitpicky, but this is such a huge sore point in the Perl community that having PERL in the ad says one of two things: the technical people are clueless or bureaucracy is heavy enough that HR can pump out rotten ads without the techies knowing (or having the Power to do anything about it.) If you really want top-notch programmers, why bother to screw up something so basic?
Why do I want to work there?
Many ads tell me what they expect of me but say little about what they really offer. Medical, 401K, carpeted cubicles, blah, blah, blah. I don't care. I can get that anywhere and I'll find out in the interview. Is there comp time for overtime? Do you practice TDD? Real, full-time DBAs to work with the programmers? (I drool over that one.) Will I get to learn cool new technologies? Is there a book buying budget? Is the work really unusual? (I'm astonished at how many ads don't tell me what business problems I'll be solving.) Tell me what makes you special and that will really pique my interest.
You don't want 5+ years of experience.
Are you really going to turn down that awesome programmer because he only has 4 years and 11 months of experience? What you're really looking for is a certain minimum level of competency. Figure out how to assess that.
Dogmatic hiring qualifications are a sign that the company has rigidity problems. Yes, there are times that such qualifications are necessary, but when you're posting an ad for a Web monkey, they don't need a BA. Remember, you're looking for someone with whom you want a good, probably long-term, relationship and as such, you don't want to throw out qualified candidates for no reason. It frustrating when you have two applicants who are perfect for one job, but it's awful when you have one "almost good enough" person and you're rereading old applications.
Here's a quick test: if your ad says that candidate must have X, pretend to be the candidate and ask yourself "why?" Have you promised your clients that the person supporting their servers is a RHCE? You have to keep that promise or be honest enough to tell them when (and why) you're breaking it. Are there legal requirements involved in the qualification? Fine. You don't have a choice. However, if you can envision a perfect candidate who falls short on the qualification, drop it. You can always keep that in your mental "nice to have" checklist.
There's a lot more, of course, but those are the things that I'm always looking for in ads. It's really not that hard, but the poor ads that are out there seem to have formed most people's mental templates of what an ad should be. Forget about that. Your job is to find people, not to write another ad that no one will remember or care about.