Also, every bullshit funded startup in NYC pays what Facebook is paying, or better. (just a pro tip in case anyone else here is too old for facebook but needs to make some dough after spending too much time in the 80-90k zone, like I did)
I'm about to be a recent college grad and I want to know what subpar is so I can spend my time now making sure that I am not that.
It's really frustrating to me when people say things like "Let's just say I know enough Googlers who are currently fed up with the influx of subpar nooglers." And I have no idea what they mean.
Google's a big company, so I'm sure that some pockets err on one side, some on the other.
That's actually fairly common in the Silicon Valley. It's 10 to 20 people on the market, not 10 to 20 programmers selected at random: some are specialists in fields other than the ones you're looking for (or their resume is misread by the recruiter e.g., someone who has experience with enterprise search but is being interviewed for a web search position), others lack certain specific knowledge you do want, yet others are looking for a place where they can be "promoted to their level of incompetence".
A rate of 1/10 or 1/20 (5-10%) is actually very good and indicates an ability to recruit and screen well.
It's a balancing act. Reject too many in phone screens, and you miss out on talent. Reject them at the interview stage, and you waste interviewer time. Accept them and put them on teams, and you drag down the level of the team and cause morale problems. Google's been accused of all of them, but in my experience, hiring sucks wherever you are, and they do the best they can given the data available.
One of their recruiters once contacted me (because I went to a 'top university') but decided it would be a 'waste of time' because I hadn't done any Java or C++ recently. It used to be that Google was interviewing for knowledge of the fundamentals unlike most other 'business-oriented' companies that want specific recent skills.
Nowadays it seems that they've got the 'worst' of both worlds - I heard they interview for very hard-core graph programming algorithms, and at the same time they want recent experience with Java or C++. So basically if you've recently only done Lisp/Smalltalk/etc or even Python, you don't qualify. Where is the logic in that?
On top of that, my impression was that the salary levels of their employees were fairly astronomical, on par with the ones paid by banks/hedge funds, but that definitely doesn't seem to be the case.
The first candidate who I interviewed and was hired coded in Lisp during the interview.
I recently interviewed a candidate who did a lot of iphone development and was obviously very bright, but didn't code very well in straight C get hired.
Candidates coding in Python during the interview is pretty common and I certainly don't count it against them.
I am not sure what recruiters are looking for and filtering upon, but if you are good with C++ or Java, even if you haven't used in the last few years, that is more than certainly enough. If you aren't good with C++ or Java, but you are really good anyway, you can still make it through the interviews, but it will be harder.
Is this some kind of official policy? Because ...
1) High impact. Most team sizes are 5 people or less. Those 5 people are handling big systems like photos or memcache. You know you're doing important things.
2) Move fast. Example: Facebook Groups went from concept to release in 3 months. In other companies, it would take 3 months just to get through release engineering.
3) Hackathon! People here love to code, and the environment encourages you. A lot of managers have switched back to SWEs, reinforcing that it's not demeaning to stay technical.
4) Still growing. It's true, new hotness normally trumps old & established. However, where Google started doubling every 6-9 months; Facebook tries to maintain top quality at the occasional expense of slower growth. This is helping the company retain most of its original culture.
1.) Everything you do automatically has an audience. People care about the software you write and use it in their daily lives.
2.) You get social cachet from working there. Say "I work for Google", and a bunch of people will say, "Oh, that must be nice. I wish I was smart enough to get in there." Outside of a few nerds who are too cool for FaceBook, saying "I work for FaceBook" gets the same reaction.
3.) Being in a younger, game-changing company gives you the chance to work on cooler, game-changing technologies. Many tech workers are attracted by hard problems; young, fast-growing companies tend to have lots of hard problems.
4.) When companies are younger, they've accumulated less legacy code and fewer bureaucratic procedures. If you ask a bunch of Googlers what they hate most about working for Google, I bet a large portion will say "legacy code". This is a maintenance tax that isn't fun at all, yet has to be dealt with whenever you build something on top of it. Being younger and smaller, FaceBook has less of this.
#4 is a property of most young companies regardless of their popularity.
I know this doesn't exactly explain why facebook does better in the surveys than google, but I think part of the reason facebookers feel more satisfied, is because they know they get paid more than googlers.