Saturday, July 24, 2010

Recruiters dirty trick

Remember the Paul Graham essays Great Hackers & The Python Paradox. To quote an paragraph for those too busy to read those two:

But when you choose a language, you're also choosing a community. The programmers you'll be able to hire to work on a Java project won't be as smart as the ones you could get to work on a project written in Python. Great Hackers

In a recent talk I said something that upset a lot of people: that you could get smarter programmers to work on a Python project than you could to work on a Java project.

I didn't mean by this that Java programmers are dumb. I meant that Python programmers are smart. It's a lot of work to learn a new programming language. And people don't learn Python because it will get them a job; they learn it because they genuinely like to program and aren't satisfied with the languages they already know.
The Python Paradox

How that translates into recruiter talk. Just imagine that you need to fill a position for some boring mainstream language. After few days (or weeks, months, quartiles) of interviewing cram school students you're exhausted with candidates who fail your variation of a FizzBuzz test so you need a way to drastically improve quality ratio of your applicants or your head is going to explode very soon. The solution is very simple just add some esoteric language to weed out resumes and hurray you'll have much smaller stack to sort.
Why this works?
Majority coders took programming as a job, something you do for money so you could spend those money on things that you need and things that interests you. If there was another job requiring same effort and payed more most coders would be doing that instead. I mean why would somebody be reading about tower of Hanoi when there is a good game on TV? If average coder needs something to advance their career so (s)he could make more money so (s)he could buy bigger TV they will learn it, it doesn't matter to them. It's the people who see programming as more than work who are complaining. Just imagine if there is enormous demand for violin players, it pays good money and work is easy to find. So if you aren't 100% tone deaf you might say : I can't find programming job, at least not one that pays well, so here's a good career choice for me, in the end everybody has to earn their bread somehow. So you buy the book learn violin playing in 24 hours and maybe get certified. Afterward you're doing your job and get payed, than your colleague is asking you do know to play Niccolo Paganini Fifth Caprice. Shit man we only do pop music here,what the hell do you need those kind of crap for? So you continue playing vanilla pop
at work and program at home why the bozo practices Fifth Caprice. (*)

So whenever I see job posts of niche languages mingled with mainstream languages I'm asking myself how much of the niche language the person is going to work with, if at all, or this is just a recruiter dirty trick to improve signal to noise ratio.
And if you think that I'm just fooling around you could see this technique mentioned in The Passionate Programmer chapter 5 where Chad Fowler uses Smalltalk to find out Java programmers in India.

Everybody could be taught how to paint, Michelangelo must be taught not to(**)

(*) This part is slightly edited post from, comp.lang.lisp original is found here
(**) I don't know where this quote is from , I think its pg but I can't find the reference.


  1. Another way to select the appropriate candidates is to request the expertise in some special CS domain. For example, recruiters could ask for 5+ years of compilers development, preferably open-source, with commits history etc.

    I think that the same criteria may be stated for quant finance, AI, DSP and other CS domains. I have seen a lot of job posts with such requirements, mainly from UK/USA companies. Ukrainian ones mostly ask about 5+ years of C++/STL/Boost/something else experience:)

  2. Sure if the position you're interviewing for is compiler development asking for expertise in that field is the right thing. However if you're using compiler development for a non related position such a making a web application in front of a database that's dishonest.

  3. Why it's dishonest, in every job ad there is written, what the person will do. Why it's dirty trick to have to talk only with programmers that you will hire. Of course you can put good javascript knowledge and have 200 people but only 3 of them know what closure is, so if you put that if person know Lisp it will be additional plus for that person or requirement, you will have less people that don't know that and more that will know.

    Person that hire a programmer, will hire the best programmer that will apply for the job,

    "Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot."

    If person know Lisp and will work on JavaScript, he will be better for the job. What dishonest about that.

    Why the person will want to select 1 programmer from 100 if he can select 1 from 5, it will throw away those 95 anyway. Everything that make your job easier is the smartest thing to do.

    The person that know how to create job ad that will atract only those 5 people is smart, not dishonest.

    And from programmer perspective, if I need to choose the company for which I will apply for the job I will choose the one that put LISP/Python/Ruby as a skill that they what to have (even if the job is for JavaScript), and not the one that put 5+ year of experience in JavaScript programming, because the first person is smartest then the second one, so I will work with smart people.

  4. You are speaking as someone who is honest that its a java/javascript/c# job but knowing lisp/apl/Haskell/Prolog is a plus.
    That's OK with me, but recruiters know that few Lispers will bother to apply. So they use murky language to disguise pure java/c# job as position that will have certain percentage of Lisp/APL/Haskell/Prolog in order to get better quality candidate. That's classical bait and switch. On a short term you might get quality coder, but soon after they discover the reality they'll start looking elsewhere.
    Two years ago I phoned a person who wrote expert in lisp though he never had any skills we asked for on the ad, and if he was really good I'm sure he would have picked up java/extjs in month or two. Not surprisingly he counted on me not knowing about the esoteric languages.

  5. I was refering to those guys, They require "Excellent Python skills" so it's obvious that they search for Python programmer.


Note: Only a member of this blog may post a comment.