Today I got accepted for an Internship at Google this summer! This is so crazy.
I haven’t yet come back to my senses. There’s so much I want to write regarding this, mostly about the process so far, which started on September 12th (exactly 5 months ago!), specifically because there’s some people in my university afraid or unsure of applying (even if university recruiters try to motivate people to do so), so I believe a personal account of my process so far (regarding applying, the interviews, process structure, etc) would be really useful and motivating for some people I know (and perhaps some others I don’t, which still may find this interesting).
Of course, I have survivorship bias, since this is viewed from the eyes of someone who ‘made it through the process’, so there’s no guarantee that following the very same steps will yield the very same results, as I believe there’s always a substantial part of luck involved.
Some people keep believing that their success is completely at their hands, or that because there’s plenty of focus on stories about people who succeeded, it may look easier, but its because almost nobody hears or tells the stories of failure, which can even come to really capable people but that bad timing/place/luck caused them to fail, or not even fail but simply take a different path.
So the purpose of this is just being an account of my story, and that you should look into others’ stories, even if those are stories of success or failure, to build your own opinion, and to set on your own personal development path looking to achieve what you want to.
Also there are details I can’t talk about (like specific interview questions or other concrete details of the process), so I’ll try explaining it best as possible.
- The Visit From The Googlers, August 20th
- Sending the Resumé, September 11th ~ 12th
- The Technical Interviews, September 29th
- The Host Matching Process, November to January
- I Am Here
- The Experience
- Looking Back (From 2020)
|The Googlers||The Audience|
(The leftmost guy, Andrés, is an engineer at Google, graduated from my university! Also, all three of them and an unseen fourth are Colombians).
Every year some Googlers (engineers and university recruiters) do a tour across several universities from many countries to do talks to students about the prospect of doing an internship, or better yet, working full time for them. The engineers talk mostly about the work environment and the cool things (a.k.a perks) they have, the incredible projects they work on, and how working on the products of such a critical company requires technical skill and dedication and can lead to very rewarding and fulfilling work experiences.
Then, university recruiters deal with questions more related to the process of applying, resumé advice, etc, but it doesn’t mean that you can’t apply if Google doesn’t visit your university! Of course you can!
Then, to engage students into asking questions to the Googlers, or answering tricky questions from them regarding Google trivia or things said previously in their presentation (for those really paying attention), they gave things like key chains, t-shirts, pens, etc (and in past years, lovely things like this). But this year, there was an even better prize, a Chromecast, just a single one, and I won it! It wasn’t related to asking or answering questions, but a small challenge they posed, one really related to their actual interviewing process.
They gave everyone interested in participating a white, empty flashcard, and a pen. Then, they said ‘In that flashcard, write a program that will read several lines from the standard input, and will output them in the same order, but skipping repetitions’ then whenever people finished, they should hand over the card and wait for the winner to be announced. At first it seemed easy, but there was a time constraint (and also other people running for it), and it had to be done by memory, no way to use an IDE for syntax checking. I tried to keep it cool but nonetheless felt pressured, because hey, it was a Chromecast! Still, I gave them the flashcard (first!) but the winner wasn’t who did it first, but an engineer checked the code, and if it was valid, it would be inserted into a bag, so that someone in the end would pick a flashcard from it randomly, and that would be the winner. They asked someone else to draw the flashcard (the lady at my left, Andrés’ mom) and it was mine!
|What Makes Google What It Is||Andres’ Mom, Me, and Miguel|
The lesson about this small contest, is that it really relates to how their interviews are. The interview problems are harder of course, but basically they consist of questions that are not that hard themselves, but that involves knowledge of data structures and algorithms, that you are under a time constraint, and that you don’t have access to an IDE for syntax checking (in the past I think people used to write code in a sheet of paper or a whiteboard via videoconference, but now you write it in Google Docs for the interviewer to see it in real time).
I was myself amongst the people afraid of applying, doubting of my own skills and not really sure if I would make the cut, but Andrés told me that I should really give it a try, that it wasn’t that hard to make it through, and that applying is better than not even trying, and that was true, because not doing so results in a 0% chance of getting in, whereas trying would increase that chance a bit, heh.
I followed their resumé building guidelines, and submitted it on the 11th. By the next day, I got contacted by a recruiter asking me to arrange dates for the technical interviews.
I’ve heard many people don’t even make it past this first screening and are not even called for interviews, so your resumé has to make a good first impression. My advice at this point is to make a resumé no longer than 1 page, and list the most substantial stuff, because I bet they don’t take longer than 20 seconds rapidly skimming through it due to the high volume of candidate submissions they are getting.
Also, not everything is awards, contests, and grades. Sure those may help, but they told us they look for hands-on experience, like having been a teacher/research assistant (teaching others is very hard but very rewarding), having contributed to projects (open source, personal projects, etc), having worked with a diverse set of tools/languages (not being a one-trick pony), and the extracurricular courses you’ve taken (which show a huge desire for learning outside the classroom).
I indicated 5 potential days for the technical interviews, and they choose one of them, to assign both interviews to that day, almost back to back, with a bit of time in between.
My interviews were both scheduled for September 29th. The structure of each one was pretty straightforward, it was with an engineer from any area, who introduced itself, mentioned its area of work and perhaps other bits about its experience there (it makes things a bit chattier, like 5 minutes of lets get to know each other!) and then the interview starts.
They give you a problem, in a Google Docs file, and you’ll write code in there for both to see in real time. No access to documentation. No code completion. No syntax highlighting! You talk via their Hangouts platform, or in a regular Cellphone/Phone call. I STRONGLY suggest talking via Hangouts, my firsthand experience is that internet calls are a thousand times better (regarding quality and stability) than phone calls, specially if its an international call.
Also, a very important advice: don’t rush to start writing code right away in the document, if there’s something not quite clear from the problem statement, or there are things you think could be implied from it but are not sure whether to consider that implication true or not, ask first, don’t make assumptions. Also try to make it chatty, its not like on the other end there’s a teacher just evaluating you, its a person that may give you hints (though try to not rely much on that) and also engage in thoughtful conversations about the approach taken for a given problem, because they want to see how’s it like to work with you.
I then waited for the result to come, as the recruiter said, it would take 1 to 2 weeks, but it came the next day! I guess that I applied very early, when there weren’t that much people taking interviews. This is then another advice, apply as early as you can, so you get results faster, and if it doesn’t goes through, you get to evaluate other options elsewhere while there is still time.
You can actually get called for a third technical interview, a friend had to do it, but I’m not sure what are the reasons for this to happen. Is it that you did really good on an interview, but not on the other, but still they want to give you the chance to redeem yourself? Who knows.
But still, I consider this part of the process has much to improve. At least they’ve come a long way from past times when they were very strict with GPAs and brain teasers, but there’s still parts of it where I believe they can do better. Surely technical interviews with data structures and algorithms questions are important, but this is just an aspect of what constitutes a good Computer Scientist or Software Engineer.
I had passed the Technical Interviews at the end of September, but was told that the next stage would start for everyone in November, so no updates during October. In November, the Host Matching process started. It is a process in which you have to fill a more detailed form regarding your experience, things you’ve worked on, things you want to work on, like languages, products, technologies, etc. For example I had no previous experience with the Go programming language, but being a language created at Google and using extensively in the development of Distributed Systems, I wrote that I wanted to learn about it, and surprisingly, my internship ended up being precisely working in Go! They did not care that I had no experience with it previously, all they wanted was the motivation to learn and apply what you learn.
After the form is filled, there’s a period of about two months called Host Matching, in which potential Hosts (team leaders that want to host an intern in their team) check the pool of forms, looking for a profile that interests them for their particular project. Once a Host deems that you are a potential candidate for their team, an interview will be arranged. This interview does not follow a rigid process, it’s really up to the host what will be discussed in it. It can be talking about high level design of a system they are working on, or just speaking about the project and asking you if you are interested in it. If the Host decides to move forward, and you do so as well, then it’s a match! The offer comes after that. Congratulations!
Looking back at my experience of not one but two internships at Google, I have so much great memories, and learned a lot of things. In the end, I didn’t make it past the conversion process (to become a full-time employee), which was a sort of Kafka-esque process for many issues, but in the end I don’t regret a single moment of my experiences there.
Many people down after being not making it past at any part of the process, be it the technical interviews, the host matching phase, the host interview phase, or even the conversion after having done the interships. Many even question their self worth, and let me tell them, Google may be a great company but there’s so much more to life and work than it.
It is definitely the experience of a lifetime, but even after Google, I’ve kept having more experiences of a lifetime, and I’m thankful for the people I met and the doors that were opened after being there :-)