Published using Google Docs
Joining Google (Research) as an Undergrad
Updated automatically every 5 minutes

Joining Google (Research) as an Undergrad

TL;DR

Objective

Intro

How to Optimize Your Chances

Hiring at Google

A Tangent on Recruiters

Case Study

What did I do right?

The Role of Luck

The Backup Plan

Is Research the Right Thing For You?

Research At Google

A Tangent on Promotions

A Tangent on Research Scientists

Joining Research vs Doing Research

Conclusion

Appendix: How to do the Things that will Optimize Your Chances

How to do Research in my University?

How do I publish as an Undergrad?

What’s hot right now in Research?


TL;DR

Objective

To help eager/confident/hungry undergrad students who are not interested in further schooling fulfill their dreams by joining a research team at Google, and to provide some framing on how to think about hiring (both at Google Research and in general). This article is not about how to pass conversion interviews or about giving links to technical resources or anything like that. It’s about how to frame your next year or so to maximize your odds of joining a research team, or getting hired more generally.

Intro

If you’re reading this doc, presumably you are interested in joining Google Research without having to go through grad school.  Congrats! This hopefully means that you are excited and curious about the world! Unfortunately, if you’re like me and also aren't built for school, the path to research may not be super clear. Google Research is great, but like many research arms of companies and universities there is a clear bias towards PhDs. It’s not the end of the world -- this doc will try and help lay out some of what helped me land a job at Google Research out of undergrad.

I want to open with two things:

With that out of the way…

How to Optimize Your Chances

Hiring at Google

I’ve been here three years now and can say a bit about how hiring works, especially in research.

The most valuable resource at Google isn’t chips, hardware, compute, or data. It’s headcount. Hiring managers need it and hoard it, and are very careful about where to spend it. If there is a single headcount open and you can fill it with a PhD or an undergrad, all else being equal you’ll pick the PhD every time -- the PhD has, at minimum, 5 more years experience. This means that if you want to be hired to a research team, you have to be able to explain why you are worth more than a PhD.

Note that because headcount is rare, hiring managers are risk averse. They will much rather take someone who they know over someone they don’t. This can be exploited. An undergrad who has a great internship can be more valuable than a PhD who has never worked at Google, in the eyes of a hiring manager.

So we can kinda see a path forward. The best way to get hired is to have expertise in something that a specific hiring manager needs, and for that hiring manager to know you and your work. If you can show that you are filling an important gap on a hiring manager’s team, you’ll get that manager on your side. And if you have a hiring manager on your side who has available headcount, everything else is more or less a formality (even if you don’t do great on your tech interviews) (but also, don’t tank your tech interviews).

A Tangent on Recruiters

Recruiters know that undergrads are rarely hired into research, and they are right to recommend against trying. By default, researchers don’t even see undergrads in the hiring tools -- they have to explicitly go looking for undergrads if they want an undergrad intern. It’s important to consider whether or not research is something you really want to do. If it is, then don’t be afraid to be persistent with your recruiters.

Case Study

Because I love talking about myself, I’m going to open with a case study: how I ended up at Google Research.

I have a reasonably long background in research, but the relevant stuff starts in Freshman year of undergrad. I joined a lab at my University in 2015 -- turns out, a lot of professors are happy to take free labor undergrads. That turned out to be a really lucky decision, because it meant I got to sink my teeth into what actual research is like.

Fast forward a bit, I first joined Google as an intern in 2016, after Sophomore year of undergrad. I had a great summer -- learned a lot, but found out that working on maintaining large production systems wasn’t for me. During that summer I reached out to a bunch of folks working in research already. I asked each of them what they were up to and how I could maximize my odds of joining them the next summer; basically all of them told me to read up on machine learning and start writing some code on my own time.

So I did that. I had always been pretty interested in brain computer interfaces and neural circuitry. After my internship ended I looked into ML fields that were related to neural circuitry, and stumbled on deep learning (neural networks). Tensorflow came out in late 2015, and I started working with it in late 2016. By the time 2017 rolled around and I had signed up for another Google internship, I was familiar enough with Tensorflow, and had some code in Github to prove it. For my second internship, I begged my recruiter to let me join a research team. After a lot of ‘it’s really hard for undergrads to get placed on research’ etc etc, my recruiter bounced my resume up the ladder and it eventually got put in front of a research team who took a chance on me. They hired me for frontend design in javascript. Whoops.

