Co-op at Google

Published 2014/06/03

"Thank you for taking the time to interview with our team! We received the feedback from your technical interviews and will be moving forward to the second round of the interview process."

I was speechless. I sat in silence for a full minute digesting the implications of what I had just read. I hadn't planned on applying, but I'd been convinced I had nothing to lose and everything to gain by a close friend who was working there. Alex graciously referred me to the hiring coordinator as he had so many of our other friends. My initial interview went well, but during the follow-up I had difficulty solving the final question, and by the time my friends began receiving rejection letters I had all but lost hope. There was a dim optimistic spark still burning, but the rational side of my mind had begun preparing for the worst and forcing me to focus on other options.

Then I received the email and the realization set in, I was going to be working at Google.

The email

Okay, so I was a little bit excited, that should be fairly obvious by now. The reality was that I hadn't felt I was good enough yet for the job, I had imposter syndrome before I even started. Thankfully I had the support of my family and my amazing friends, who were all far more impressed and excited than I was. In truth I was still very nervous, and I had no idea what to expect.

The astute reader will have noticed that the line from the email says "the second round of the interview process", so I didn't yet have a formal offer in my hands. The second round for an internship was really nothing more than speaking with a host product manager to be sure that I wasn't insane, and that I'd be a good fit for the team. Erturk and I spoke over the phone and both agreed that we'd be happy to work together.

Orientation

Before even arriving to my first day of work, I was put on a plane and shipped off to Mountain View, CA to begin the Google indoctrination. This is the part people who are familiar with The Internship are most likely to ask about. The timing was perfect: I somehow managed to be on one of the last flights out of Canada before the infamous polar vortex hit, an event so instantly infamous it has it's own wikipedia entry.

Orientation is a week long event with a cadre of new hires that taught us about how Google operates as a company, how they manage to maintain their fantastic reputation, and what we could expect from our new jobs. It's also when we were first presented with an idea of just how freaking big everything at Google is.

BIG data

Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it...

That's a quote from Dan Ariely, the author of Predictably Irrational (a great read) poking fun at the culture we've created of overstating our importance as data engineers.

I can definitevely state that this is far from the truth when it comes to Google. At Google, everything is data driven, and backed by massively parallel computation and globally distributed storage space. During orientation, I attended a class where the scale of processing and storage was explained, and once again I was forced into stunned disbelief. It's not that I hadn't expected their resources to be massive, it's that I had no sense that anything so computationally large could even exist.

Truly there are some incredible feats of engineering at work to keep everything maintained.

Learning

The hardest part about my internship was writing code. The second hardest part about it was fitting in.

The programming was interesting because:

  1. I wasn't familiar with C++.
  2. I wasn't familiar with parallel programming.

Combined, those could've added up to a perfect storm of disastrous code were it not for the organization of the internal libraries. Having built so much of their ecosystem from scratch, Google has become well known for Not-Invented-Here-Syndrome. While it allows the libraries to be very clean and specific, it also mean re-learning everything you thought you knew about certain programming standards.

I spent the first few weeks of my term getting to know the internal tool-chain and the way that programs were built and distributed. I saw the value in the way things were run, but I longed for the simplicity and instant feedback of a python REPL.

I worked with the Ads anti-malware team, colloquially known as "Ragnarok", it wasn't far from where my friend Alex had worked before on the Adx team, both in philosophy and distance. Together, my team and I were responsible for ensuring that ads that were published through Google's systems - and thus driving the overwhelming majority of Google's profits - were effectively virus free.

My personal role was to design and build tools that the team could use to make them more effective at sniffing out and shutting down purveyors of malware. One such tool was a data visualization program that operated in parallel through Google's MapReduce software to analyze and reduce the malware logs into a series of graphs and charts that were both informative at a glance, and deeply customizable.

Fitting in

I met some great people during my work term. The other co-ops were friendly, especially Paul and Owen who I met during orientation and worked/lunched with during my time in Kitchener. I met some insanely intelligent people, some great cooks, some eclectics who dressed in pajamas and forwent footwear, and some foosball players that put me to shame.

One day we a group of us were sitting around a lunch table discussing a video game, when someone analogized it to a game of chess. This quickly brought about one of the most confusing discussions I'd ever witnessed concerned with advanced techniques of seasoned chess masters and end-game strategies. It turns out I was in the midst of several intense aficionados.

There's also many hilarious stories in Google lore of employees trying to find information on a subject, only to discover the author is an employee, or of insulting an old UNIX tool on a mailing list, and receiving a reply from the original author. The treasure trove of stories that are hidden away in employee blogs always made for great reading between code reviews.

Fin

If it has not already been made perfectly clear, I had a wonderful time working at Google and am grateful for all that I've learned while working there. Not only did I learn a considerable amount about large-scale programming, but I was able to do so in a great environment (if you have not yet visited the Kitchener office, I would highly recommend you take the next available chance).

As I write this I've already begun my new co-op at Thalmic Labs working on the Myo armband. Suddenly I'm working on a small product, before it goes to market, and our codebase is light enough that I can compile it on a single machine! The juxtaposition is occasionally dizzying, but while the work is different, I'm just as happy to be trying something new again.

tl;dr apply to Google, have a blast.