So I had an idea yesterday evening for a way to winnow the field of potential candidates for our next web developer position. Unfortunately we're probably not going to be hiring for the next 6 months or so and chances are I'm going to forget about it, because that's what I generally do.
So instead, this time I figured I might as well write a blog post about the idea and hopefully the pain and suffering caused by random individuals commenting on how awful both the idea and I am will sear it into into my brain so that it'll be available for recall when I need it. So here it is:
The next time we need a web developer instead of requesting resumes by email we're going to create a simple web page with a couple of fields of information and a resume upload (I know it's horrible, the real form would look nicer):

Simple enough, right? Except when a user correctly fills in all the fields and presses submit they will be presented with:

Now, what kind of Web Development company can't even handle a simple resume web form? I don't know, but I'm guessing that most users will press back and try to resubmit their resume. They will again be presented with:

Now I'm guessing that we'll probably lose a huge chunk of potential applicants by this point. And that's ok - from my very brief hiring experience the percentage of applicants who are just using you as a resume dump and couldn't care less about your company in particular is pretty high. Anyone who's really interested in the job but stymied by a couple of simple 500 pages and doesn't feel any impulse to hack ain't what we're looking for. These are web developers after all, and the best of them have certainly hacked their way around a website bug or two.
For the remaining 5%, maybe, just maybe they will press back one more time and take a look at the HTML for the form they are submitting. If they do that, there it'll be, plain as day:
<input type='hidden' name='resume[CauseInternalServerError]' value='1'/>
If they are a web developer worth their salt, they will open up Firebug (extra points for using Curl - we'll look at the User-Agent), POST a '0' instead of a '1', resubmit the form and be greeted with:
"Well played sir or madam, we should be contacting you to set up an interview shortly"
And there you have it, a pre-selection process that values motivated, out-of-the-box problem solving and a small modicum of Web knowledge. What more could you ask?
P.S. if anyone has used or uses anything similar to this and it worked and/or blew up horribly, I'd love to hear about it. We're probably not going to do this exactly as describe because I'd feel guilty about potential pain, suffering and frustration caused but I think we will try to do something at least slightly odd.
Addendum #1: One idea from below that I like for how to fix this would be to return a fake status (but still show same error message) that Jim wrote:
While it's true, only strong candidates will succeed I think a lot of people will assume you have no respect for quality and leave for that reason. I think you should make the error more clear. Something like "Error 550: This is not really an error, it's just a riddle."
Addendum #2: Lot of good ideas in the comments - I think if we were to implement this I'd probably take "Bronson's" advice slim down the form (All that info is on the resume after all) and add a little bit of text as some people have suggested to give people the idea that some game is afoot here:

After all, I think most people might miss that line of text the first time around, but after getting an error message and pressing back they might take the time to read a little more carefully, and that sentence sounds a bit odd to include on a form that is clearly not functional (and only has 1 field).
....and follow @cykod on twitter
Comments Leave a comment
Warning: Non-constructive comments will be mercilessly removed.
I can only wish I could do this, it would save me so much time.
I’m guessing that before looking at code, my reaction would be to look up your registration info for the site and email a resume, along with the error report, to your site admin. Can you handle out-of-the-box approaches like that?
Interesting experiment. I agree that only developers worth hiring are likely to get past this barrier. I’d be tempted to change the wording though to imply that the user can effect the submission processing. Even changing the wording based on the number of submissions would be enough for a candidate to think someone was messing with them.
Otherwise, I’d just move on and assume your shop was no good, since you’ve given no indication that further action on my part is necessary.
Just a thought: I’m interviewing you at the same time you’re interviewing me. It has to be a good fit for both of us.
How about this instead: don’t ask someone to send a resume with vast lists of stuff they’ve read about. Ask a single question: what have you done that you can point us to that you’re proud of?
I was thinking of a test where we ask the developer to devise a test for a new web developer – then judge the technical merit of the test itself.
This would turn me off working for the company because it makes you look unprofessional because you let such a simple get into a live application when you are looking for employees
I agree with BillyBob (say hello to angelena for me).
The interview process is a two way thing. Any good developer would think what a bunch of monkeys and move on! At my agency we only employ the best of the best and I’ll happily go through stacks of cv to find that gem.
However with some work, like Joe pointS. It could turn into a great idea!
@Tom that is always the danger – I do think a little hint might be a good idea – something that gives an indication that it’s a “game” and not just a bunch of idiots, but anything too obvious would ruin the point.
The alternative idea I had was just to put up that says “RESTful resume submission API” with a url and make people submit their resume via Curl or the like.
Interesting. It would get you a much better signal to noise ratio to be sure. Personally, if I cared about applying I’d find that, but I wouldn’t consider myself qualified as a web developer.
I would immediately think this company has no idea what they’re doing and move on, especially a web company.
A good idea I saw on Craigslist once was a code snippet with an encoded message and additional errors that stated something like “Figure out this snippet to find out where to send your resume”. You had to fix the errors and decode the message to find out where to send anything and incorrect methods of doing so would actually give email addresses as well, but they would be email addresses for incorrect answers. Just a thought.
@PHPdiddy – that’s actually kinda the point. If you’re just doing a drive by resume upload, haven’t taken the time to read anything about the company and couldn’t care less, then yes – you are going to move on right away.
But hopefully the people that haven’t already been rejected from a bunch of jobs and are pretty selective about who they submit to might take a second or two more.
You spelled “awful” wrong. Hire me as your editor.
Here’s another approach from a few months ago:
http://playground.thesedays.com/ninja/
It was a fun way to spend 20 minutes!
@Pascal I think PHPdiddy was saying that a technically competent applicant would be turned off that a web development company “can’t even get their website to work”.
This is also what Joe (above) was getting at, with the suggestion that the error is slightly off. Drive by uploaders won’t notice the difference and won’t take the time to investigate it. Someone technically competent would hopefully notice (attention to detail!) and it gives them a hint to look deeper.
I dunno, if I was submitting a web developer resume in like that, and I saw that error page, my initial thought would be fear. Wow, they can’t even get their resume submission page working? They must have absolutely no idea what they are doing and if I get hired I am going to have zero help. Pass.
I don’t agree with BillyBob. I spent 2 years working for a company, wrote tons of code, but never produced anything I could do this with. There were 2 problems, 1. management sucked, and kept forcing us to work on project that we knew were terrible ideas and would never go anywhere and 2. the stuff I actually was proud of was all backend code that there is no clear way to show what it was or what it was doing. That being said, I had plenty of stuff to put on my resume, and when the new places I applied to asked to see some code examples, I spend a day whipping up a little app that didn’t really do anything other than show I could write decent code.
I would just like to say that the only thing new about this approach is that you’re doing it on purpose. This seems to happen about 30% of the time i go to submit a resume and typically the company has no idea the site is broken.
I just went through this with the local hospital that was hiring for graphic design positions, what they really need is a dev that doesn’t misspell JS variables.
Right. If it’s just a junk filter, you should give a rather large hint. The RESTful API thing sounds good.
But if you want a real test like the one Mark links to, that’s going to require some more effort to create.
In either case, displaying a common error message is a bad idea.
Now hiring script kiddies with time to waste!
Having the “error” page simply say something along the lines of “the form is broken, fix it to apply” would work just as well. Those who are just using you as a resume dump wont bother, those who are genuinely interested in you will.
Only useful in this is to interview for a job using Firebug.
Terrible idea. If this happened to me while applying for a job, I wouldn’t want the job. I have over 15 years experience as a web developer, and seeing this error warns me that this company does not have their shit together. Sure, I could look at the source, but is it really worth my time? I bet the job probably pays $45k/yr, too. Forget it. Don’t waste my time. In fact, if you you make me fill out a form like this and upload a resume, you’ve already lost me. If you require a resume in word/pdf format, and you can’t just take a quick look at link to my portfolio website to determine that I’m a good fit, then I probably don’t want to be working with you anyway.
My first thought would be, “these guys don’t know what they’re doing” and move on to one of the other 800 web developer posts in my city.
This isn’t going to work. You make several flawed assumptions. One, you assume that you’re so special that people are going to fall over themselves in a rush to join your company. Two, no developer worth their salt wants to work with imbeciles that can’t even code/test as simple web form.
Your fallacies demonstrate to me that yours is NOT a company where I would want to work.
1) I’d assume said company is not worthy of my employment. It would be different if it was A Widget Co looking rather than a webdev company i suppose.
2) all it takes to get an interview is the ability to use a couple of tools in a very rudimentary way (http post). bonus points for curl? wow, set the bar pretty low there.
I only surf with a HTTP header scanner (liveHeaders) so I would have seen the value too easily, but I’m in the 5%, so yes it works :)
You should actually return the wrong error code number, like 404: Internal Server Error. That should clue the right kind of person in.
Having a “CauseInternalServerError” in the form is a bit silly.
Suggestions for change:
* Replace the file input with a text input labeled “URL of your resume”. It will be interesting to see where they will host it, and if they try to track you and how (URL like example.com/cv.php?t=ca324cdf, or example.com/cv.pdf that doesn’t send a Content-Length when requested etc).
* Set the action of the form to GET.
* When the user submits, you check the REQUEST_METHOD. If it’s GET, you send back a 405 Method Not Allowed with Allow: POST and with a non-descriptive body (something like “Unexpected error”).
To fix it, the applicant will have to get the clue from the response headers and change the method into POST. It doesn’t make sense to use GET in this situation anyway (it’s definitely not RESTful, GET is for retrieving data).
Here’s what I’ve been considering. Put up a single page that says only:
“We need a software developer who knows what they’re doing, can communicate and gives a crap. You get the job by convincing us that those things are true about you.”
@Ovidiu, people can set up .htaccess to make example.com/companyToSubmitTo/resume.pdf load example.com/resume.php?tracking=companyToSubmitTo with a simple rule. So inconspicuous you might not even realize it.
Here’s the thing – you’re assuming someone is going to bother to check your form. If you’re throwing an internal server error sorts of error, I’m going to assume you’re too incompetent to run your own servers.
If I really care, I might send you my resume via other means, but the first instinct someone has isn’t necessarily going to be “check the source of the page and see if they’re adding a retarded bogus hidden field!”
At the very least, have it kick back to the initial form submission page with an error about not being able to validate the input – something that would give someone skilled the notion to check the input itself, rather than hunch that your server might be having issues. The error message you describe makes it sound like it’s more of a server side issue, which I wouldn’t expect to debug from the page source alone.
You’re relying more on luck that someone is going to have an “aha!” moment rather than skill there. By definition if someone finds it, they have skill, but you’re going to eliminate a number of qualified candidates who might be interested, but not all like “I hard core have to work for cykod.com!!!11one” in the process that you don’t need to eliminate.
While it’s true, only strong candidates will succeed I think a lot of people will assume you have no respect for quality and leave for that reason.
I think you should make the error more clear. Something like “Error 550: This is not really an error, it’s just a riddle.”
I’d SO get that job. I pretty much always investigate like that when I get an error on a website (unless it doesn’t matter, which this would).
Sad part is: I AM an unemployed web developer, looking hard for work. I wish people WOULD use tricks like this to weed out people who aren’t serious about their craft.
I saw one application that had the email address to send to encoded, you had to be able to decode it to send. I plan on doing the same if I ever need to hire a developer. It was simple, but I imagine quite effective paper screening.
I’d assume the job would mostly consist of fixing pathetic issues on webforms and pass.
If I happened to be in the mood (or sufficiently interested in the position) to investigate, it may cross my mind that the management has nothing better to do that come up with trivial exercises designed to make web developers jump through hoops to get a cookie.
I would think that even the most clueless applicant would google you, look around your site, find this blog post and know how to pass the test.
@Matt Sandy: I know. And that resume.php will probably log the request and do a readfile(), right? Well, it would be interesting to see if they also send a Content-Length with it. If they don’t, that shows how much attention they pay to details. Of course they can do it so that you don’t even realize that you’re being tracked.
Using curl over firebug (or tamper data or…) doesn’t make sense for earning extra points. They’re in a full-on browser, it’s a simple change, why go through the extra steps to appear more hackery?
Good in theory, but the best candidates who are in demand won’t bother trying to fix your buggy website or jumping through hoops just to apply; they can work for plenty of other companies that run their applications better.
This will get rid of bad candidates, but it will also cut out the cream of the crop as well.
Testing applicants is great. Giving them frivolous tests like this is a waste of their time & only serves to make you feel clever. If you want to make people jump through hoops, you should at least give some indication that there’s a hoop to jump through – “Internal Server Error” doesn’t even suggest that there’s something to fix. Maybe if it was an ajaxy form submission that never returns, people might at least recognize that there’s something to look at.
A much better solution would be to tell applicants to solve a few small programming exercises & submit them with the resume. They don’t need to be complicated to help you separate people who have a clue from those that don’t.
Every place that I’ve enjoyed working at has had a screening process that goes like…
* Read Resume
* Toy Problems
* Phone Screen
* Interesting Problems
* Interview
You could easily bump the toy problem up to the same point as the resume to more quickly filter out candidates.
You are assuming that you are a genius, and want other people to think like you. your idea is quite lame, it has no logic whatsoever. good luck hiring the illogical.
wp, nh
[well played, nice hand]
I like your style. And I think you’d lose few serious resumes this way. I may or may not have thought to look at the source, though I certainly would have resubmitted the form had I seen the code.
But any web developer who wouldn’t drop a friendly line to a company they’re applying to informing them that their submission form is broken is not worth hiring.
And all firms can demonstrate they support this principle by suitably modifying their hiring processes.
My email address is live; I hope to hear when you open a form like this.
I disagree with 1) of anonymous above in this: if it were a Widget Co I would never think to look at the source unless I wanted to punish myself. It is only because this is web development that looking at the source might make sense.
But 2) is correct. You might want to set the bar higher.
As a recruiter with 15 years of experience in the professional services space, I understand the frustration of reviewing inappropriate resumes. With that said, the approach you outlined in this post is bound to fail.
1a) The strongest candidates are already working and are not going waste time troubleshooting the resume submittal function of a consulting firm’s website. 1b) The only people who will spend time on this endeavor will be people looking for an excuse to procrastinate during the middle of their work day and/or dedicated job search time. (e.g. students, the unemployed, etc…. )
2) Your solution is not going to work if you need to simultaneously fill positions for the non-technical organizations within your company.
3) Finally, this resume submittal issue you plan to create is in effect a pre-employment test. Pre-employment tests should always be validated for the jobs they are being used to hire for and for the purposes for which they are being used. As a result, your HR person will be stuck collecting and reporting a ridiculous amount of data to ensure the test is legally defendable should your company be sued for ANY HR related issue. Test validation is a nightmare and typically an outsourced function.
I strongly suggest driving your recruiting efforts through an employee referral program. There is no better source for people than professional networks and past colleagues. Or, you can always hire someone like me to conduct a target sourcing campaign and I can raid specific organizations on your behalf.
Just from the comments, I’m actually more enthused than I was originally. The people we’d be interested in see this as a game, either the post itself or a game for how to pre-screen candidates.
For the people who just say “your idea is quite lame,” they don’t see this as a game. It’s just broken for them (a la Seth Godin http://sethgodin.typepad.com/seths_blog/2009/04/this-is-broken.html )
The good news is that those people are exactly the people we’re trying to screen out to begin with. So breaking the application process for them would be exactly what we’d be trying to do.
I applied for a job like this once, except it really was broken and not intentionally either (it was for a web dev job).
Aw, I pointed out a spelling error and made a joke about hiring me as an editor, and my post got deleted. Sense of humor fail, dude :-/
What a long way around.. using something such as Firebug to work it out.
A quick View source, Highlight+Delete, Reload with Changes, and submit would take only a few seconds once the offending field was seen! (Ah how i love Opera…)
I am a compulsive fixer, but even I wouldn’t try to debug that. Server errors are generally impossible to debug from the client, so why try?
More to the point, my first thought is not “ooh, a riddle” but “eww, a company that can’t get their forms right”. Why should I care enough about you to jump through hoops at that stage?
If you can demonstrate that you are a very appealing place to work and you give some clue that this is fixable, this might be worth doing
@Eli – I tend to have a heavy hand with the first few grammer nazi comments as they start the S/N of the comments off in the wrong direction (and I have terrible spelling so there’s ample fodder) – I put it back.
Absolutely agreed with dspeyer – why would a developer submitting a form try to figure out a server error from the client? Server errors are handled by backend code invisible to the user and.
The idea is there but the test is horrible – think of a better one.
I’ve had to do this before. I’ve also had to hack my college e-mail account because the password they originally allowed me to use to create my account was ‘too long’ when trying to log in.
As a web developer I would never apply at a company that required me to upload a file-based resume. A web developer’s resume should be HTML served on a publicly accessible server, perhaps with access control to control and track viewing.
great developers don’t apply for jobs like that. They are found.
As a web dev myself, I would fail at this pre-selection test. One would not automatically assume that the cause of the error (which would have been returned by a SERVER SIDE script), not have been caused by the values in the HTML form. I would assume that you hadn’t built the server-side script to process the form properly and that you had neglected to even test the damn thing.
If I was in the situation of trying to apply for a job at your company and encountered that error, I would not waste my time trying to debug your form, I would simply look up your contact details and send my application directly.
I too think its a bad idea. Anyone that has the time to investigate this silliness is probably very desperate and has been out of work for a very long time because no one wants to hire them.
My pride would have forced me to be a ‘good samaritan’ and investigate the problem. This idea is a well baited trap for those who can’t pass up poking at a misbehaving server.
Well played, sir!
If you do this, you should use a response code like 418.
I hereby hire you as my recruiter! I was looking for people with innovative hiring skills.
That’s nice, but good programmers can reason, and the reasonable thought here is “Wow, these dumb asses can’t even handle a resume submission form, I should just work for someone else” rather than “I bet there is a problem I can solve without even reading the code that handles the request.”
You can even time how long it takes possible candidates to figure the problem out. Cruel and brilliant.
You’re going to end up hiring some smarmy self-important know-it-all geek who forever holds this test as a badge of honour and proof of his superior intellect. No wait…all developers are like that.
Carry on…
Quite a few good companies actually do make you solve a problem or two before a human contacts you.
However approaching problem solving as described in this post is just going to make you lose out on a lot of potentially good candidates who get the wrong impression.
when did you get your behavioral psychology degree?
this is a stupid idea, because you can not assure that an uncorrupted (changed format) sourcecode is transfered to the user (e.g. UMTS providers do it to compress size)
One problem… if the form is broken like that, I’ll probably just assume that the company has limited technical capacity and seek other firms that promise me an environment where I could learn something.
Just found this post on Reddit and had a read. It’s an interesting angle and I understand the fuzzy logic behind it but I have a few thoughts on this.
1) If this is going to be a challenge for me then in my opinion you’ve failed with your form for a start. I’d just have the Resume input type=“file” for a start. If I have a candidate applying for the job without their Name, Email, Address, City, State and Zip on their resume then I don’t want them for a start. But hey, it’s not a challenge right…Oh wait, it is though!
Granted you could reply and probably would reply to this point saying that the only required field is your name. I’m not phased that still means you have 5 other void fields and my point still stands. Challenge yourself before you challenge the user.
2) So putting my first point aside and assuming I decided to fill out all the fields and upload my resume to see the “There was a problem posting your request” page.
I’d think most likely think something along the lines of “Wow, a company advertising for a web dev position can’t even give field specific error validation correctly. My knowledge and time is worth more than this.”
That being said, if the form was on a job board somewhere then I wouldn’t think badly of the company.
Being the proactive person I always like to give a “solution” based on my “logic”. I’m not that bright and I expect a rebuttal because I’m sure I’ve missed a stack of things.
So how do I think you can you do this “test” correctly to get the candidate that you want to work for your company?
a) Get rid of the unnecessary fields in the form.
b) Use Php and start a session when they first enter the page and have a paragraph under your header saying something like “You’re already being tested for this role. This is a challenge. If you can submit this form you will have passed the first round of testing.”
Most web devs will get off on this and see it as a challenge! You’ve got both a logic puzzle and a time limit. Granted, they might be a slow reader but if you really want metrics then if they get past this initial test then test their reading speed in the next test and factor that into the results.
I’m looking forward to hearing your thoughts Pascal.
In your addendum: Something like “Error 550: This is not really an error, it’s just a riddle.”
I would instead put: “Error 550 you can fix it.”
If I’m going to work with a web company, their website is a pretty big deal to me. I have a very high standard of quality and sadly, the vast majority of web shops don’t actually give a sh*t. Finding a server error like this could happen, and would be an instant turn off.
For our developer search (@ http://entrepreneurial.com ), I simply removed any submit buttons… capable candidates will know a hard enter will do the trick right?
Already done:
http://proveyourworth.net/
You won’t be able to get through it all with firebug alone (though you’ll get a ways through), you’ll have to write a script to submit your resume.
I would return a fake stack trace which, if you read carefully enough, would tell you that it’s a challenge. If you’re looking for the compulsive/detail-oriented types, they’ll read the trace and realize what’s going on…
Definitely make it clear it’s a challenge/riddle. If I was applying for web dev position at a company, and the application form didn’t work I’d be very put off working there.
We had a similar issue – lots of useless resumes and no way to gauge the talent. Our solution was to have applicants design a form, and we would contact them if we thought they were good. This set the bar high, and we have had an awesome response with it. Here is the actual application : http://www.neutroninteractive.com/careers/developer-designer/
@Zach – I can see why you had a good response, it’s a great idea and a great execution (I love the comic and the “potential applicants”)
@Pascal thanks! We had a blast making it. But it took a long time to get to the point of realizing we had to abandon “traditional” methods of hiring people. I think your idea is excellent as well, and it does make it harder to get people – but the people who figure it out are the people you want!
Leave a Comment