I got to my second internship, and on the first day I told my host I knew how to do tensorflow and wouldn’t he like to do something with that instead? Turns out he did. So in addition to whatever frontend design I was doing, I ended up getting to write a paper on graph neural networks.

When I went for conversion, my recruiter again pointed out that it was really hard for undergrads to get put on research. But this time, I already knew the folks I wanted to work with, and more importantly they knew me. The folks I worked with vouched for me to their hiring manager (thank you Bryan I am forever in your debt), and I joined Google full time in 2018 in Research.

What did I do right?

Based on the above, we can see that there are some things that ended up really helping me.

  1. I was involved in research early outside of Google. This gave me some credibility -- I knew what publishing was about, I had some familiarity with hard problems in lab settings. It made it safer to spend headcount on me.
  2. I had two Google internships, the second one in a research org. This let me meet a ton of other people who were already in research. They got to know me and my work, which made me a known quantity to them. This in turn meant they could figure out how much my headcount would be worth.
  3. I started using tensorflow right at the time when it was becoming a must-know tool in Google Research. When I joined for my second internship, I probably was more familiar with tensorflow than most other Googlers at that time. This gave me expertise, which made me valuable.
  4. I was persistent. I asked my recruiter over thirty times to be placed in research, once a week more or less, for my second internship. I did that again for my conversion. I think I made it clear that I was basically only going to accept a research role, which resulted in the recruiting apparatus working for me instead of trying to put me in a non-research org (recruiters want to make sure you get placed somewhere, so if they think you’re going to leave if you don’t get <demand> they’ll try and fulfill <demand>).

Thinking in this vein, there are a bunch of other things I could have done that would have also been effective. For example:

  1. Implementing code from papers of the people you want to work with. We hired interns who basically started out by implementing the latest tensorflow models on GitHub. This shows that you have familiarity with the domain, and is flattering to the people you want to work with (and it gives them more citations!).
  2. Published externally. Even though I was doing research outside of Google at the time, I didn’t ever try to publish. I should have, even if it was just at small workshops. Those papers follow you forever, acting as external validation that you know what you’re talking about.
  3. Found research orgs that are more willing to take undergrads. In my experience, Descartes and Machine Perception are much more willing to take undergrad researchers than Robotics.

There’s definitely more that I’m missing. The overarching driving goal in each of these examples: you need to justify your own headcount. Anything that makes you a safer bet → better chance of being hired.

And it turns out that all of this applies generally! All of the things I listed above will help you in just about any job you might ever look for.

The Role of Luck

I didn’t plan to do any of the above, they just kinda happened. I got really lucky in a lot of ways. My undergrad lab head let me join his lab; I happened to pick up tensorflow at just the right time when it was becoming useful; a research scientist agreed to take me on as an intern; a different research scientist agreed to vouch for me. Most of the time it probably won’t work out, and that’s ok! There’s always...

The Backup Plan

A lot of folks who want to join research won’t end up doing so, just because of limited headcount and space. That’s fine. Another common path to joining research at Google is to join full time on a team that has less restricted headcount (Ads, Search, etc.). Spend that time working with a research team, either doing 20% work or collaborating on some kind of project. Once you get promoted after a year or two, see if there is any headcount available with the research teams you worked with and try to join then.

Is Research the Right Thing For You?

Research At Google

All of the above was about how to maximize your chances of joining Google Research, but going into Research may not be the best choice. There are inherent tradeoffs involved in going down this path.

Research At Google means a lot of things. There are research teams that are basically just two people doing intense theoretical research on whiteboards all day. There are research teams that are functionally indistinguishable from product teams, maintaining massive systems that support {Ads, Search, whatever}. There are research teams that never publish, because they are more like startup proof-of-concept teams to see if a new product idea is doable. And, similarly, there are teams that are all research scientists, and teams that are all SWEs, and teams that are some mixture. The spectrum is wide.

But these different teams all share something in common: they are fundamentally uncertain. Research is about risk, and about failure. A lot of times you will try things that won’t work. If you’re unlucky, some things may never work. And there can be unexpected stresses in research that come out of being unable to show meaningful progress -- unfortunately, a thousand failures is not the same as a single success. This can make the path to promotion very hard for a software engineer.

