How to get a job at Google, interview questions & process
dondodge.typepad.com
dondodge.typepad.com
I'm sure the screening process filters out duds but it's bound to generate a lot of false negatives as well. People that would otherwise be a perfect fit but who get fed up with the interminable interviewing or simply don't do well under that kind of stress (for me it was both).
Or maybe they care more about IQ and the sort of interview you got is better at estimating IQ.
They understand that their process generates false negatives but they don't want any "crud."
But quizzing on random trivia is irrelevant to the process of eliminating crud. It's quite likely that a cruddy performer will be able to rattle off all known sorting algorithms or all the option flags for GNU grep -- that has absolutely no bearing on true intelligence or any of the other qualities that Google professes to be interested in.
Having some insider's knowledge of Google: the process does not appear to be working. There is a lot of crud in there now, and the crud only seems intent on hiring more crud. Lots of power struggles and posturing; less and less innovative thinking.
This is not just flags to give to a process to make it do something, this is system internals. When I mentioned that I knew FreeBSD fairly well I was asked questions specifically about UFS and the likes.
I never did get asked about flags to grep and other UNIX tools.
Precisely what I mean by unix trivia. What's the difference between /dev/mem and /dev/kmem? I think it's memory vs kernel reserved memory, but in my 16 years as a unix admin I have never once needed to know that. If I did, I'd go look it up. That is why I consider those questions trivial: they're not fundamental, although you can make them sound like they must be.
They've also said that their high false negative rate is why they clear out their records every couple of years. If you got rejected a couple years ago you can apply again and they won't be looking at your previous attempt's performance.
It kind of goes against Google's entire corporate culture to ever delete information like this. Sometimes I wondered if their interview process isn't designed more as a data mining process to find out what interesting things technology leaders are working on.
What Google should do if they want to hire really good candidates is to go with a contract to hire approach. Find good candidates, do one phone interview and a second in-person interview in the space of a few days (not 4 or 5, stretched out over months). If they pass your initial 2 interviews, hire them as a 6 month contractor.
See how much they accomplish in 6 months. If they are contributing and integrating effectively, hire them full time. If not, just wish them the best and don't renew their contract.
This is the way it works in most effective large companies. The cream that rises to the top gets offered a full time job within a 6 month to 2 year timeframe. My current job is like that. I've worked there for 4 years and started as a contractor. It became so expensive to pay my hourly rate that they were begging me to become full time after a while. I was doing a valuable job for them and was very effective at it, so I got the full time offer.
One point that no one seems to consider is that frustrating interview processes are a big contributor to smaller applicant pools; that is, a would-be good employee has applied a couple places, been filtered out by false negatives, and is thus disincentivized from even continuing to look for a better programming job.
Personally, I don't like my current job but am growing frustrated with job hunting. I'm very close to just looking for a bartending job to go along with the part-time valet work that I picked up between jobs, and then maybe doing hobby programming in my spare time for pleasure and profit. I'm serious here: ridiculous interview processes are making the quality of the programmer pool worse by nudging programmers out of it altogether.
Why is it so unreasonable to bring people in on an intern-like trial basis?
We do that, in addition to an interview process biased towards false negatives. We still find it expensive to make hiring mistakes, enough that we are still circumspect about candidates.
Not only does it take a lot to build up someone new, it's emotionally costly to tell them at the end of the evaluation period that they didn't make the grade -- and still give them full support and a real chance the whole way, in case they can turn it around. It does happen; sometimes it just takes time for ambient culture values and priorities to sink in before people "get" what's important to succeed.
It's much harder to do this trial period with option to buy, than for interns who are going back to school, where the expectations and time frame are clear. It also seems that the most capable candidates aren't as interested in being hired on a trial basis, since they have other options willing to commit more fully to them.
These are a few reasons it doesn't work as well as you might hope.
(* note, not talking about google here)
As for why not to try people before you hire them, a lot of experienced people already have jobs. They aren't going to want to accept a "maybe yes, maybe no" position without a really strong incentive.
That said, a number of companies do have policies of liking to hire contractors, then make some of them permanent. This kind of works. But the best contractors they'll find generally are contractors from choice, and so aren't likely to want to make the transition.
I'd rather have the flexibility to move anywhere, the stimulation of constantly meeting new people, and some leftover desire for personal projects when I get home than to have a programming job I don't like.
Our interview process mostly consists of asking you questions you should know the answer to. If your answers make sense and you seem pleasant, welcome to the team. Oh, did I mention you'll probably make twice as much here than at Google?
Incidentally, more people want to work at Google than want to work at Bank of America, even though there is plenty of interesting code to write at the Bank, and plenty of boring paperwork to do at Google. It doesn't make sense to me.
I mostly use Haskell and Perl. The rest of the department is mostly Perl. Sometimes I do C. Other groups are Python-heavy. There is a big Java and C# presence, and of course a lot of people that think C++ is the only real programming language.
There is some initiative to standardize on C++ and Python, but I doubt that is ever actually going to happen.
If you were to get 100 applicants, and you were only interested in hiring the top 5% (5 people), and 3 of the good people decided to accept decent jobs they could get without giving blood samples and their first born, and 20 of the less capable people decided not to bother (Incompetents don't know they are in competent and have less choices), then now you have 2 good people out of 77.
Now what if one of those two is a false negative?
Google is attractive enough that good people go through all the trouble anyway, but is this always true? Since we are able to fire people easily in this country, is a bad hire really so ruinous?
I don't actually know the answer to the question, but I am skeptical of your statement. Maybe the assumptions in my numbers are wrong (they almost certainly are), but what are the real numbers?
I'm sure they knowingly turn away bright & competent engineers simply due to the large size of the applicant pool.
Smaller companies would be wise to heed your advise though.
Pressure is an artifact of the interview process that is controlled primarily by the attitudes of the interviewer and interviewee regardless the subject matter.
External references are useful for things you don't know cold. For something basic and fundamental to your job (eg. basic graph traversals, the suitability of a hash or a balanced BST to some lookup task, etc), you shouldn't need them; for something more arcane which is accidental rather than essential to your task, or something relatively advanced (eg. specifics of tries for incremental string operations), a competent interviewer will help you out and supply some information so that he can evaluate your ability to reason, design and code.
None of these things have any bearing on whether or not it makes sense for Google to focus on knowledge of the fundamentals of computer science and systems programming in their hiring interviews.
How many people actually solve problems in their day to day jobs without every looking anything up online? Or at least checking to make sure they are correct. Just having a syntax highlighting editor is light years ahead of a white board and dry erase marker.
edit: Sorry, my sarcasm detector doesn't work. I think we're agreeing.
Yep. Sorry if my sarcasm broadcaster had a weak signal
I would think the senior SRE engineers know enough about the code base to poke around and make suggestions ("found a bug in module.py at line XYZ that causes bad performance when thousands of users hit it"), but I got the impression that most of their top developers probably would be bored in SRE.
The thing that is ironic is that most of the people interviewing me were not in SRE, but were pure developers. How many companies do you know that let the developers interview sysadmins? I had guys asking me CompSci questions I hadn't heard since college. If the tables were turned, do you think I'd be asking a prospective developer a question about how to configure DRBD replication and heartbeat from one Linux server to another? Even though some devs might know these things from hobby-like experimentation in their free time, they are not going to be doing it on a day to day basis.
It just strikes me as a very broken interviewing system when you have developers interviewing sysadmins.
SWE-SREs have to pass SWE interviews. I work down the hall from Tim. Nobody keeps track of who came in through which side (SA or SWE), but some of the SREs I work with wrote large parts of the services they support.
Sounds like your recruiter messed up.
(Answer: a lot.)
The software engineering SRE's work on products to make sure they are ready to scale or if something fails to fix the point of failure. They work alongside the product development teams to make sure the product is stable in production.
The two positions require two different skill-sets (I was interviewed for both sides of SRE). One requires very much computer science, data structures, programming languages, and all of those, the other sysadmin requires more knowledge about Linux, its internals, and the command line interface.
The Unix trivia was not nearly as bad, that was easy as I had done a lot of reading on it, however some of the data structures I was asked about I had never learned in school and had just read about on Wikipedia so I didn't really understand them well enough.
The second interviewer was absolutely fantastic, and was genuinely interested in me as a person, had checked out my resume and looked at some of the previous projects I had done (Near Space balloon launches were discussed). I felt much more at ease, but I did seem to have somehow mixed many of the different programming languages I know (C++, C, Python, Java, F#, Scheme) thus my code was less than clean.
Ultimately after 5 different phone interviews I was unfortunately told that I was not a fit, that they would keep my resume on file and that I could try for another position when I had gained some more professional experience.
The Google interview did help me get through many other interviews I had the pleasure of going to. I was less likely to be caught off guard, especially since it was my first MAJOR interview with an extremely large company. I do wish that Google had not been my first interview as maybe then I would have gotten further into the hiring process and maybe just maybe I would have been working at Google.
That is an awful lot of maybes and it is not worth brooding on what could have been. I am extremely happy with my current job, I love what I do and the people I work with at a small new startup. I feel with a small company I can make more of a difference.
I could see maybe wanting to put in a year to learn the google stack, or if you have a particular area you've been researching and they will pay you to do exactly what you want, but beyond that... there are lots of companies offering better salaries and options with serious value, with similar challenges, that are going places. When you have people leaving despite half million dollar retention offers... why would you jump on that ship? Don't get me wrong - I think Google is fundamentally a good company. I just don't get why people aspire to work there, given the other options available.
Is it a mensa thing, with a brand recognizable outside the valley? Like you pass the interview, you're in the IQ club, stamp of approval, all that?
Genuinely curious. What companies are you talking about?
Do you have citations for this?
And specifically http://techcrunch.com/2010/09/01/google-making-extraordinary...
More generally, this is common knowledge around the valley.
And it is "common knowledge" that Google has "very high churn and dissatisfaction rates"? Is that because Techcrunch or Valleywag says so? I think there is a large vocal minority of (in most cases) non-Google employees who are so quick to talk about how Google is a terrible place to work and everybody hates it. And internally at Google, there are a bunch of happy employees who just laugh at all the made up stories about how they are supposed to feel.
Look, people are going to leave Google. That is what is going to happen when you have a bunch of really young and talented engineers working in a big company, but don't think this is because Google is some terrible place to work. I'll bet the satisfaction rates of Google employees is among the highest of any large company.
As to 'common knowledge,' it is common knowledge outside of google that tons of people are leaving because every week someone new shows up from google at these companies. Enough that people notice, kinda like Yahoo. Google is melting.
The other oft cited metric is the headcount freeze, while there is still aggressive hiring. Put that together... turnover.
If you like it, I don't think Google is a terrible place to work. The opposite is true I'm sure. You're getting a disk golf course that we're not allowed to use ( bastards ;) ). But for whatever reason, dissatisfaction and turnover are high. This could simply be attributed to being all growds up.
I do know the numbers, though I can't share them, and Google's turnover is ridiculously low. Much lower than I would expect from any company in Silicon Valley, which has a notoriously fluid job market.
It's also false that there's a headcount freeze: the total number of employees at Google has increased significantly over the past year.
I've noticed that if I'm not learning I'm not happy and its much easier to learn with smart people.
Its generally known that Google hires smart people.
Seriously though, all the (limited sample) of google employees I know seem to be happy with it. I'm sure I'd rather work for Google in 2000 than Google in 2010, but it's still a much better place to work than a lot of other places.
Even the marketdroids.
but you'd rather go work for zynga making dumb games?
To each his own I guess.
http://news.ycombinator.com/item?id=1130984
http://news.ycombinator.com/item?id=784479
http://news.ycombinator.com/item?id=374722
http://news.ycombinator.com/item?id=145035
http://news.ycombinator.com/item?id=1520323
http://news.ycombinator.com/item?id=135666
(And for future reference, for when I inevitably re-post this in some future Google interview thread and forget to include this post itself in the list: http://news.ycombinator.com/item?id=1690792)
Interesting, I've always heard Google doesn't pay very well. Similar to game companies, they can take advantage of the fact people really want to work there and know candidates will accept lower pay because of it. I've heard that from several Google employees past and present. Perhaps things have changed?
I won't discuss my personal story as I'm not anonymous here.
For my friend everything was very sweet until he mentioned that taking the job would require his wife to drop hers resulting in an income loss and he was concerned about this. Maybe he wasn't very subtle about it, but the minute he told that to the recruiter everything went black (got a "thank you mail" the next morning).
That being said the recruitment experience was very nice and I got a lot of good interview questions out of it.
I know that the reason I wanted to work at Google was to learn how to solve problems involving scale and massive parallelism. There really isn't anywhere else that can teach you that stuff as well.
I subsequently read Steve Yegge's tips on getting hired there:
http://steve-yegge.blogspot.com/2008/03/get-that-job-at-goog...
His post made me feel simultaneously better (he also failed in his first attempt) and stupid (how could I think I would breeze through the Google hiring process without first boning up on CS theory?)
The interview questions would have been better suited for me 12 years ago when I was a new graduate and sorting algorithms and low-level file structures were fresher for me.
I don't blame Google, though. These are important concepts for them and it's my fault I didn't freshen my knowledge (or keep those skills honed over the years).
The current article supports (1) and (2), disagrees with (3), and supplies no data about (4).
For a talented engineer, what's the expected payoff of actually going through this whole interview process? If there's only an 0.5% chance of getting hired, it seems like a poor investment of time. If, on the other hand, Google is throwing out 98% of applicants as completely unqualified (which is typical in the industry), then the expected value of applying might be high enough to be worth the effort, provided you're in the remaining 2%.
Also, what's the upside of actually working for Google, compared to a startup? Do they give out enough Founders' Awards to make their base salaries irrelevant to people who would otherwise be launching successful products at a smaller company?
Also, your payoff/cost calculation is off since they choose whether to invite your back for the second round. I was told that because I got called back, the odds of me getting an offer were much, much higher. So if you get flushed early, you only blew half a day. If you end up having to spend two half-days, then the chances you'll get an offer are quite high.
I've heard some anecdotal support for (3), but they also seem to have very generous 401k matching. Plus, getting good food for free every day has to be worth something too.
Also, what's the upside of actually working for Google, compared to a startup?
One can generally work on different classes of problems at an established company with enormous problems and tons of really smart people like Google. Most startups aren't dealing with data anywhere close to the scale that Google is, and there is no startup in the world that can give you access to the internal talent pool Google has assembled.
If their interviewing process is anything like the ones I've helped organize, at least 49 out of 50 applicants could be dismissed out-of-hand, either because they didn't read the position description, because they can't write fluently in their native language, or because they can't write simple programs. So taking that as an estimate, Google is accepting perhaps 5–25% of "serious" applicants.
I think the large fraction of non-serious applications is caused by a survivor bias—the qualified candidates get hired quickly, but the unqualified ones keep applying to hundreds of jobs.
And you make a good point about interesting problems—Google certainly works on some neat stuff at an impressive scale.
And yeah, applying for a job just about anywhere is rather tedious. But all the recruiter job-type/schedule coordination probably took less than two hours spread over two weeks. It didn't seem all that burdensome. Ce la vie.
This seems like a highly speculative question.
What percentage of potential employees that would have begun a startup would be "successful"? How do you even quantify this?
What's different about "working for Google compared to a startup" versus working for any other company rather than being your own boss? Why do you ask about Google only?
I suppose they keep setting impossibler and impossibler goals...
From friends and colleagues who interviewed and/or are working at Google..I found out that the interview for college hires can become very long. One of my friends took 6 months to get a job. If this is still happening at some part of Google, they must improve this process. People don't usually have time to wait 6 months to know whether they got a job or not.
It is not 100% accurate and it can take months to get through the process, but if we do it right we will be spending years together. So, it is worth the investment in time.
Don
However, the real problem is the amount of bias they introduce into the process. Few Google products have a lot of polish and they really don't get the social networking side of the web. Conceder how much effort it would take for a standalone version of gmail that could easily replace outlook everywhere and make Google a ridicules amount of money.
Google should be doing better than that -- much better.
I think there is a real danger here of extrapolating the experiences of one or a few people to a statement on hundreds or thousands of interviews/interviewers. At the rate Google is interviewing candidates it should be expected that some interviewers are not good interviewers.
After doing a lot of research on the subject (to prepare for my own experience) I can say with some certainty that based on reports from people that actually went through the experience, interviewers asking for brainteasers or "random knowledge" are in the clear minority.
(At least for software engineering interviewing. The questions for product managers seem to be a whole other beast.)
In a large code base it is important to have a consistent style. There are a million reasonable style choices. And knowing a tremendous amount about the C programming language tells us squat about whether you know what style choices Google has settled on.
I don't think Google's policy on this is unreasonable. (Disclaimer. I work at Google.)
And you may still fail eventually.
Starting your own company (or joining a very early stage startup) means you'll be spending only a small proportion of your time coding: if all you do is as a founder is write code, you're essentially guaranteed to fail. Certain kinds of problems (core web search algorithms in post-Google era being the obvious one) are also, traditionally, are much more difficult for small startups to tackle than they are for big companies: certainly if you're passionate about these kinds of problems, than startups are generally off the table (in this case, your opportunity cost is much higher than money).
Obviously, it's still extremely rewarding for many people (it's something I'm still interested in doing at one point or another), but "start my own company" vs. "work at a great technology company" is neither clear cut in favour of the former nor mutually exclusive (witness "Xoogler" startups, Paypal Mafia, etc...)
http://googleresearch.blogspot.com/2006/03/hiring-lake-wobeg...
and the argument is that you should try to "only hire candidates who are above the mean of your current employees", rather than just hire people better than the worst you have.
I find the part where he talks about hiring for project vs. hiring for the company a bit more interesting.
"This model seems to assume that people don't change, or that they perform in an interview and hiring process in the exact same way that they will perform on an actual team with a variety of personalities and any kind of manager."