Gnarly Programming Challenges Help Recruit Coders
Hugh Pickens writes "George Anders writes that companies like Facebook are finding that old-fashioned hiring channels aren't paying off fast enough and are publishing gnarly programming challenges and inviting engineers anywhere to solve them. 'We developed this theory that occasionally there were these brilliant people out there who hadn't found their way to Silicon Valley,' says Facebook engineer Yishan Wong who volunteered to draft puzzles so hard that he couldn't solve them. The problems aren't the superficial brainteasers that some companies use, like estimating the number of basketballs sold every year or why are manhole covers round, but developing sophisticated algorithms — like ways of automatically seating a clique of people in a movie theater, given that best friends want to be side by side and rivals need to be far apart. David Eisenstat has compiled an unofficial guide to the Facebook Engineering Puzzles. Our favorite: 'Liar, Lair,' seems particularly applicable to slashdot: 'As a newbie on a particular internet discussion board, you notice a distinct trend among its veteran members; everyone seems to be either unfailingly honest or compulsively deceptive,' says the description of the problem. 'You must write a program to determine, given all the information you've collected from the discussion board members, which members have the same attitude toward telling the truth.'"
Given the number of comments take each post and divide by....
Got an email Hold on...
Management has now changed the comments to votes...
Given the number of votes FOR a post...
Email again, 1 sec...
We're now on a new project making a "facebook for insurance policies"?
Well, let's see here. We have the standard interview format, where they find out what you know and how you've used it (after HR subjects your resume to the most stupid and rigorous pigeonholing known to man), there's the audition format, where they give you a task and judge your results, and then there's what I like to call the goofy-as-fuck-Google-format, where they subject you to bizarre questions that don't have any particular bearing on your actual job and instead attempt to figure out how creative or conservative you are while you demonstrate a certain level of knowledge on a topic. From lowest amount of hoops to most, you are progressively demonstrating as an employer how desperate you are to find "authentic" applicants that fit your corporate culture.
Whether these are effective or not I leave up to your metrics. I don't play games, I get shit done.
Quite frankly, solving these problems today should not be hard. At most a literature search should bring you the algorithmics. But what is hard is doing good, maintainable interfaces, writing high quality code, having a good design and a good architecture, having working defense-in-depth against attacks, etc. None of which a brilliant person without in-depth CS education and significant experience can do. This just keeps up the atrocious code quality responsible for so many data leaks and successful attacks. It also explains the high cost of software.
This is the wrong approach on so many levels...
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
So that's what programmers at software companies do all day? Write novel algorithms?
Coulda fooled me, last software job I had I spent all day in meetings.
Breakfast served all day!
if User.NitpickeryScore > 10:
User.LonlinessScore = User.LonlinessScore + 1;
"I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)
'We developed this theory that occasionally there were these brilliant people out there who hadn't found their way to Silicon Valley/
Douche comment of the week right there. And I want to work with someone who has *that* limited of a horizon why, exactly?
I found my way to Silicon Valley.
And discovered it's a crowded, underbuilt swordfest.
No girls, no sunshine, no warmth, crappy food.
And all the computer stuff can be done from somewhere else (which is why much of Silicon Valley moved back to India).
Seriously. Plow it under and put the fruit trees back. Silicon Valley is done.
Is it a bad sign when I want to nitpick and say you could just use "User.LonlinessScore++;"?
Live today, because you never know what tomorrow brings
Actually, you want programmers who are good at design and reliably competent, but not overly clever, at code. "Cute" code is very '70s.
Incidentally, the "why are manhole covers round", which appeared on the 1971 Comprehensive Examination in Computer Science at Stanford and was widely copied from there, is almost always misunderstood. While it's nice to have a lid you can't drop through the hole, that's not the reason. Many modern covers are rectangular. It's because manhole covers and their matching rings are 19th century technology, from the day when casting, planing, drilling, and turning were the main metalworking operations. Those limit the shapes you can make cheaply. Look at a steam locomotive built prior to 1920. Every machined surface is circular or flat. Manhole covers were made by casting with a single clamping on a lathe to clean up the outside edge. Similarly, the matching rings were cast and got a quick trim on a lathe to true them up. This gives you a matched pair that won't rattle or clang.
Cleaning up an inside rectangular edge requires a milling machine, which was an exotic precision device until about 1930 or so.
So that's why manhole covers are round. Low manufacturing cost.
is that they expect 'real time' answers to problems that sometimes need a bit of thought. its also ageist, as younger people can think faster (I sure did 30 yrs ago when I was fresh out of school) and are more familiar with classic compsci algorithms and problems. the more time you are away from those 'classic' problems and their cute solutions, the more time it will take you to re-invent them on their on. asking for that real-time while you watch is just too much to ask, for many of us.
this does NOT mean we can't solve the problem. but it does mean that realtime 'solve whilst I watch' is pure bullshit and a really stupid way to judge programming talent and problem solving ability.
--
"It is now safe to switch off your computer."
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." -- Brian W. Kernighan
A couple of interesting and related things on the subject of hiring strategies appeared this week in the Wall Street Journal.
First, a fascinating review of the book "The Rare Find" by George Anders. The review beings with this interesting anecdote and gets better after that:
Next, James Taranto theorizes that college degrees are proxy for IQ Tests, which it is illegal to use in hiring. It raises the question of whether FaceBook's Programming Challenges will not become the target of lawsuits on the basis of "differential impact" as in Griggs V. Duke Power Co.
Ceci n'est pas une signature.
Well, no, it's not psuedocode. But I will concede that Python is basically jusy psuedocode that works after you've properly indented it.
"I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)
I always lie in my Slashdot posts! In fact, I'm lying RIGHT NOW!
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
The facebook page linked in TFA has a set of problems that's meant to have an auto-grading robot (which I presume then suggests to FB that it might want to hire you). However the robot has been down for months with no word on when it is coming back.
So, how do we 'apply' ?
"For the rights to view my solution to your programming challenge, you will be required to purchase a license to view the code, at $300 per viewing eyeball. For the rights to implement and/or execute the solution, you will need to purchase a separate license, with a purchase price of $10,000 per cpu core expected to run it, and $5,000 per cpu core that has the potential to run it (ie, a separate device on the same network). I look forward to our future business relationship, and will assume a breach of contract if I have not heard from you within 14 business days."
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
In interviews I've conducted, I've had VERY few people who didn't view me as an impediment to a fat paycheck, who didn't think the questions I was asking them were bullshit and who actually tried to find out more about what I wanted when I asked them to design a function for me. Those people got hired. Some of the others did too, but always against my advice.
You want to do well in an interview? Try ENJOYING yourself there. If you're excited to be there and excited to talk to future team mates, they will sense that. If you don't want to be there and hate everything about the process, they'll sense that too. You can refine your technique all you want after that, but you'll always get more job offers just enjoying an interview than you will if you hate it.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Facebook builds their software using PHP which ties VB for being the language of course for when you need as many cheap dumb programmers as possible.
You don't think they simply needed some new blood?
The Christian religion has been and still is the principal enemy of moral progress in the world. -- Bertrand Russell
To not want to work for Facebook.