This question originally appeared on Quora, the best answer to any question. Ask a question, get a great answer. Learn from experts and access insider knowledge. You can follow Quora on Twitter, Facebook, and Google Plus.
Answer by Shine Wang, software engineering intern, 2015:
To get an interview, your résumé has to stand out. This is commonly through interesting side projects, hackathon awards, coding competitions, undergrad research, and so on.
As for interviews, having talked with Googlers who interview candidates for the SWE internship, I gather that they value the following set of criteria:
- Technical competency: Are you able to code? Do you know the standard algorithms/data structures that a regular junior should have learned?
- Googleyness: Are you a nice person? Would you be pleasant to work with? Can you handle stressful situations with grace?
- Communication: Are you fluent in English? Can you express technical ideas succinctly and unambiguously, with examples and proper terminology?
My favorite theory, based on my peers' successful applications/offers, is that companies' hiring criteria differ primarily on two factors: product and culture. Product encompasses two ideas: the company's tech stack, and the company's core product.
Tech stack is straightforward: companies, especially smaller ones, want people fluent in the technologies they use. This is reasonable - the engineers who are interviewing candidates would want code written in languages they are comfortable with, and candidates will eventually write code in the languages they use. If you're interviewing at Google, there's a very good chance you'll be writing C++/Java/Python code, and your interviewer will definitely familiar with at least one of those languages. If you do your interview in Haskell - well, best of luck to you and your interviewer.
Core product is more difficult to judge, and a heuristic may be: to what extent do business decisions drive the product? How "technically demanding" is the product to create? (think MemSQL) A company I worked for believed in business-driven engineering, whereas writing code at Google requires more "engineering maturity". When I wrote MapReduce pipelines, I was surprised by how tricky it is to analyze algorithms that run on multiple machines, and how similar it is to type theory in functional programming. In a nutshell, companies working on technically difficult products generally have higher bars for technical competency (note: nearly all tech products become "technologically interesting" after a certain number of users).
Culture is probably the most difficult factor to evaluate when estimating a company's hiring criteria. Look first at the founders - companies whose founders have engineering backgrounds (e.g. Facebook, Dropbox) almost universally have high demands on technical competency. However, my peers who excel at hackathons (or other projects where UI and other factors weigh comparably to technical complexity) seem to find more success at companies founded by entrepreneurs of a liberal arts or business background - Hootsuite comes to mind.
At the end of the day, tech companies' hiring bars are more similar than different - they're generally looking for talented, adaptive, young engineering minds. However, there remain subtleties that differentiate the qualities that companies are looking for, stemming from their products and cultures. Google, specifically, places heavier emphasis on mastery of general-purpose programming languages and algorithmic skill.
How does Google select its interns? What are the criteria? originally appeared on Quora. More questions on Quora: