Google. (Reflections 3/4)
Reflections (Part Three)
Hi everyone! Welcome to part three of my 'reflection' series- a collection of blog posts where I share memorable stories from my university life. These experiences have also taught me a few key lessons I'd also like to share. Once again, I've listed these lessons below for convenience (with the ones relevant to this post bolded). Still, stick around if you want to hear the full story.
You might have heard a lot of these phrases before because some are very cliché. However, I'm a firm believer that things are cliché because they are true, it just sometimes takes a specific event or two to make you realise how real they are.
- You are the average of the five people you spend the most time with
- Theory gets the grade, practice gets the job
- You're responsible for creating your own opportunities
- Your habits are a reflection of your identity
- 80% of the output comes from 20% of the causes
Disclaimer: Although I work at Google, all views and opinions are my own, and do not reflect those of the company.
I wanted to use this post to share my experience working as an intern at Google, as a large part of my third year was spent (gruellingly) working towards this goal. I've recently seen a lot of discussions online around Google and similar 'big tech' companies, about whether these jobs are as great as they are hyped up to be. On one side, there's the sunshine and rainbows. Billion user products, interesting engineering problems and free food. What's not to love, right? But over on the other side, you have people bringing up issues like 'feeling like a cog in a large machine', long stressful work hours, and an interview process focusing on irrelevant skills. So with all things considered, what side wins out? I mean, it's pretty obvious where my opinion lies as I've decided to go back as a grad... But there's a lot of valid reasons against working at a big tech company that I'd like to discuss by sharing my own experience.
First, let's begin with the positives. If you've watched any of those 'day in the life' videos on YouTube, working as a software engineer in big tech seems like paradise. Free food and drink, game rooms, nap pods, and dog-friendly offices. These videos are pretty spot on about the perks. To be honest, I find it difficult to explain because of how surreal everything about my internship felt, now that the pandemic has kept me at home the entire year. But these tech offices are insane. Even at the Sydney office(which is way smaller compared to the US), we had multiple restaurants on campus serving free breakfast, lunch and dinner each day. On top of that, a myriad of other perks like onsite massages, fully stocked micro kitchens (with snacks, drinks and ice creams) and frequent team outings made it easy for me to forget that I was actually working and not on summer vacation with my intern cohort.
Although these perks are usually what catches peoples attention first, I don't think its the reason why people stay. I found that the most fascinating part of the company was the sheer amount of knowledge I was surrounded by. All my co-workers were not only brilliant but also overwhelmingly friendly and always willing to help. One memorable moment was when I had this weird bug to do with the Microservices Platform, and my manager told me I could just PM the team that created it ??? My intern friend had a similar story too with the Flutter team. Who needs StackOverflow when you can talk to the creators directly I guess, huh? Google is also really transparent about internal documentation and code (with a few exceptions like the search algorithm of course) as its all openly available to employees- even interns. It was pretty eye-opening learning about the design decisions that went into making products like YouTube and Google Photos that I use every day.
I'd like to address the widespread assumption that companies like Google make you work long stressful hours and that there's no work-life balance (WLB). I've also heard things like "Oh all the perks are just to keep people in the office for as long as possible". This is far from the truth. Everyone I knew at the office worked standard 8 hour days with super flexible hours. Most days I would arrive at the office between 9:30am-10am and leave before 6pm. I remember the one time I stayed late at the office was because I was investigating this weird bug I found. When I PM'd my manager at 7pm telling him (excitingly) about the problem, he was literally angry at me for being at the office so late (Sorry Josh). I would even go as far as to say that Google stresses WLB so much that I felt as though I didn't have enough work to do, and that I had to ask for more tasks. Obviously, this is only my experience, and it can vary depending on the company (and even between different teams at the same company). Still, I've heard similar stories from other people I've talked to (even non-interns).
So what about the real downsides? "You feel like a small cog in a large machine". I heard this statement many times before I started my internship, and I can now say there's definitely a lot of truth to it. To give an example, for my project, I was working on a small feature for the product my team was working on (it was in beta phase at the time). Once launched, this product would be a small part of the larger Photos organisation. Then, when you think about Google Photos, even with a billion users, it's only one of seven major products Google has- making up a tiny percentage of the company's total revenue. It's pretty easy to feel insignificant when you view your job through this lens. Many people compare this experience to if you were at a startup, where all the code you write influences the company trajectory- either moving it closer, or further away from its goals.
However, there were a few moments during my internship, where I saw things in a different light. Something memorable that my mentor told me was that Google is so massive, that it's infeasible to think of it as one company. In fact, some teams work on products big enough to be considered companies on their own, solving their own product and organisational challenges. If that's the case, then it's pretty stupid to compare your work to Google's total impact right? Instead, I think its much more realistic to look at the direct impact your product is having on its end users. For most teams, this is still on the scale of millions of users- not an insignificant number by any means. Even in my team, where we worked on a beta product that hadn't even launched yet, we had thousands of daily users testing our application. I remember there was this one day where a group of our beta users sent us personal thank you cards as they enjoyed our product so much. It was moments like this where I truly appreciated the impact our work was having on people all around the world.
Although Google met most of my expectations, the assumption I was most wrong about was the work that I would be doing. As a starry-eyed student months before my internship started, I was already dreaming about the cutting edge work I would be doing at a company like Google. Problems requiring optimised runtimes, complex algorithms, and new innovations. Well, it turns out only a fraction of software engineering problems involve these things. At the end of the day, Google is a product company. So, well, they build products. And the truth about product software engineering is its pretty similar no matter where you are- whether its a small startup to a company like Google. A good portion of the work you'll be doing is 'mundane' tasks like building out forms for a UI or creating basic CRUD API's to send data to the frontend. There's a running joke that software engineers at Google are just Larry and Sergey's Protobuf (data interchange format) moving service. But for consumer products, these are the tasks that satisfy business requirements and make the product money- not optimising a piece of code by 0.236%, so it runs faster.
Another thing about Google is that the existing tooling and infrastructure each team has access too is really good. Some of the most difficult challenges as a product grows involve things like creating secure authentication systems or handling scalability issues with millions of users. But Google has solved these problems so many times already that they've developed reusable plug-and-play solutions that any team can just integrate into their application. Yes, this makes for a great development experience as you don't have to reinvent the wheel each time, and it's super nice working upon these great abstractions. But, I couldn't help feeling dissatisfied when I didn't understand what was happening under the hood. At times I thought "Am I learning how to solve difficult software engineering problems? Or just learning how to use Google's tools". I guess this is one reason why people move from these big tech companies to startups, so they can be apart of solving these problems as the company scales.
So why did I decide to come back then? Being completely honest, it wasn't a clear cut decision for me. I thought about going elsewhere many times, from switching to a startup to trying to completely different work in high-frequency trading. In the end, it came back to what my mentor told me. No one team is reflective of Google as a whole. Each project offers a different environment, with different learnings. I worked on a small project in Google, so naturally, the problems I run into will be different to those if I was working on a million user product. I feel like 3 months is still way too short to come to any conclusions, and I'm keen to continue exploring what the company has to offer. Plus, having amazing co-workers made the decision a lot easier. At the end of the day, Google only provides an environment to grow, but you still need to create your own opportunities. Whether it be proactively seeking out the right team for you or investing time into learning what interests you using the wealth of internal resources. It's up to you to control your future.
"You're responsible for creating your own opportunities"