As someone who works at Google, this seems like a grossly excessive amount of effort to get past interviews which just aren't that hard. It would have been much easier to browse through the first few chapters of an algorithms textbook, set up a simple network between two linux VMs, and (optionally) brush up on C++/Java/Python syntax if those aren't languages you use often.
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.
Unlike Microsoft, it seem that Google changed the interviewing process for many companies and I am grateful for it. My interviews pre-Google were primarily trivia contests about the language used for the position I was interviewing for. I was never asked to actually write code or break down a problem. Phone screens were mostly used to verify a candidate had a pulse.
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.
Yet Google still has a reputation for very selective hiring ... is that because most of the hiring decision isn't interview-related (degree/GPA/projects/resume)? Or is it that, while the data structures/algorithms questions might not be too hard, it's possible that the interviews are still difficult, due perhaps to a degree of randomness, or to high standards (candidate is IO-bound not compute-bound, never makes a mistake, uses of axiomatic semantics to prove correctness as she writes...)?
You are correct, but the author doesn't seem to be either from the US or a software engineer (his LinkedIn profile indicates a non-technical role).
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.
Yeah, this is just stupid. I have a friend at Amazon who said I'd have no trouble getting through their interview process, but these Google interviews are absurd to me. Why try so hard to get a job at a company that everyone is applying to when you can instead much more easily get a position at a lower profile company, like Amazon or Microsoft, that will still give you challenging and rewarding work?
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.
> 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.
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?)
Is is, but the fact is that people who work at these companies don't really work on problems like those posed at interviews. Once you're in, you're in, and you can relax, more or less. The sense I've developed over the years is that hiring processes like these are engineered to find overqualified employees.
You are right in principle but the outcome of the interview is a combination of two factors: the baseline of real skill and the "noise" of your preparedness, mood on the particular day, judgement of the interviewer and so on. You can't change that, therefore it makes sense to put effort into improving the part of the noise that you can control.
And also: a good preparation actually increases your real skill baseline.
Part of preparation of this kind is merely getting comfortable with the idea of problem solving and coding in a high pressure environment, many otherwise excellent candidates eliminate themselves by choking at the whiteboard or collaborative editing tool. A day of serial technical interviews can be a brutal exercise that is very different from flow coding.
I'm generally not one to get excited about the concept of gamification. However, I thought the variable reward stuff was novel and interesting (and obvious, in hindsight).
I was surprised to see no positive comments here at all (at the time I posted this comment).
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.
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.
I'm all for finding ways to motivate yourself, but there's no need to spend this much time on interview prep.
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.
The problem is this is a little disturbing and honestly pretty unhealthy; i.e. I think this would lead to some kind of burnout or breakdown either mentally or physically. Sure, it seems like an awful lot of work for the ultimate reward of working at Google, not exactly like winning the Nobel prize or something.
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.
Can you expound on why you feel this way? Personally, I prefer the strength of intrinsic rewards. Gamification seems to devalue my effort. But I'm not denying that it works for people. It might not be a perfect solution, but an 80% solution is better than not preparing for an interview or not being active (FitBit). Why dismiss this outright?
It's an interesting article, but I doubt the gamification stuff would work for me at all.
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.
What is wrong with preparing hard. I love how he gamified the interview and used the right tools for motivation. Imagine applying this to other facets like project completion, study etc ...
theres nothing wrong with proper preparation, but the whole idea of gamifying the process seems incredibly unnecessary. As an employer I look for people that are very self motivated, and don't require any external motivations like an ipad to do something. If someone told me they needed this type of effort to get something done that as in his words "is a dream of mine", then he already failed my test.
He generated his own motivation: His external motivations were bought with his own money. Why is this a problem as long as he gets the job done? Everyone gets motivated by something: After all, as an employer, surely you do pay your employees, don't you? That does act as some sort of motivation. Otherwise, they would be all working for you for free just driven by all that "self-motivation".
That's a silly test then. Everybody needs to be motivated to work, whether their motivation is supporting a family, making money, enjoying a task etc etc. There's no inherent enjoyment to making money for somebody else.
Agreed. This is a simple case of doing good preparation. Gamification has zero to do with it. Sadly, he spent the entire article talking about the wrong thing, because gamification is his SEO soapbox. "Must make square peg fit in round hole."
[+] [-] jmillikin|13 years ago|reply
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.
[+] [-] nandemo|13 years ago|reply
http://news.ycombinator.com/item?id=4704039
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.
[+] [-] dabent|13 years ago|reply
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.
[+] [-] Fixnum|13 years ago|reply
[+] [-] strlen|13 years ago|reply
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).
[+] [-] wdr1|13 years ago|reply
[+] [-] dude_abides|13 years ago|reply
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.
[+] [-] w1ntermute|13 years ago|reply
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.
[+] [-] eshvk|13 years ago|reply
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?)
[+] [-] rhizome|13 years ago|reply
[+] [-] praptak|13 years ago|reply
And also: a good preparation actually increases your real skill baseline.
[+] [-] jimfl|13 years ago|reply
[+] [-] agrona|13 years ago|reply
[+] [-] charlieflowers|13 years ago|reply
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.
[+] [-] jacalata|13 years ago|reply
(Possibly the article title could have been tweaked to avoid some of the piling-on: How I hacked my interview preparation process?).
[+] [-] incision|13 years ago|reply
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.
[+] [-] intended|13 years ago|reply
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.
[+] [-] ender7|13 years ago|reply
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.
[+] [-] dinkumthinkum|13 years ago|reply
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.
[+] [-] ianstallings|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] adnam|13 years ago|reply
[+] [-] mkenyon|13 years ago|reply
[+] [-] rizzom5000|13 years ago|reply
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.
[+] [-] sonabinu|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] angryasian|13 years ago|reply
[+] [-] eshvk|13 years ago|reply
[+] [-] anjc|13 years ago|reply
[+] [-] bstriddy|13 years ago|reply
[deleted]
[+] [-] zigzagzug|13 years ago|reply
[+] [-] taloft|13 years ago|reply
[+] [-] zapfmann|13 years ago|reply
Dream company?
Hope you love working there for ... ever!
[+] [-] rtkwe|13 years ago|reply
[+] [-] tankbot|13 years ago|reply