256X Better than a Resume

Why do resumes suck for hiring programmers?

  • They emphasize short, buzzword-filled entries that work well for people full of business-speak (and the other kind of BS).  Is that really the kind of person you want floating to the top of your candidate pool?
  • Hiring managers reject candidates based on resumes, when a resume has absolutely no ability to demonstrate technical skill.
  • It rewards those who are willing to lie, without very little recourse for verification.  This is not something I think about very often as I don’t lie on mine, and when I read resumes, I assume they are not lying either.  However, occasionally I’ll hear a story about someone who did verify and found a blatant lie, and it reminds me that this probably happens more often than I’d like to think.

In a recent Inc magazine article, Jason Fried of 37Signals claims that you should “never read another resume”.  He doesn’t, but then again, his company is in a unique position of having a flood of great candidates after investing a great deal of time building their image.

It should be fairly easy to recognize technical skill, right? Thousands of currently-employed crappy programmers and millions of horrendous LOC are a testament that it doesn’t work that way.

What are alternatives to resumes that would factor in technical skill?

Open Source Contributions

This is the option used by 37Signals, and I have an entire article devoted to why open source is not a good way to evaluate potential programmers.  In short, there are plenty of great developers who don’t spend time on open source, as well as plenty of crappy ones who do.  This complete lack of relevance to technical skill makes it a useless and even harmful barrier to entry.

Certifications

This one is an oldie, but like Monthy Python, it’s not dead yet.  Certifications are granted by some body that claims to have authority, but they actually make money by people taking the tests, so it’s in their best interest to allow a reasonable percentage to pass.  By taking money from test-takers, they have ruined their objectiveness.  Plus, they rate developers in a pass/fail system: you are either a certified developer or not.  This is not a reasonable way to judge developers since their skills range quite widely.  And as soon as you’ve seen a couple of crappy developers who are “certified” their credibility is destroyed also.

Stack Overflow

The Joel on Software/Coding Horror camp described the problem perfectly, but the solution fell short.  Since your Stack Overflow score is based on your activity on their Q&A site, it promotes people who spend a lot of time on their site, instead of the best programmers.  That model certainly serves Stack Overflow well, by providing an incentive to spend time on the site, but doesn’t work so well for busy programmers or the companies that want to hire them.

Coding Tests

This one is really the best option for employers because it is the most accurate, but it’s also extremely time consuming for both parties.  Even if you require a coding test before you’ll interview someone it’s still very time consuming to check all of the submissions.  And many companies don’t want to require this: it turns off a lot of good programmers from bothering to apply (why should I spend an hour of my time just for the chance to speak with you?)

So what’s left … Code Anthem!  Coming soon to a browser near you.  Sign up for the beta now.

