
Jobseekers Invited to “Apply Via API” - apievangelist
http://blog.programmableweb.com/2012/02/02/jobseekers-invited-to-apply-via-api/
======
Cushman
For the lazy:

    
    
        javascript:$('div.code.plain').last().html('<form action=#>name:<input name="name"><br />email:<input name="email"><br />about:<input name="about"><br />urls:<input name="urls"><br /><p id="status"></p><button>submit</button></form>').find('button').click(function(){var f,o={};for (var k in f=$('form').serializeArray()) {o[f[k].name] = f[k].value};o.urls = o.urls.split(',');$.ajax({url:'/jobs/apply',type:"POST",data:JSON.stringify(o),contentType:"application/json; charset=utf-8",dataType:"json",error: function(d,s){$('#status').text(d.status)}});return false;})
    

Or is that unsporting somehow? Downvotes suggest yes, but on the other hand
it'd be pretty silly for someone to expose an API intending people _not_ to
write tools that use it.

~~~
jedberg
Yeah, that wasn't very nice of you. Now you've basically ruined their low bar
filter and made the bar even lower, completely defeating the purpose.

~~~
Cushman
I'm not immune to that concern, but 'ruined' seems like a strong word... it's
not like I've injected that code into their page.

Really, I just thought it was a funny little hack worth sharing with the
community. I doubt anyone from Parse sees it as hugely threatening to their
recruitment strategy.

~~~
jedberg
Well, from a personal point of view, when we did the reddit hiring, it really
annoyed us when someone posted their solution to one of the problems, because
there were clearly people who were copying the solution to get their cover
letter to us. So then we had to read those letter to determine that no, this
person isn't actually qualified, and now we wasted our time (and theirs).

So that is where I was saying the harm comes from. It's not hugely
threatening, it's just annoying.

~~~
shin_lao
That just means that posting public problem to hire people isn't a good idea.

~~~
mvanveen
Don't you think that's throwing the baby out with the bath water a little bit?

I agree that it's a problem that people can easily dupe an interview by
copying a readymade result, but that doesn't imply that public problems are
unilaterally a bad idea.

In fact, I'd liken this to a public announcement of a security exploit.
Someone has found an insecurity within the social algorithm of public problem
interviews.

~~~
shin_lao
To me, there is little correlation between a good hire and someone who solved
a public challenge. What does it prove?

~~~
mvanveen
Your original claim was that one bad anecdote at reddit was enough evidence to
consider "that posting public problem to hire people isn't a good idea."

Do you think that all public interviewing options are unilaterally unable to
defend against people divulging public problems?

A public problem is essentially just a contest. Lots of contests are
considered good figures of merit. If you win a nobel prize or a fields medal,
that's a sort of public problem solving exercise. Would you hire someone who
won a nobel prize over someone else, all other things being equal? I certainly
would.

Maybe the real issue here is that these interview problems aren't sufficiently
challenging or interesting such that the barrier to entry is keeping answer-
copiers out.

Unless you're Gregori Perelman, for example, you're likely not going to be
taken seriously or given much credit for solving the Poincaré conjecture.

PS. I don't think it was fair to downvote me just because I disagree with the
pov. Is that why I was downvoted?

~~~
shin_lao
I have extensive recruitment experience and I understand the idea of "let's
filter out as much as we can to gain time".

My experience is: it doesn't work, you will have to crawl through resumes, do
phone interview and have people come over. You can be clever about what you
ask in a resume and how you do your interviews but you will somehow need a
list of skills and experience and somehow you will have to talk to the people
you want to hire.

Additionally, you don't want people who just "find solutions to problems", you
probably want people who build systems. That's a different skill set, which is
why you will not filter out the right type with a teaser.

You will also unreliably assess their skills because you cannot tell how much
time it took or if they actually did it.

Have people come over. Evaluate their technical and human skill. Nothing
fancy, just straightforward stuff.

If in one day of interview you think they're people you'd like to work with,
hire them. If you have any doubt, don't.

Let go the idea of the exam. You're a company not an university.

------
jacques_chester
I've seen job listings embedded in <meta> tags, in HTTP headers, all sorts of
odd places. The trick is that some smart person stumbles on it by accident,
posts it on their blog, then gets picked up by a major tech site.

It's fantastic publicity.

~~~
pdenya
I doubt I could stand the waiting between implementing something awesome like
that and someone actually finding and reporting it.

~~~
rcthompson
Then I'm sure you could think of a strategy to discreetly "leak" information
about it to get it discovered more quickly.

------
drfloob
Literally the worst developers I've ever known are the sort that would eat
this kind of thing up.

The worst developers in my opinion are those that appear highly proficient and
effective until they're asked to actually produce something, then never
produce anything of value whatsoever. They're infinitely worse than those who
are clearly ineffective from the beginning. They're talented but immature;
unwilling to do anything they don't see as a game; unable to see everyday
tasks as games.

