Forgot your password?
typodupeerror
Facebook Programming

Gnarly Programming Challenges Help Recruit Coders 177

Posted by timothy
from the what-is-your-favorite-algorithm dept.
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.'"
This discussion has been archived. No new comments can be posted.

Gnarly Programming Challenges Help Recruit Coders

Comments Filter:
  • by Anonymous Coward on Thursday October 20, 2011 @05:49PM (#37783940)

    Well if you're one of those crazy people who DOES RTFA, then turns around and posts a comment that includes 20+ correct things and you get ONE SINGLE THING wrong, everyone on /. will immediately tell you to RTFA anyway, so this won't work. Which is why I only RTFA about half the time...I don't care THAT much, and someone is going to tell me to RTFA even if I already did.

    Second...JavaScript man? I mean, am I wrong? Is this Python or something (I mainly use JavaSccript and PHP, but at least I realize when to use what, and I lean towards PHP whenever possible), or did you seriously just write code that would OBVIOUSLY be server-side in JavaScript? I must be very unaware of the syntax of some other language because I know you didn't just post potential JS code for something that would be server-side like this.

    More on topic...I applaud FB for this. As someone who sunk 5 years into a CS degree (which involved exactly 4 computing classes, and 31 other, non-computing classes, including "intro to computing" and "microcomputer applications" i.e. MS Office) I can tell you that I learned more about writing actual code in 2 hours with an online tutorial than I did in 5 years at a major institution. (Before anyone asks, me and Public Speaking class didn't get along too well. Would've been out a full year sooner...) I've been writing "code" of some sort since I was 4 and I'm 24 now (yes it was a batch script in DOS, but at 4 that's not half bad) and I'm not even the best programmer I know. Yet, if I had to list the top 10 programmers I know, I'd say 3 have even been to college, and only 2 have a degree. It may not apply to every field, but I'm sorry, for computing, hiring someone with a college degree means one thing and one thing only - they can be forced to do bitchwork for 4 (or 5) years for no logical reason. If you go to college and get an education in computing so that you can get a job in a field that makes more money, you're NOT going to really give a damn about the code you write. When it's what you do for "fun" then you'll always do a better job at it than someone who doesn't enjoy it and is only in it for the money. I find that it's exceptionally rare that someone gets a degree in CS because they enjoy CS. they get the CS degree because they think it's more hire-able. And that's really sad.

  • by gweihir (88907) on Thursday October 20, 2011 @06:23PM (#37784442)

    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.

You have a tendency to feel you are superior to most computers.

Working...