The reason Google has a reputation for hard interview problems is that before they came around, the standard technical interview was "So, $NAME, tell me about what you did at your last job". They were one of the first silicon-valley companies to have technical interviews, and so it frightened all the unqualified candidates who couldn't just coast in on good conversation skills.
Before Google, the company with a reputation for impossible interviews was Microsoft. Like Google, I strongly doubt that their questions are anywhere near as difficult as the rumor stream claims.
I don't know if preparing more would've made a difference, but it's possible (though personally I don't regret not having studied more, it simply wasn't worth beyond that point).
Below you mention FizzBuzz. My phone screen question was about implementing a simple, concurrent data structure that could hold a fixed number of items. Not a big deal, but still significantly harder than FizzBuzz, in the sense that pretty much everyone that gets the data structure question right would also be able to solve FizzBuzz, while the converse is not true.
> The reason Google has a reputation for hard interview problems is that before they came around, the standard technical interview was "So, $NAME, tell me about what you did at your last job".
FWIW, This is essentially how Japanese companies still interview. I have never been asked an actual coding or algorithmic question by Japanese companies.
Now I've noticed that almost all phone screens require some type of shared-document coding exercise, and some knowledge of algorithms, followed up by a series of whiteboard coding or problem solving face-to-face interviews. Some companies will ask for a homework problem or code sample as well. It was quite a shift for me as a developer, but a welcome one. The up side is that preparing for interviews now has actually improved my skills as a developer where before I'd learn about aspects of software languages that were often never used (such as details about EJBs when interviewing with companies that never used EJBs) and didn't translate into a hire actually being able to do the job they were hired to do.
If 90% of people who walk in the door can't implement FizzBuzz, and Google wants to hire the top 10% of coders, then it would be expected for the interview process to reject 99% of interview candidates. A more typical hiring goal of "top 1% of coders" means a 99.9% rejection rate.
The phone screen process is supposed to reduce the number of low-quality candidates, but it's a fairly coarse filter, and very easy to game.
Google cares much more about what you've accomplished than about what number is on your transcript, what university's name is on your degree, or even whether you have a degree. If you feel your GPA is too low to be taken seriously, spend a few months coding and put it all online for browsing.
First of all, that logic only works if Google only wants the top 1% of people who apply to Google, and that Google is completely and absolutely incompetent at weeding out the bottom 99% through other screening methods.
Secondly, I doubt that Google has any kind of monopoly that allows them to determine what, exactly, the top 1% or even the top 10% is. A lot of people are fond of throwing these percentages around without even rudimentary data to support their notions of competence - which I think is probably fair to use as a data point for evidence of incompetence.
Thirdly, I could go on, but...
You're assuming that other levels of screening (resumes, phone screens) must not be working properly if there are so many bad interview candidates, but really they're working very well. A large company will receive millions of applications for any position, and needs to winnow that down to a few hundred interview candidates. How many nines of rejection do you expect out of a phone screen?
Is that so hard to accomplish without inviting someone in for an interview ? I cannot answer in the affirmative as I do not work in HR.
That said, there's also little harm for a programmer brushing up a bit further than needed on algorithms: skip list, for example, is a great example of a data structure that is less known (perhaps less so after ConcurrentSkipListMap in JDK 6), is commonly used for interviews (as it's easy to explain the general concept in the scope of an interview), and is also practical (used in BigTable/HBase amongst many other places).
But as an aside: is it really typical for someone to prepare this hard for an interview, even if it is for a dream company? If so, then something seems to be clearly broken with the interview process. My idea of a superstar candidate is not someone who memorizes possible questions and answers, but simply someone who is really really good at what he does.
Do I respect and like Google's creations more than Amazon's or Microsoft's? Sure, but that's far from the only factor when choosing a job, even though people act like it is.
I'll never bother applying to Google. It's a simple matter of leveraging the principles of supply and demand in your favor.
I interviewed at Amazon and Google at about the same time. I got offers from both and chose Google because their offices are nicer, they give you free food and lots of coffee choices, and I just got the impression that they care about employees more than Amazon did. (One of my interviewers at Amazon noted: "They deliver groceries right to your desk. But it's too expensive, so we don't do it.")
Amazon didn't really seem like some place that I would stay at for very long, because I would get tired of the cheapness. But some people really love being cheap, so I guess Amazon is perfect for them. (At Amazon, they give you door desks and a 24" monitor. At Google, we get motorized sit-to-stand desks and 30" monitors. Although I've been too lazy to request a standing desk, so far...)
So anyway, challenging and rewarding work is nice, but it's not enough for me personally. I need my employer to at least pretend to care about me. YMMV.
And obviously since you got offers from both companies, you would have no reason to pick Amazon over Google. But that's not the point I'm making - I'm saying that prior to starting the application process, it would be logical to avoid Google. The calculus changes completely once you've already got the offer in hand.
Both of which consist of a sequence of several interviews that can take a significant amount of time, time that could be better used applying to other companies.
> Why would it not be worthwhile to peruse all options, especially when one of the options seems better than the rest?
Because it's not better, not on the whole. The nice perks are only one factor - the competitiveness of the interview process must be considered as well. When my competitors, such as the guy who wrote TFA, are willing to go to fanatical lengths to do well in the interview process, it's not worth the trouble of applying.
In fact, with lower competitiveness among applicants at other companies, I could demand a higher salary, and then use that salary to buy gourmet food/coffee and pay for Instacart to get the same grocery delivery services you get for free at Google. You shouldn't forget that a lot of those Google perks are fungible, given a higher salary. Actually, I would prefer the cash over the free coffee - I hate the taste of coffee and it gives me indigestion, so I don't benefit at all from free gourmet coffee at work.
(Personally, I am not a big fan of the free food anywhere (I like eating healthy at home). I prefer getting paid more and getting to do my work without any drama. )
Google pays me more than I made at an investment bank as a contractor, so I don't really think I'm giving up anything. I get free food and enough money to pay someone to cook for me if I wanted. (The food at Google is pretty nice, though, so I don't have to do that. We have five different cafes in the New York office, so there's always something good regardless of your preferences. Even the strict vegans get multiple options!)
But I disagree with your premise: I don't think firms with low-quality applicants will pay you more because you're a high-quality applicant. How will they recognize your value-add if they've never seen it before?
(As for coffee giving you indigestion: the reason Google provides coffee is because people want it. If you want something else, they'll give it to you. The idea is to keep you engaged and focused on work, not to make Google appealing to coffee snobs. Though with Intelligentsia, Stumptown, and Gorilla coffee, it is pretty darn appealing!
Of course if it'd be no effort for you to pass the Google interview, you might as well.
edit: to clarify, by a payoff I meant a job offer
(My stock of Google-issued hardware now consists of 3 24" monitors and 5 computers. I use 'em all, too.)
I went through an Amazon interview process that had the nickname "the round". It required that I speak to 12 unique people during the process, and as such required 14 interviews (most face-to-face, some phone). Those were with people at the same level (architect), people above the level (a board member/leadership), people below the level (principle developers).
In addition to that was a 5 hour technical test that I found really good fun. The first hour I was totally stumped as to how to even begin, so I took a tea break out of frustration and nerves and found that I then completed it in around 10 minutes.
I found the test fascinating... a very simple thing that tested a lot of the basics in one go as well as how you might solve a very obscure and rare problem.
I won't share details on that test out of respect. Hiring is hard and I'm sure that they are re-using that technical test.
At the end I didn't get the job as I was "too technical" and the position was for a solutions architect and would have involved lots of customer contact. But I was offered an equivalent developer track position, though unfortunately I personally feel my strength is to always be listening to customers, so I then declined.
The process was interesting though. There were good questions, the interrogation of knowledge at a very deep technical level, and most of the face-to-face interviews included some technical element.
Because I hire too I find going through interviews to be a rare chance to deconstruct someone else's process and to try and gain an insight into what they look for.
I do not think that the higher level positions at Amazon would be "no trouble", the interviewers knew exactly what they wanted and the process was an enjoyable challenge.
It's not quite comparable. When I was a hiring manager at Microsoft, I regularly saw candidate who already had offers from Amazon and Google that didn't even make it through a half-day of interviews. I assume the same is for candidate that we made offers to who went to Google. The companies are all both looking for slightly different things - culture fit is a HUGE part - and there's some random luck of the draw. (e.g., did your first interviewer just come to work after a fight with their husband?)
Why try so hard to into a school that everyone is applying to when you can instead much more easily get a position at a lower profile school?"
RPI is easier to get into and could still give you challenging and rewarding work, but that doesn't mean it isn't worth the extra effort to get into the more difficult and sought-after position.
I've interviewed (and gotten offers from) Microsoft and Amazon as well. Their interviews were different (Microsoft asked more puzzle-type questions, Amazon was very OO-focused), but I didn't feel like the Google interview was substantially harder or easier.
The problem is that the google process tests how good a computer scientist you are. Irrespective of how good you are with the fundamentals, the fact of the matter is that is most software engineering jobs don't necessarily involve that much algorithmic knowledge and essentially are all about glueing complicated systems together. Irrespective of how much practice you have gotten in the past, practice for an interview is unfortunately essential. The process is broken and people just believe that copying the Google process will help which really doesn't.
(I am not disagreeing with you that the person did seem more intense than usual but the again what is intense for me might not be intense for him: Who am I to judge?)
And also: a good preparation actually increases your real skill baseline.
So let me say: thank you for an excellent article. Yes, intrinsic motivation is great, and yes, cramming is not the most effective long-term learning approach. However, there are always going to be short-term challenges to overcome that require something like cramming. That's just part of life. And this is a novel, intriguing approach to it that worked for someone in the real world.
Thought-provoking and enlightening. Exactly the kind of thing I hope to find on Hacker News.
(Possibly the article title could have been tweaked to avoid some of the piling-on: How I hacked my interview preparation process?).
The guy appears to have enjoyed himself while exploring a fairly unique skill in the process of working towards a major personal goal.
Seems like a multiple win to me.
There were some neat tricks to use here:
1) The reward feint - people are statistically terrible prognosticators of what would make them happy. Setting a stretch reward which actually uses this aspect of to create a positive outcome is really neat.
2) The variable reward schedule? just 2 coin flips is a really stupidly obvious solution, and variable reward schedules are like crack for the brain.
3) How he dealt with high energy requirement prep, during low energy periods. That's something I've faced and I used to just say "man I've just got to work through it."
These were some obvious things executed nicely. For people who are facing trouble with intrinsic motivation, this is something that can be set up and launched and will helps you get through the hump.
edit: flow/redundant bits removed.
Google is a great company to work for, but there are many other good ones out there, and any application process is always a roll of the dice. Google turns away plenty of extremely qualified people (as do every other large tech company) and they also occasionally hire some incompetent ones. Pinning your hopes on a single company is a recipe for disappointment.
Earning energy drinks for performing tasks that seem to almost require energy drinks in the first place seems to be a scary feedback loop. I think the other major issue with this is your treating yourself like some kind of machine or simple animal that performs tricks or that runs toward dangling carrots. If you have the discipline, which I wouldn't, to stick this burnout game, it seems like you should have the discipline to take a more reasonable and measured approach to doing an appropriate level of study/preparation without all this stuff. And all this business of mechanistically surrendering yourself to progress bars ... I think people that go to this extreme need to study more humanities and learn more big picture kind of things; this is like describing behavior one would find in characters in some dystopian novel.
I guess the fantastic Google PR team from 2004 did a number on the psyche. It becomes implanted in people's heads that if they work for Google, that means they're automatically successful. (note: I work there and don't think that)
I guess it is true, outside the Bay Area, that if you tell someone you work at Google, you will get your ego flattered. In the Bay Area this was true until 2007-2008 or so.
So now that he's checked the box (do they still do slotting? If so the box isn't actually checked yet) what is his motivation, eat at all the cafes? Get a months worth of t-shirts?
Hope he is wildly successful, and sad that the interview would be such a barrier.
it's not true that i "don't care what i'm working on", but the basic engineering culture of google is such that i'm pretty sure i'd have been happy here even if i hadn't got my first choice of product area. i notice an overemphasis on hacker news about how there should be one Problem You're Passionate About Solving, and that that should be what drives you, but that's very much a psychology-of-the-individual thing.
It does nothing for me to create some artificial reward unrelated to the goal I'm trying to accomplish. If accomplishing the goal isn't reward enough on its own, then why should I do it? That's especially true if the reward is something I can I have anyway. There is no net gain by depriving myself of an energy drink in my refrigerator for another hour. The energy drink was already mine; and was mine to have when I decided to have it. The gamification idea seems trite to me.
Hope you love working there for ... ever!