What I learned interviewing with Google

Over the last few weeks I've been interviewing with Google for a job doing primarily JavaScript development. I didn't end up getting the job but I thought I would share the process of interviewing for Google as it was both very exciting and a humbling experience. I can't reveal everything as I'm under a few NDAs. I'm not going to mention the products or teams that I was interviewing for but you may be able to guess.

For those that don't know me, I'm an independent developer/designer. A majority of my work falls into the four categories of JavaScript development, WordPress development, HTML5/CSS3 or UI/UX design. I absolutely love running my own show and it would take quite a bit to get me to switch out.

In the beginning

So, a few months ago I had a Google employee ask me if I was interested in joining their team. As I said, I'm super happy with what I'm doing at the moment but I didn't want to turn down the chance to interview or even work for Google. I happily passed along my resume and that was the end of that for about 5-6 months.

Cut to about 3 weeks ago, I received an email from a Google recruiter asking if I was interested in a software engineer job down in Boston. I told her I was and we arranged a phone interview.

At this point I was really excited because it's always been a bit of a dream of mine to work for Google but I have always assumed two things:

* Google only hires those with an educational background in Computer Science * Google only hires people with a well versed background in many programming languages.

I went to school for Information Technology Management at Ryerson University where I graduated with a bComm. My schooling was more about development methodologies, project management, systems analysis and other high level IT skills combined with way too much math and management approaches. I took one course on development which gave me an excellent primer to C and Unix but it was far from what those in Computer science learn. I've been coding since I can remember and have just picked up my chops along the way mainly focusing on PHP development and the last few years, JavaScript.

So, needless to say I wasn't as well versed in some algorithms and big O as someone who spent 4 years in Comp Sci but I have a pretty good handle on the languages I do know.

The First Interview

The first interview was over the phone with a Google HR rep. It was a fairly quick 20 minute interview where I talked about what sort of projects I liked to work on, what languages were my favourite and my background in both employment and schooling. I also told her I'd be willing to move down to Boston but would love a spot at their Waterloo office (which is about a 1.5 hour drive from Toronto). She told me they primarily hire strong C++ and Java developers, something which I have very little experience with. After I talked about how much I enjoyed front end development, she said that I would be a good fit for a spot in their Waterloo office.

We arranged to do two interviews in one day in about a week and a half. The HR rep sent over an email with some guidelines and things to brush up on which included comp sci 101 things such as sorting algos, hash tables, binary trees and so on. I was familiar with a few things on the list, but I definitely had to do a lot of reading in the week and a half before my interview.

Meeting with Google engineers and coding on a whiteboard

After a few late, panicked nights and handfuls of really fun JavaScript problems from my good friend Darcy Clarke who did his best to prepare me, I was ready for my two interviews with the engineers.

My first interview was with a mobile developer and it lasted around an hour. He started off discussing different types of sorts, explaining what algorithms would be more performant, which situations I would use a specific algorithm and a whole smattering of comp sci terminology which I had to explain. I tripped over quite a few of these and felt pretty embarrassed. After that we moved onto talking about JavaScript performance, I wish I could say more here but not revealing the questions asked was a large part of the NDA. After that we moved into talking about design for mobile devices. After this and the JavaScript questions I started to feel pretty good about it. We ended the interview with a 25 minute coding question that had to do with efficiently sorting arrays. I had never coded on a whiteboard before and I felt like I made a few stupid mistakes.

Next up was another mobile developer from another product that they work on in the Google Waterloo office. We started off talking JavaScript performance again and then jumped right into the coding problem on the whiteboard. I was pretty nervous at this point in time and I made a few more silly mistakes that I wouldn't have done in a proper IDE. We finished the interview talking about some HTML5 video stuff I was working on and talked a little bit about typed javascript compression.

I left after that feeling that I totally slam dunked parts of the interview and bombed other parts.

Whew, its over.

A few days later I got a call from the HR person at Google and she told me in the nicest way possible that I wasn't a fit for the position. She said she would keep me in mind for future positions, which is nice whether they meant it or not :)

Coming out of this I'm not particularly bummed out, it was a fantastic experience to interview with Google, I'm honoured they had me come in and interview; its something I never would have thought would happen to me. I still have a really awesome job where I work on some really awesome projects and I have an incredible drive to keep learning more about web development. To sum it up what I learned in a few points:

* Comp sci problems are a ton of fun to solve in JavaScript. I practiced a lot with Nicholas Zakas' <a href="http://www.nczonline.net/blog/tag/computer-science/" target="_blank" rel="noopener noreferrer">computer science in JavaScript </a> posts. * Even if you aren't a leet C++ or Java dev, Google still takes interest * Learning another language helps you become a more rounded developer. This experience hasn't made me want to go back to writing C but I may take interest in another language that isn't as forgiving as JavaScript. * Coding Chops > Comp Sci degree * A Comp Sci degree is very helpful when trying to explain Hash tables, Vectors and Big O * Always be hustlin' A few years ago I would have never have thought I would be interviewing at google just 9 months fresh out of school. Anything can happen.