------
chrisacky
DELETE <http://parse.com/jobs/apply>

POST <http://parse.com/jobs/apply>

= Job?

~~~
arethuza
Probably should be:

PUT <http://parse.com/jobs/chrisacky>

:-)

------
eekfuh
There is a billboard around Utah that has a base64 string on it, if you decode
it, it reads "head /hi" and if you HEAD their domain/hi it says POST then some
params about yourself to /apply.

~~~
bryanh
Perhaps this one?
[https://twitter.com/#!/brutes_/status/158025883536461824/pho...](https://twitter.com/#!/brutes_/status/158025883536461824/photo/1)

~~~
yahelc

        $curl -I moneydesktop.com/hi
        HTTP/1.1 301 Moved Permanently
        Server: nginx/1.0.11
        Date: Fri, 03 Feb 2012 00:19:34 GMT
        Content-Type: text/html
        Content-Length: 185
        Connection: keep-alive
        Location: http://moneydesktop.com
        X-Career-API: http://careerapi.moneydesktop.com/docs

~~~
bitops
That is the correct response. You are not sending the appropriate HTTP
request.

~~~
yahelc
Huh? curl -I is a HEAD request, isn't it?

~~~
cezary
It's right there, go to <http://careerapi.moneydesktop.com/docs>

~~~
yahelc
I know, my confusion was at the down vote and correction; clearly that's what
they wanted people to see. I'm not sure what mistake people thought I made.

~~~
tantalor
They were probably down-voting the use of an "X-" response header.

------
leeoniya
neat idea. now if only every employer had the same standard REST api at an
agreed upon URI, (like sitemap.xml) so you can mass-apply, mass-update
resumes. on their side they can mass-flag, mass filter, prioritize.

~~~
bryanh
"Seeking applicants fluent in spamming tech."

------
shanemhansen
Make a request to _any_ zappos.com page and look at the response headers.
Found this while checking out their site prior to flying out there.

They've got flair.

~~~
ajtaylor
I should do this more often. Look at the wealth of information returned in the
headers:

1) They're using nginx (which is powered by Ponies!) 2) The site is fronted by
varnish with a ttl of 1 hour, of which there appear to be at least 4 varnish
servers. 3) Links to the various CSS files. Do browsers actually use these
headers instead of the <link>s in the html? 4) Drupal is somewhere in the mix.
5) Mention one of the company core values, of which there are at least 8. 6)
Anyone geeky enough to be reading this should apply for a job.

    
    
      $ lwp-request -e -d  www.zappos.com
      200 OK
      Cache-Control: max-age=2452
      Connection: close
      Connection: Transfer-Encoding
      Date: Thu, 02 Feb 2012 23:53:38 GMT
      Server: nginx/1.1.14
      Content-Type: text/html; charset=utf-8
      Client-Date: Thu, 02 Feb 2012 23:53:39 GMT
      Client-Peer: 203.206.129.48:80
      Client-Response-Num: 1
      Client-Transfer-Encoding: chunked
      Link: </favicon.ico>; rel="shortcut icon"; type="image/ico"
      Link: </styles/main.p.20120201135153.css>; media="screen"; rel="stylesheet"; type="text/css"
      Link: </css/print.20120115152845.css>; media="print"; rel="stylesheet"; type="text/css"
      Link: </styles/home.p.20120201135153.css>; media="screen"; rel="stylesheet"; type="text/css"
      Link: </>; rel="canonical"
      Title: Shoes, Clothing, and More | Zappos.com
      X-Cache-Hits: 117
      X-Core-Value: 8. Do More With Less
      X-Meta-Description: Free shipping BOTH ways on shoes, clothing, and more! 365-day return policy, over 1000 brands, 24/7 friendly customer service. 1-800-927-7671
      X-Meta-Keywords: index, zappos, zeta, clothing, shoes
      X-Powered-By: Ponies!
      X-Recruiting: If you're reading this, maybe you should be working at Zappos instead.  Check out jobs.zappos.com
      X-UUID: 970dff52-4df6-11e1-a3ab-001a645b7cf4
      X-Varnish: 1001890813 1001890584
      X-Varnish-Host: varnish04.zappos.net
      X-Varnish-ID: drupal
      X-Varnish-TTL: 60m

~~~
literalusername
> X-Core-Value: 8. Do More With Less

That's 1.3K of overhead per request. I call that doing Less with More.
Recruiting in HTTP headers may seem like a clever gimmick to some, but I doubt
it could possibly warrant the aggregate degradation of performance. If that's
what they call doing "More with Less", my reaction is hardly an urge to work
with them.

~~~
mkopinsky
Huh? How is this 1.3K? Looks like 34B to me...

