During my time at Google, I had the privilege of working on 3 vastly different teams. My motivation for this post is to give you a glimpse into the diverse working environments within Google. My work on each team varied widely, and so did each team’s culture!

Team 1: Android/iOS Notifications

In my first team, I developed features for sport and weather notifications for Android and iOS phones. For example, I worked on migrating certain iOS sport notifications to a pub-sub model to ensure users receive game results more quickly. Android already had the pub-sub model, but iOS features often lagged a bit behind Android ones.

I also launched several new variations of weather and sport notifications. These included weather notifications detailing forecasted temperature deltas for the next day and sport notifications with post-game video links. It was especially interesting to analyze the variance in notification results across sport types and countries!

Several of my projects focused on improving infrastructure and fixing up technical debt. For instance: migration to smaller protocol buffers reduce SSD usage server migrations.

A Day in the Life

On this team I spent a lot of time writing design docs and coming up with A/B experiments. I regularly met with Product Managers to brainstorm what new features users would enjoy, and collaborated with our partner team in the USA. My time alternated between spending weeks or days on feature design and idea brainstorming, followed by periods dedicated to implementing the features

What I Especially Loved

Team 2: CodeSearch Backend

In my second team, I worked on the backend of CodeSearch, the tool that Google software developers use to search through Google’s massive codebase. You can think of Codesearch a bit like Github’s CodeSearch tool.

I joined the team seeking more algorithmic work and was very excited about the product itself, as I use it as a Google developer every day. I spent most of my time developing features for the team-wide “Git multibranch project”. This project would enable indexing and serving of hundreds of projects in Git, and be especially important for git-using Google teams such as Android or Chromium.

Among other things I:

I also worked on improvements for a batch service that processes queries periodically on the entire Google3 codebase. The batch service is cheaper to run since latency is not a priority and many interesting metrics can be gleaned with it (e.g. how many usages of the Java function X appear in in the codebase over time).

A Day in the Life

Lots and lots of code! I normally spent 80% of my day writing code, reading code, designing algorithms, or handling bugs as part of my onduty shift. It often felt like bootcamp!

I worked on interesting algorithmic challenges and in comparison to my first team, I had limited interaction with other teams. An exception was my regular interactions with our SRE team, who are oncall for the tool and handle emergency alerts or pages.

As a side note, I believe it was detrimental that we had such limited interaction with other teams. Our team was siloed, and there was too much work for too few people. I also encountered some interpersonal issues within the team, which ultimately led to me look for a new team at Google.

What I Especially Loved

Team 3: Securing Google’s Internal Usage of GCP

In my last team I focused on GCP firewall management for Google-internal teams using GCP. My teammates and I were responsible for an intermediary layer between GCP and the Google internal teams using GCP firewalls - this layer oversees and facilitates how the teams manage their firewall policies in GCP, ensuring they adhere to Google’s security and reliability specifications.

On this team, I finally had the chance to design and implement a large, multi-person project from scratch. The challenges involved in starting a project from zero compared to developing features for an existing project were of a different caliber and instructive!

When I joined the team, it was an SRE team, so I had the opportunity to learn about being oncall and to gain my first holistic view of products at Google. This experience helped me understand products more comprehensively end-to-end (e.g. monitoring, alerting, reliability), which was something I missed in my first two SWE teams when I worked on specific features in a more narrow-focused manner.

By now the team has become a SWE team as well yet it retains a lot of its great SRE culture.

A Day in the Life

Code-wise, I coded about 50% of my time - more frequently than in my first team but less frequently than in my second team. I carried out a lot of interesting design work focusing on infrastructure challenges, and as TL of my sub-team I was also busy ensuring that the other teammates have clear projects and are unblocked.

Compared to my previous teams, in this team I had the most cross-organizational partnerships and associated meetings. I collaborated with Security Engineering teams, the Google internal client teams, and numerous dependency teams.

What I Especially Love