19 Responses to “256X Better than a Resume”

  1. Scott Lewis says:

    I think this is a very interesting article. I’m not sure I completely agree with the “mindset” of the last point, though, saying good programmers would be turned off by a programming test, thinking “why spend an hour of my life for a chance to speak with you?”

    Maybe other job-hunters are different, but in the past, when I was job-hunting, unless I was at a job fair, I didn’t just have a cookie-cutter resume that I sent out to people. Instead, I had a template, but customized it for the individual position, to put more emphasis on my skills related to that position, and to tailor the tasks to things that relate to the job in question. And I’d usually spend a decent amount of time on the cover letter to make it more specific to the position, as well.

    Thus, for me, I’d be more than happy to spend an hour or so doing a programming test instead of customizing the resume; it’s the same amount of work/time spent, but would hopefully be a better indicator of what my skills are. I would hope most good programmers looking for a job would prefer to spend their job-hunting time proving their skills than trying to “sell” themselves with buzzwords and such.

    Just my take on it of course!

    Scott

  2. Amber says:

    @Scott I’m with you 100%. In fact whenever I have looked for a job, I have gravitated towards jobs with coding tests. Even though they required a bigger up-front time investment, I knew they would value my skill if I passed and that I’d be working with other bright programmers if I worked here. But I don’t think you can necessarily discount the effect it will have on your applications. Just asking a coding test will bring the applicant volume from a few hundred to 10 or 20. I seriously doubt that all of those programmers who didn’t apply were truly bad programmers. Some were and some just didn’t think you were worth the effort.

  3. The point about open source software is interesting but falls short of the mark. Having lines of “I’ve done open source” on the resume is just as worthless as having a whole alphabet soup of acronyms, buzzwords, and other bullshit on there as well. The real benefit to open source, for companies willing to exploit it, is the same benefit as the coding test provides: You can see actual examples of actual code that the applicant has written, and it’s often a lot more telling and comprehensive than some simple 1-hour “FizzBuzz” coding test would be.

    Does the person write code that looks good to you? Does the code garner the respect and appreciation of the other community members and other people “in the know”, or does it earn ridicule, “FIXME” tags, and a lot of subsequent cleanups? Does the person understand the whole software process, from gathering requirements through coding, testing, debugging, deployment, and maintenance?

    I treat my open-source work as a kind of persistant, online portfolio: free from the NDAs, ownership, and entanglements of the code I write at my job. A portfolio is really the only way you’re going to know what kind of code the applicant actually writes, but since most code is proprietary there’s no way to ever see it. Unless, that is, the code is available open-source on the web.

    I’m not saying participation in open-source is the end-all-be-all of applicant screening, but it is a source of information about a potential applicant that can be very telling for the potential employer, and it’s not good advice to tell people to ignore it.

  4. Amber says:

    @Andrew My assumption for that point was that the company would actually look at the open source contributions, like 37Signals does. And if they spent enough time wading through each person’s contributions, it is similar to a coding test. However, that can be even more time consuming to do per candidate than a coding test. And the worst part is the very very large population of great programmers who are both skilled and passionate and not in open source. I’m not suggesting you ignore it. If you’re thinking about hiring a candidate who does have open source contributions, I think it makes to check it out, if so inclined. \

    But to use it as a litmus test for a great programmer? Wrong.
    All/most great programmers do have open source contributions? Wrong.
    Any great programmer spends all his evening time writing code for free? Wrong.

  5. I see what you’re saying, but I still feel like you’re being dismissive. If an architect shows up to a job interview at an architectural firm without a portfolio, he’s going to be turned right around and sent back home. Sure things are a little different in the world of art and design, but prospective coders routinely show up to interviews with little more than a nice suit, a smile, and a stack of printed resumes.

    Let’s turn the scenario around a little bit: We have 100 applicants for a job, 5 of which bring comprehensive portfolios with them and the other 95 bring that resume and nice suit. In the interests of saving time, not wasting it, it behooves the employer to take a look at the available portfolios first. After all, these are the people who both prepared ahead with code samples and offer some verification of their skills. If you don’t find what you’re looking for in the code that’s provided to you, you can assign all sorts of homework or whatever else needs to be done to skim the cream off the top.

    If you’re only writing code at your job, your next potential employer isn’t ever going to see a real example of your work before needing to make an employment decision about you. If you bring a portfolio of your code, an employer can make a much more informed decision. If you want to have a portfolio, you’re going to need to write it when you’re home from work, employers tend to frown on doing that kind of stuff on company time.

  6. Scott Lewis says:

    @Amber, thanks for the response. You do make a good point – there may be some very talented programmers that get turned away. But on the other hand, what could it possibly say about them as a worker? If they decide to skip because it’s “not worth the effort,” that could be an indication that they don’t really want the job that badly, that they aren’t willing to put forth the extra effort needed to get the job done, or that they just want an “easier” application process. While there may be good programmers (and even good workers) that this processes would weed out, I think in general, those that are left will still be good, viable employees.

    In other words, while some of the other screening methods may let in more false positives than others, I think a true programming test screen would better ensure that those that DO make it through are all quality programmers. Depending on the nature of the test, it can be a lot harder to fudge your skills that way, and even if some good programmers skip it, you’ll still have a good pool of people to pick from (and by the fact they spent the effort to do it, you’ll know they are interested in the job, too!)

    A lot to think about in this article, and I do agree that whatever the “solution”, resumes aren’t really the best way to demonstrate skill in many technical fields, especially if non-technical people are the ones doing the screening.

  7. Amber says:

    @Andrew A “nice suit and a stack of resumes” is indeed useless. But drawing from your architect example, does it make more sense to judge an architect based on an awesome building he made for a previous client, or require all your architect candidates to have built tree houses, with which you will judge their architectural skills? It clearly works for some candidates and for some companies, but Code Anthem is a solution for everyone.

    @Scott It’s easy to dismiss them but when a perfectly good candidate is working full time, doing contract or open source work on the side, has a family, etc, it can be a big deal to spend an hour PER JOB before you’ve even had a chance to talk with them. For a company with a great reputation, this is less of an issue but it’s not viable solution for most companies. If you have a big enough supply of great candidates, it’s not an issue, but most companies I know are always looking for good software developers because they can’t find enough good ones, much less great ones.

  8. Jeff V says:

    Hiring a coder requires 2 things: the face to face interview to get a feel for how they interact with others, and a coding test of some kind. Any manager worth their salt will be working on improving the culture of her team, so it is critical to bring in programmers who complement that culture and can help to improve it. One of the common threads of all good cultures is skill, and that’s where the coding test comes in. Nothing crazy, nothing tricky, just something to help see if the coder knows the basics of the target environment. The difficulty is in tailoring the test and the format of the test for your specific environment.
    My team has been actively looking for new coders for the past couple of months, and it can be a bit of a let down when you are rejecting so many because of either a lack of fit or a poor performance on your coding test. This is better than hiring someone and then firing them three months later because they weren’t measuring up though.

  9. Oscar says:

    Are you going to create something like http://codility.com/ ?

  10. Amber Shah says:

    @Oscar That’s a great guess! Similar, yes, but fundamentally different. Where they cater to recruiters, at Code Anthem we don’t think recruiters add much value and won’t be including them in our first few iterations, at least. Where they provide a nice utility for evaluating candidates, Code Anthem enables developers to take control of their own career and get recognition for their skills.

  11. Tibor Zimanyi says:

    I think that coding test is not enough. A good programmer should also have good logical and alghoritmic thinking. And you cannot measure that in coding test, because the tested person is limited with capabilities of programming language of the test. Some sort of logical test should be involved. The tested person vs. some logical issues to see how the person can divide the problem into smaller parts, how he thinks about it, if the given solution is optimal etc.

  12. Ingo says:

    I planned several times to contribute to open source.
    In reality another deadline or internal project comes up. Being passionate about my job I therefore spend my time, incl. whatever amount of evening and weekend I can wrestle away from family life, and effort on the task at hand.
    Taking the 37Signal approach therefore means I am less employable because I am loyal and compassionate about the job I am currently hired for …

  13. Ratn says:

    In that case might be you should give a small scale assignment to potential candidate .And then judge their skills

  14. Ralph says:

    I’ll bit, what is code anthem? Your about link is 404 and a quick google search turns up nothing useful. Your last paragraph needs some work if you’re trying to get people to sign up for the beta.

  15. Amber says:

    @Ralph Full disclosure coming to the beta list soon – sign up if you want to be in the know.

  16. Amber says:

    @Tibor Have you met programmers who can write a nicely crafted, brief algorithm in code but who cannot think logically? I don’t think I have…

    @Ingo Exactly. And clearly that works for them, which is fine, especially considering they employ a pretty low number of developers. I don’t think that approach scales well to the many many businesses out there on the hunt for great developers.

  17. Eduardo says:

    I’m sorry this is not related to the article but couldn’t find other way to contact you. Your link “what_is_code_anthem?” on the top of the page is given a 404!

    Admin Note: Sorry it went down guys – back up now!

  18. Tibor Zimanyi says:

    @Amber Yes I have. It was a young programmer, who was not so skilled in writing code(especially in programming languages that we use at company that I work at), but had excellent logical thinking. The main advantage of such person is that he can learn new things very fast from any area.

    The logical tests also help when there are few people on the same coding quality and you must choose few of them.

  19. SDX2000 says:

    “why should I spend an hour of my time just for the chance to speak with you?”

    Umm, how about…because I can prove that I am good programmer and I am interested in working for you?

    Your premise may not be “flawed” but doesn’t stand up to scrutiny either.

Leave a Reply