Since we announced our funding at Radius on Wednesday, just about every recruiter and recruiting website in the Bay Area has spammed me because we're hiring engineers (yes, we are hiring).
When negotiating terms with them, I'm being fairly aggressive though. I'm only offering about half of what they're getting from other firms. Why is that? Because I challenge this notion that programmers are a scarce resource that they somehow know to tap into, or that their website has cornered the market on.
Exhibit A: the Windows 8 App store.
There are DOZENS of password managers and anti-virus programs in here. Dozens. And every one of those required one or more programmers. This is for an app store that no one cares about on Windows 8. Now consider the hundreds of thousands of shovel-ware apps on iOS and Android as well. Or crappy websites. We're talking millions of people who can write serviceable crap-ware out there in the world.
The reality is, there's no scarcity of people who can bang out computer programs. Not even remotely. The "scarcity" problem I think businesses face is two-fold.
1) Public relations.
It's not that programmers are hard to find. It's that it's hard to find ones that will work for you. Or even know about your company.
Google, Dropbox or Twitter have no problem with this. All are huge brand names, great places to work, pay well and have compelling problems to work on. They're viewed as technology companies.
In contrast, it was hard to get decent programmers to work with us at Groupon after we went public for several reasons. One was, of course, candidates believed the IPO took away most big upside on future stock grants (turns out, that was true). But the main ones were that Groupon "wasn't a technology company". The company had a lot of bad press, bad merchant experiences. The founders took a lot of money off the table in a late round. Things like that.
All of that is PR and marketing, not recruiting. There's no secret sauce that some recruiting firm is going to be able to put out there to change these things. Either people know about you and want to work for you, or they don't. I'm confident that we're establishing a brand at my current company that will sell us as an awesome tech company more than the recruiter will. I'm paying them to feed me resumes, that's all.
2) Core competencies
Note that until now, I've been using the term "programmers". You could use this interchangeably with "hackers", "script kiddies", "coders", "developers" or whatever your choice for someone who is competent enough to open Xcode and write shovelware for the iPhone, or bang out pages with N+1 select statements in Rails.
Another term I have for this is "Goo-coders": people who can write code only because Google exists and they can search for the answers on Stack Overflow or whatever.
There is a higher level than this, and the name I apply to it is "software engineer". I understand that people debate this term vs. "software developer" or "software craftsman" (I'm sorry, but barf). Whatever you want to call it, here is what I mean by it: someone who has a deeper understanding of how computers work, can have a conversation about code, doesn't have an agenda for certain tools ("I must use Clojure at my next job"), can figure out best practices where there are none, and can implement a robust, well-designed, scalable software solution based on requirements without hand-holding.
Those are the core competencies I want. Yours may be different, but those are mine.
I have to look through a lot of resumes to find these people and recruiters aren't that good at filtering them. A lot of times, someone looks good on paper but after 10 seconds of talking to them, you know they don't fit into the above. So I end up spending more time than the recruiter on all of this for any given person. In addition to filtering through the resumes I get, I spend the time to phone screen, to set up interviews, negotiate the offer, blah blah blah.
All of this adds up to: most recruiters are sourcing me solicited resumes, nothing more. In fact, I know one recruiter (that we've since fired) was simply doing Craigslist arbitrage. They took our job description and posted it to craigslist, then they did almost no filtering on the results before forwarding. I know this because I ask candidates where they heard about the job. If you're using a recruiter, you should do that too. This work was not even remotely worth the amount we were paying this company and I refuse to do it again. You should too. Even if you know nothing about software engineering, you should instead find someone to help you filter results when you post to craiglist yourself first.
So my recommendation, when you're looking for people, is to:
a) Hire a PR company instead of paying recruiters a ridiculous percentage.
b) Sign up for something like Jobscore, which allows you to figure out which online job posting funnels are working best for you.
c) If you truly know nothing about engineering, go make a friend at a local hackathon that can help you do phone interviews for you.