I really like this kind of post and I wish more companies would write about their expectations before you actually get to the interview.

Still, it seems like rather run-of-the-mill process. It will certainly filter out the bad, but you may miss some very good workers who work in different ways. Facebook still seems to be totally focused on code problems, and doesn't even mention if what you've already built is important.

In my opinion, stuff that someone has made should probably be considered the most important thing by miles. It doesn't have to be open-source code, but that certainly helps.

Second most important is communication skills, especially how well they can explain things they have worked on.

From this post, Facebook seems more interested in making sure developer can re-re-re-implement merge-bubble sort-reduce, I'm sure while occasionally printing "Buzz". I understand why these tests can be necessary for a lot of people[1], but I imagine the caliber of people that get past screening at Facebook aren't of that type.

~~~

The most delightful interview I ever had (I was being interviewed) was one where the development team didn't even ask me any general programming questions. They took what I had written as fulfilling that pass, and went straight into several conversations with different developers about the ways we go about making libraries. They asked me to talk about decision making process and how I might explain or advocate for various concepts. I'd like to think if they had any suspicions they might have switched gears to a FizzBuzz level, but I can't know for sure.

These talks got very in depth, and whiteboard-writing was had, but at no time did they ask a programming question that wasn't rooted in the concrete. It was always directed: "How did you...?" "How might we...?" "Didn't you run into problems with...?"

Never did they ask me to implement a common algorithm, which feels silly. I can't remember all of them (or even most of them), and if I needed to in the course of my work I'd consult Professor Wikipedia long before I touch my own corruptible memory. Never did they ask me to implement an obscure algorithm, which popular companies seem to enjoy but I imagine filters out a lot of good candidates who happen to have spent time knowing the wrong things. I do not understand why obscura in itself might impress.

Instead, they had me make worthwhile claims about (my or other's) code and then prove them.

Then they showed me what each of them was working on, ensuring there was two-way discussion on each. They showed me problems they were having, what they were doing, and asked my opinion. They showed me bugs, and we sat down and set breakpoints, talked it over and stepped through until the issue was resolved.

This process lasted two days, and the entire time I was delighted. They did an incredible job of making me feel accepted as a fellow professional developer. I ended up not taking the job for personal reasons, but the entire process and people involved were all wonderful.

(The company was Sencha).

[1] Jeff Atwood's "Why Can't Programmers.. Program?" has a good discussion on that http://www.codinghorror.com/blog/2007/02/why-cant-programmer...