~~~
damncabbage
I believe Mr. Username was talking about the entire header block (1322B).

(I still think he's wrong, however.)

~~~
literalusername
Yes, I measured the size of the HTTP headers. It's not a subjective
measurement. It's not 1322 bytes; it's 1275 bytes. 1322 looks like you forgot
to remove the indentation that was added above for code formatting. 1275 bytes
== 1.3K.

~~~
mkopinsky

      $ lwp-request -e -d  www.zappos.com |wc
         29     128    1299
    

Where do you get 1275? In any case, you can't consider all of this waste. Some
of it is necessary (the connection headers, content-type, some of it is a
performance improvement for a subset of clients (the link headers, etc.) and a
small percent is waste (X-Recruiting etc.)

~~~
literalusername
I measured the headers in ajtaylor's above post. Zappos delivers different
headers each time, and currently they're only giving me 599 bytes, including
zero Link headers.

I agree of course that you can't consider all of it a waste. My point was just
that their HTTP overhead is exceptionally large, and their superfluous headers
adversely affect all of their users despite the fact that almost none of their
users will ever read them.

The fact that their X-Core-Value in ajtaylor's example was "8. Do More With
Less" makes them seem clueless about the real impact of HTTP overhead.

------
angusgr
\- This seems to almost invite abuse.

\- Surely a better challenge would be to publish a brief but involved spec,
then say "implement this API that returns your job application details." Then
they can retrieve the job application from the applicants. Ideally, applicants
also publish the source code somewhere, so they can see how you code.

\- Oh wait, this is #1 on HN and getting tons of views. It has already worked
out perfectly for them, and I should stop criticising. :)

~~~
Deestan
> Surely a better challenge would be to publish a brief but involved spec,
> then say "implement this API that returns your job application details."

I would personally interpret this as intolerably arrogant and lazy. "Dance,
code monkey, dance!"

They require _me_ to spend a few hours coding instead of _them_ looking at my
resume and projects for a few minutes.

~~~
angusgr
That's fair enough. Then again, some companies do similar things, like Dropbox
with the Dropbox Challenge: <http://www.dropbox.com/jobs/challenges>

------
Fizzer
I can imagine a time when this practice becomes so common that spambots start
mass-applying, and then employers need to use a CAPTCHA to ensure that only
humans are using their API.

CAPTCHAs on an API. Never thought I'd see the day...

~~~
bitops
_> CAPTCHAs on an API. Never thought I'd see the day..._

You could argue that this is essentially accomplished through API keys/secrets
and rate limiting.

~~~
pdenya
Not on public APIs but I doubt we'll 'see the day' in any case.

~~~
ohashi
It's already here. Think of Google search as a public API. They put captchas
up if they think you're a spammer.

------
gstar
We've been doing this at EDITD for a while too:

<http://editd.com/jobs/senior-engineer/>

(for example)

~~~
devs1010
Is the purpose mainly just to prevent spam / completely unqualified
candidates? Its rather trivial to do the post for anyone with dev experience
so I can't imagine its much use to actually gauge their skills

~~~
gstar
That's what we thought too - this was the definite first pass, and we always
intended to have a challenge/response type question for extra credit.

But we didn't need it - it turns out the kind of people that are intrigued
enough to apply, and have enough ability to install a few libraries are likely
great people.

~~~
devs1010
awesome, well I plan on searching for companies that advertise jobs this way,
seems like a great way then to get their attention

------
scotty79
They could take it a bit further and provide full recruitment process and the
employment itself via api.

------
michaelcampbell
That's pretty cool; a variation of the FizzBuzz theme

I need to come up with some more of these; FizzBuzz equivalents in various
knowledge areas.

------
minikomi
The first thing which sprang to mind was an ASCII art profile photo in the
about string

------
robryan
Should have to make a request to get the resources that you can post to.

~~~
rjbond3rd
Right, the bar should be much, much higher for a programming job. Since
there's no challenge in it, no weeding of applicants is performed.

To me, though, it's self-defeating to simultaneously accept resumes via email
-- it shows there's nothing actually at stake. Don't they want only the
smartest, most persistent candidates? It doesn't seem so to me.

------
kevinburke
Shouldn't their jobs site return a 204 instead of an empty 200 response?

~~~
bitops
I would argue that 202 is the most appropriate response. They might get to it,
they might not.

 _"Don't call us..."_

~~~
nandemo
And if you miss one of the lines in your submission: 308 Resume Incomplete.

------
dedene
I think it's brilliant!

It shows creativity and maybe they will attract less applicants, but for sure
applicants who are a fit to their company, their culture and someone with the
right set of skills.

------
gexla
There are also a bunch of Chrome and Firefox add-ons which would make this
very easy.

------
killernoob
Is the page down?? Anyone? I am getting a 406 network error!