A Tangent on Promotions

Generally speaking, an undergrad in research is going to be hired as an L3 SWE. For promotion, SWEs are judged on impact, which can roughly be boiled down to ‘how much $ did this person make the company’. This can sound cynical/unfortunate, but IMO it’s reasonable and inevitable. When promotion time rolls around, the people who are advocating for your promotion (your manager, your skip manager) need to have a concrete reason why you should be promoted. You can write awesome code and be the best person to work with, but someone else’s manager/skip manager may think their person writes awesome code and is the best person to work with. The one thing people can’t argue against is numbers -- ‘X% faster’, ‘Y fewer lines of code’, and most importantly, ‘$Z earned’.  

To spell it out: getting impact on research is hard. Research teams do research -- publishing papers, solving hard problems, and trying to surface those results in product teams. Launching a feature on a research team generally requires going through some other team to show impact. If you were on Ads/Search/etc, you could just launch on your own team and call it a day. If you are on a team that is trying to explore a brand new product, you might not launch anything for > 2 years! This means Research time horizons for showing the value of your work are longer, and you’re less likely to have something at the end of all the work you did. If you want to get promoted fast, Research is the wrong place for it.

All in all, if you want to join Research, it will help a lot if you know what you want going in (experiences like joining labs as an undergrad will help here). This way you can seek out the teams that fit your interests and your career paths, and you can ask your management chain to work on getting you whatever you need.

A Tangent on Research Scientists

I’ve spoken a lot about SWEs in this document, but there is another ladder worth mentioning: the Research Scientist (RS) ladder. The core difference between RS and SWE is that the RS is evaluated in part on their publication contributions. The RS ladder starts at L4. It is virtually unheard of for an undergraduate right out of college to start at L4, and even more rare to start as an RS. If you really want to be an RS, go get a PhD.

Joining Research vs Doing Research

It turns out that you can actually do research without being in research. The implication of what I said above is that Research folks are constantly working with product folks on launching their research ideas. In other words, you can be in a product team and still be involved in research work! For some people this can be the best of both worlds.

Conclusion

Hopefully this was a useful view into how to think about hiring at Google, and more specifically hiring as an undergraduate in research. If you have any questions, feel free to reach out to me. Good luck to all those undergrad researchers out there!

-- Amol

Appendix: How to do the Things that will Optimize Your Chances

How to do Research in my University?

In most cases, cold emailing professors you'd be interested in working with and mentioning the papers that you've read by them that you found interesting can land you in their lab. Taking a professor's upper-level / graduate-level seminar class can also be a way into their lab. Some schools have dedicated programs during the school year for undergraduate research, and some allow you to count independent research / study during the school year for credit. Some also have programs in the summer that are worth exploring. If you'd like to conduct research at a different university, a REU is a tailored summer experience that you can look around and apply for, depending on the area of research you're interested in (some are quite prestigious).

Also, you should not be afraid to ask to join labs that you think you have no experience in as an undergrad. Many professors will be well aware of what intro CS courses you have likely taken, and that you are not coming in with a lot of background. They can most likely come up with undergrad-friendly project ideas and give you good pointers on what introductory material you should read vs. what introductory material you should skim. The point of joining a lab as an undergrad is to gain experience that you do not already have, after all.

-- Jessica

How do I publish as an Undergrad?

If you are working with a professor, make it clear that publishing is something you would like to aim towards. Sometimes, especially if an undergrad says that they're not going to try for a PhD, the assumption is that publishing is not as important and they might steer you towards just finishing a project rather than writing a conference-ready paper.

Also, ask your professor (or a professor in the field if it's a paper you've written by yourself) for conference venues. They have a more intuitive understanding of where your paper will likely be accepted (e.g., which conferences are safe, which may be a reach, etc.), and can give you good recommendations on how to target your paper.

-- Jessica

What’s hot right now in Research?

It’s almost impossible to figure out what trends/libraries will be exciting/successful/long-term useful before they actually happen. Below I list some previous trends and some future trends, but I think it’s tough to optimize here -- you more or less need to get lucky.

Previous Trends:

Future Trends: