Hiring developers

It turns out to be quite difficult to hire good developers. I’m involved in the hiring process at deviantART, and it has opened my eyes to just how unqualified the majority of applicants to these jobs are.

To give an example of this, I estimate that we hire perhaps 0.2% of the people who apply for a job with us. I haven’t gone back and tallied this up, so all figures in this example are ballpark at best… but I’ve tried to err on the generous side.

First, we collect resumes. We advertise on all sorts of job sites, we post things to Hacker News, and generally we try to get the word out. Filtering the resumes eliminates about 95% of them, depending on where we’ve been advertising. This is simultaneously the step where unqualified applicants are most expected, and the step that’s most likely to be rejecting perfectly qualified people because of some random quirk of their resume.

Then we ask promising applicants to do a simple exercise. This one, in fact. It really is fairly simple… not FizzBuzz, but still trivial. This gets reviewed by the entire hiring team. Passing it is somewhat subjective; there’s a list of things we look for, along with an ineffable “code style” component. This weeds out about 90% of submissions.

Next comes a phone interview with those who passed the test. Again, with the entire hiring team on the line. Since you’ve made it this far we’re pretty positive about you, and strongly suspect that you can code competently, but we’ll still try to dig into your past experiences and quiz you on the reasons for things you did on our exercise. Ideally you’ll have left a small bug in the exercise that we can get you to debug while we’re on the call. It’s not uncommon for us to be underwhelmed here, and we tend to turn down maybe 60% of candidates on this step.

Finally comes a three month trial period. Which we take seriously. I’d worked places with a trial period before, but it was always just a matter of not showing up to work drunk and you’d make it. We evaluate performance, work style, and general team fit… and we seem to lose perhaps 20% of hires here.

Adding all that up, P(we hire you) would seem to be 0.0016. Or 0.16% if you prefer.

The step that seems the most telling is the exercise, because it goes out to people who are generally already making a living as a developer. And, like I said, it’s not difficult. So we get to see how many professional developers apparently can’t perform their job function. For that matter, a hefty chunk of the people who fail that step just plain didn’t complete the listed requirements.

Despite all that, feel free to apply! 😀

UPDATE 2011-10-01: Some people have mentioned that PHP is keeping them from applying. Can’t blame them there; it’s not cool and modern, and it has some ugly warts. But we’re an old website (11 years now), and back in the day it’s what was picked. Rewriting into something cool and modern is technically possible, but would also be a genuinely ridiculous amount of work.

UPDATE 2011-10-02: It was pointed out to me that I may not have conveyed my point correctly. I mean to say “hiring good people is hard”, not “we are too awesome for you”. The numbers are intended to indicate our low success rate more than our exclusivity.

