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

1 of 177 comments (clear)

  1. 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.