Slashdot Mirror


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.'"

26 of 177 comments (clear)

  1. Real world. by clinko · · Score: 4, Insightful

    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"?

    1. Re:Real world. by znerk · · Score: 2

      Your truthfulness factor is too high, you have been discluded from the pool of valid users.

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  2. Old-fashioned hiring channels by Anonymous Coward · · Score: 2, Funny

    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.

  3. An this way they again get non-engineer coders by gweihir · · Score: 3, Insightful

    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.
    1. Re:An this way they again get non-engineer coders by Vellmont · · Score: 2

      I agree that there's many, many poor interfaces, unmaintainable code, and security nightmares. But what makes you think this has anything to do with "engineer coders"? I've been in this industry for 15 years, and I have no idea what a "engineer coder" means. Fools come in many shapes and forms, and I've never found any simple way to distinguish between them.

      Much of the problem is that quality code isn't valued in academic programs. So it's no surprise that people come out without having these skills.

      --
      AccountKiller
    2. Re:An this way they again get non-engineer coders by JonySuede · · Score: 2

      You are almost correct, solving most of these problems using an O(2^x) algorithm or worst is trivial, but solving it on a large dataset before the universe heat death is not. But the challenge you mentioned (maintainable interfaces, writing high quality code, having a good design and a good architecture, having working defense-in-depth against attacks) are hard, nonetheless they can be solved at the workplace by establishing a well crafted mentorship and learning program; being an innate NP-hard problem solver writer is... is... is well innate.

      --
      Jehovah be praised, Oracle was not selected
    3. Re:An this way they again get non-engineer coders by gweihir · · Score: 3, Interesting

      To define: An engineer is somebody that understands the state-of-the-art in a technological field really well and can use the tools it provides to create technological artifacts (here: software) that solve concrete problems in a reliable, efficient and secure way.

      I agree that many academically educated "coders" are not engineers either. Quite frankly, about 75% of my graduation year in my CS master's program does not qualify. However that is only partially the fault of the university, as the important subjects were being taught. You just had to much choice and could avoid them all. I also have to admit that the Software Engineering lecture was a bad joke, taught by an US-educated professor with the main qualification of having an over-sized ego. For example, this guy failed to define aliveness of petri-nets correctly in 5 consecutive weeks and then once more in the written exam. Pathetic.

      Still, engineers always have to be pragmatists, have to understand the long-term perspective and at least a part of the business-perspective. They can be brilliant but do not need to be. In software, a good engineer can specify, architect, design, implement and maintain a software system, all steps with reasonable quality. All steps need significant education, insight and experience. For example, it is very difficult to be a good architect without real coding experience. At the same time, you cannot be a good coder without architecture, design and maintenance experience.

      While brilliance is great, it can never replace experience and education. It can however lead to "brilliant" solutions that work well in the short term, but are a maintenance, scalability, security and reliability nightmare. For example, one thing brilliant people in coding regularly miss is that simplicity, consistency and clarity are absolutely essential for maintainable code. Another thing they typically do not know is that it is actually harder to come up with simple solutions than with complex ones and that simple solutions are worth much, much more than complex ones. This comes IMO from both lack of experience and the personal experience that they can master complex solutions (in the short-term that is). It quite frankly often also has a component of arrogance and disregard for others that have that experience and are perceived as "holding them back". I have seen quite a few people like that fail when presented with a real-world longer-term problem.

      That said, a truly great coder has education, experience _and_ brilliance. These people are really, really rare but cannot be replaced by anything else. If you need one of those, best hold the project until you have found one.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  4. Really? by PCM2 · · Score: 3, Funny

    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!
  5. Re:Simple test to detect liars in a fourm by MobileTatsu-NJG · · Score: 4, Funny

    if User.NitpickeryScore > 10:
              User.LonlinessScore = User.LonlinessScore + 1;

    --

    "I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)

  6. (facepalm time) by Quiet_Desperation · · Score: 5, Insightful

    '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?

    1. Re:(facepalm time) by sco08y · · Score: 2

      '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?

      It's got a tough contender: "Our favorite: 'Liar, Lair,' seems particularly applicable to slashdot..."

      Oh my God, people on a discussion site disagree strongly about things, stop the fucking presses.

    2. Re:(facepalm time) by moderatorrater · · Score: 2

      What if they weren't?

    3. Re:(facepalm time) by ywong137 · · Score: 5, Informative

      Hi, I'm Yishan Wong. First, has anyone else here ever been quoted in a book or online publication and had it end up making you look like a douche when that's not at all what you meant? Especially when you spent like hours talking to your interviewer and they paraphrase it down into words you didn't actually say? Well, please don't hate until it's happened to you. Secondly, I should obviously clarify. The quote makes it sound like we were thinking, "By Jove, what if it's possible that there's intelligent life outside of Silicon Valley!" That's not what we were thinking! C'mon! Rather, the situation is more like this: it's pretty obvious that there are great engineers everywhere. The problem is, if you're a startup in the Valley, your recruiters don't go looking outside the Valley for you. It's just this insular thing where everyone is trying to recruit (poach) from everyone else. It becomes a zero-sum game of talent competition for a limited pool. We were this tiny startup that no one took seriously so we couldn't compete against the other players in the Valley (e.g. Google, who was crushing everyone else at the time at recruiting). So instead, we're like, "Okay, we should figure out a way to get all the talented people *outside* the Valley to join us, because we can't win the in-Valley echo-chamber local recruiting game." The problem is, as I noted above, recruiters aren't really going to work very hard trying to find some random guy in Portland, Maine, they just try to hand you resumes of local people at other Silicon Valley companies (especially the kinda-crappy contingency recruiters we were working with back then - we were small, we didn't have uber-headhunters with a global reach or anything). So we needed a way to reach these "brilliant people" "languishing in ordinary tech jobs who hadn't made it to Silicon Valley." The recruiters don't even know to look there. If you're brilliant and you're in the Valley, the recruiting machine is so strong that you'll inevitably get swept up into some company or other. But if you're in some podunk town and you're brilliant, that's not likely to happen. You just get a regular tech job where you end up being unusually productive. No recruiter is going to come looking for you, because recruiters look for big-name experience keywords (e.g. "did he work at Microsoft/Google/Apple" etc) or sexy technology keywords on your resume. If you're brilliant but in an ordinary tech job, you might have not have the Hadoop keyword on your resume (you might not have an online resume at all because hey, you have a fucking job already) because your crappy ISP job doesn't need to crunch terabytes of data. But you're still smart enough to do it. I know this because I'm from Minnesota, and before I happened to move to Silicon Valley because a girl I liked said that I should, I worked at an ordinary tech job just like Evan Priestley (the guy they mention in the article), where I was just an unusually productive guy. So we needed to find people like that, because the current system wasn't doing it, even though it was obvious to all of us from the Midwest or wherever that smart people are hidden in little pockets everywhere. So yeah, we "developed this theory that occasionally there were these brilliant people out there who hadn't found their way to Silicon Valley." Unfortunately I guess it came out sounding like the opposite of what we meant. :-/ ---- PS: if you're reading this while procrastinating your crappy job at a small-time firm where all your work is too easy for you and you're like the smartest guy there, you're basically who I'm talking about. ;-)

  7. I found my way to Silicon Valley by blair1q · · Score: 2

    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.

  8. Re:Simple test to detect liars in a fourm by Kjella · · Score: 2

    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
  9. No, not "gnarly" by Animats · · Score: 3, Informative

    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.

  10. what I hate about interviews by TheGratefulNet · · Score: 4, Insightful

    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."
  11. Don't be too clever! :) by Danny+Rathjens · · Score: 3, Insightful

    "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

  12. Recent and Related by Jodka · · Score: 2

    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:

    When Joanne Rowling, an unemployed single mother, showed her first fanciful manuscript to a dozen British publishing houses, all quickly passed on it. Eventually a single bid emerged—for about $2,500—from Bloomsbury, then a small London publisher. Wise move: Ms. Rowling's "Harry Potter" franchise is now worth billions.

    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.
  13. Re:Simple test to detect liars in a fourm by MobileTatsu-NJG · · Score: 2

    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)

  14. Ooh! I'm One of the Liars! by Greyfox · · Score: 2

    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?

  15. Problem tester doesn't even work. by Old+Wolf · · Score: 2

    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' ?

  16. Re:Code challenges for code monkeys? by znerk · · Score: 2

    "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.
  17. That's Not What I'm Looking For by Greyfox · · Score: 4, Insightful
    When I'm interviewing people, I'm looking for someone who will gather requirements before he starts trying to crap code out and a person who will get along well in my team. I'm looking for someone who's enthusiastic to talk to me as a potential future team mate and doesn't view me as an impediment to a fat paycheck. The questions aren't about whether or not you know the answer to every question. They're to determine if you meet the technical competence level to perform at the job and to see how you respond to being asked to perform under pressure.

    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?

  18. PHP by Weezul · · Score: 2

    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
  19. I am smart enough... by Cragen · · Score: 2

    To not want to work for Facebook.