Join the Conversation


  1. I saw your job ad on gun.io and after years of seeing neat stuff on DA I was curious enough to look into it more, but decided to pass. There’s major information missing from your ad, maybe this is skewing your candidate pool’s average quality downwards.

    Thre’s no salary information on the job ad, it says “Salary and potential stock option packages commensurate with previous work experience.” I read that as “We’re going to ask you intrusive questions about what we you’ve previously earned and then bargain you down.” I’ll cop to a bad attitude there after some recent bad negotiations, but it’s still a missed opportunity. Even something like “We use data from payscale.com/salary.com and consistently pay above average.” would be huge.

    There’s no info about your technology stack, though it’s implied it’s PHP. I caught one of your devs on Twitter (there’s no contact info on the job page, but I picked a random name off the twitter feed on the associated blog post). I learned you have an in-house MVC framework. Maybe with yours is awesome, but nothing in the ad tells me that and “custom PHP framework” are words to dread.

    Actually, there’s nothing at all obvious to tell me about how you work. What’s the day-to-day? The recent “how GitHub works” posts at http://zachholman.com/ are pretty awesome for this. Not only does it let people imagine themselves in the role, it gives you a chance to show off some of your neat tech.

    Last, the application process is a soulless form with “LinkedIn” at the top. It doesn’t look anything like meeting an interesting group of fellow coders, it looks like meeting a recruiter, and that’s one of the least pleasant parts of being a coder.

    As a potential employee, it’s a lot harder for me to put the many potential employers through a series of tests, though it’d be nice to be able to check references, ask them to write some code, see the workplace, and then winnow them through a reality-show tournament of intelligence and strength tests (no? just me?). Instead I have to try to guess at what’s left implied by each ad, and the bad employers hugely outnumber the good – so I guess this has been a long version of your resume screen. “…the step that’s most likely to be rejecting perfectly qualified people because of some random quirk”.

    1. Heh, yes, “in-house PHP framework” is one of those warning keywords to look out for generally. In our case it’s because we’re old by web standards; we’ve just turned 11, and back in those days there were limited options. A rewrite into something more modern is technically possible, but is also sort of hard to justify.

      Ultimately, we’re a big successful website, but we’re not “cool” to the technical types. This is probably not helping our ability to attract better applicants.

      1. Maybe, if you consider remote hires for your internal server C++ job, you could attract better talent.

  2. You know, I’ve been kicking that analogy I off-handedly closed with around in my head the last few minutes and I think it’s dead on. Resumes suck, and job ads suck, too. There’s a standard template of what to include and it leaves out all the soul of a person or company.

    DeviantArt has one, right? Find it, get it into HTML, and then delete your job ad and post that instead.

  3. Posting all over the internet will surely cause an huge increase in underskilled applicants. I’ve had insurance salespeople apply for development positions before.

    I like your basic skills test to weed people out. I would take it a step further, and not allow them to contact you unless that complete A, B, C and D correctly. It may require modifying the test, and some dev time, but if you’re spending such massive amounts of time weeding people out, perhaps it’s well worth your time.

  4. I just plain skip job listings that require PHP. I hope it’s working out well for you, but I’ve already wasted more time than I care to with sub-standard technology (Lotus Notes).

  5. Hey Peter, I appreciate your comments because they match up with my own observations almost exactly. I see devientART job postings pretty much every month on Hacker News, and I saw an ad on reddit recently, and as someone who is interested in remote work they really stand out to me. But the issues you mentioned in your comment also stood out to me, and I think their job postings could use a little more detail (or maybe just different details). I wish them the best in their search for developers, though I’m afraid I’m not that into PHP myself, I’m more of a Python guy.

  6. You are really NOT the kind of people most of us who are technically oriented would want to work for.

    You’re using old tech, you are not up front with who you are and what you can provide in exchange, and your hiring process sounds like a knitting circle of “coders” – not programmers.

    P(hackers_applying) = 0.01

    We’re a bit underwhelmed with you, too, mates.

  7. Peter, above summed it up quite well. In addition, really qualified applicants aren’t jumping through hoops for employments — they’re fielding (and turning down) offers.

    In the current marketplace for developers, the outlined process isn’t going to net you the best applicants, and is likely to cause the best applicants to look elsewhere.

  8. Yeah simply the fact the use PHP keeps me away.

    Prefer Python or node.js a billion times more.

  9. Not at all surprising to me that it’s hard to get a job working on the community site from whence Trollface, YOU…WHAT HAVE YOU DONE?, and The Origin Of Unicorns characters have originated.

  10. So, I just stumbled over this post by way of reading YC HackerNews.

    Here’s the thing, fellas: The type of developers you guys hope to attract don’t look at job postings. They just don’t. They don’t even look for jobs.


    Because they don’t have to. They get offered jobs. On silver platters. Plain and simple. They don’t need resumes. They have a reputation and a name which opens doors.

  11. So I jump through all your hoops to get accepted, then leave my job to come work for you.
    Now I have to face the real chance that I get canned because of ‘culture fit’ or some other vague nonsense.

    That is incredibly disrespectful, & will keep good people away. Why don’t you figure this out before pulling the hire trigger?

    1. Because you can’t tell how someone is going to work out until you’ve worked with them. In particular, some people turn out to not handle the completely-remote working environment well.

    2. well truthfully, in “at will” states like california, you can fire people at any time any way, so in essence your entire tenure is basically a probationary period.

      to lose 20% during this time is curious though…one in five can pass the interview but can’t stay on for 90 days? something isn’t right. i agree with you, this will likely just result in bad karma

  12. i’ve interviewed thousands of applicants and filled hundreds of positions over nearly twenty years. in your situation – old stack, ghetto tech (php), high standards…i’d recommend bringing in junior people and molding them to your needs instead of trying to set a high bar for senior people. tech hiring is as tough as i’ve ever seen it, and truthfully, DA is not a tier-one name. sorry, i know that last bit might hurt, but you’re competing with twitter, facebook, and every other hyped YC startup

    go for newgrads and expect a ROI after about a year, my guess is you’ll be happier

    1. “DA is not a tier-one name.”
      Well, THANK YOU for spelling that out. I’d go as far as even saying that they’re not really ANY tier. They’re just a website, trying to be cool. WTF.

  13. You are expecting people to learn the technology you are using, without paying them to learn it.

    There are hundreds of types of jobs a person is able to do. To learn one job well takes time (months, years). A particular person chooses 1 job type and learns it well. Learning a new job takes time and requires resources.

    That is reality.

    In context of this reality, you write a blog where you are expressing dissatisfaction with the fact that people aren’t well prepared for the 1 task you are requesting them to do.

  14. It seems like you want to hire a developer to do maintenance work on a 11 year old php project, which honestly doesn’t sound like an exciting position to begin with. Don’t get me wrong, maybe you are just bad at advertising yourself as an employer, but reading this post and the exercise ring several alarm bells. (“Lines of Code Changed per Week by $developer”. Come on, are you seriously using this as a metric for productivity?).

    Why do you think you can get away with such a ridiculous high rejection rate? I’ve seen DA job offers on Reddit and HN for what feels like ages. Do you really want to tell me that this is because there are no developers capable of doing php maintenance out there? Or could it be that maybe you put up so many warning signs that no one with a little bit of industry experience will put up with your time consuming and disproportional risky hiring process?

    Look, there is a reason why it is called Labour markets. It’s all about supply and demand. If you wand qualified applications, you have to compete for them in terms of compensation, ease of application process (just because Google can get away with occupying applicants for days doesn’t mean you can), job security, exciting problems, nice work environment (having the sword of damocles hanging over your head doesn’t count as a big plus in this regard), stock options etc.

    Honestly, you seem delusional about your competitiveness. You seem like a C grade company hoping to hire A grade employees. The sooner you realize that this won’t work and plan accordingly, the sooner you can find a way to solve your engineering problems with the talent you are able to attract.

  15. I have a lot of sympathy for the filtering problem, and the remote working strategy makes that even more important. I guess there’s a lot more rubbish candidates out there now than there was when I was doing my hiring. You’ve probably even heard me describe throwing a stack of resumes at a trash can as a viable means of filtering candidates!

    Spotting your post pushed me into putting up my story with hiring, which is almost the opposite of dA’s policies – Hiring – how to ignore the guidelines and get it right.

    I know that PHP works, and it’s easy to hire people for – but I can see that it’s going to push away the more ideally qualified candidates. It’s not that hard to expand the portfolio of technologies without causing fragmentation – and it’s necessary in the long-term for continued survival.

  16. I would have to agree with you on PHP not necessarily being something that will push good developers away. By now, PHP is so ubiquitous that it will probably still be is use well after we’re no longer. And to tell you the truth, it can be a fun language to work with, is dead simple in comparison to some languages out there, and has reasonably solid documentation. If a developer can’t do something with that they are probably in the wrong profession.

    At least that’s how I see it.

Leave a comment

Your email address will not be published. Required fields are marked *