Three Years at Google

Summary

It has been 3 years since I joined Google (or work as adult) in 2021. It's time to make a small recap about what I learned from these years.

About Google

Life at Google

It's Google who let me participate in one of world-leading Internet companies. I'm feeling grateful. At the day I got Google's offer 3 years ago, I signed offer and told my manager at Citrix to quit at the same day. I was so devasted for an email address end with @google.com. My heart beat never goes down at that day. My sound was shaky when I told my family about the news. At the beginning of September 2021, Aliena and I drove from San Jose to Kirkland. It was three days trip along with I-5.

Couple weeks later after we arrived Kirkland, my Googler life started. It was during pandemic, so I onboared from home. The first few weeks at Google was Google Tech Immersion(GTI). Everyone was doing some onboarding projects to get familiar with Google wide tech stack. After the GTI, I finally can join the team and meet everyone.

First few tasks was easy, I just need to add new flag in internal system. And it was done in couple months. In task project, I met my tech lead. And I built good connection with TLs from other teams.

After that, the first big project coming up. That project was initiated by my tech lead and cross 4-5 teams. As the team kick the project off, tech lead and I spent a lot of time to set up the infra. Given this project impacts more and more team since launch, my TL and I promoted together. On April 2022, my TL became Tech Lead Manager, and I started to report to him. My work is still related to the product we built.

From Oct 2023, my team swtiched to new product. The product we were working own will be handed to the oversea team. Then we start to wrap up the previous product and start to onboard the new one. The swtiching process is time consuming and painful. Every questions of old product will still come to our team. The new product needs our a lot of time to catch up. But gratefully, we overcame it.

The new product needs us to cooperate with different org's team. I got chance to know more Googlers. I met 10x engineer who can review my poor writing desgin doc in couple days. I also met laybacks who never responsed my messages. Things still happening at this product, I will provide update at next summary post.

Technology at Google

One of the benefits work at Google is "I get chance to work with the high standard product". The high-standard is not only from the product design, but also from the engineering practices.

  • Start from code review, every code change needs readability approval. Readability approval is means someone with readability reviewed and approved your code for readability perspective. If my code wrote in Java, then I need someone with Java readability to approve it. Or I can get myself readability approval (need some tests and practice).

  • Then is the rollout and monitoring. Even though we have Site Reliability Engineer(SRE) for some critical services, Software Engineer(SWE) still need to monitoring the rollout and release by themselves. SWE are required to get used to the DevOps tool inside the Google.

  • Last is System Design. This tpoic is so big, I can only touch small part of it. A lot of people is mocking at Google's document culture. But the documenting is still the important way to communicate:

    • Projects sometimes involve so many teams, having everything on document would be much easier for every team aligned on same plan and start the execution.

    • Besides that, the system can growth to very complex. Having document to list out potential cases can help everyone to design a realidable feature.

    • Good documentation can avoid unnecessary communication. A pain lesson learned from product knowledge transition.

There are so many cool things I learned from Google, I can only touch tiny part of them. Some of them are summarized from my daily work. Some of them are summarized from the countless issues from other engineers.

Other than code at Google

If you ask me one thing I learned from Google, that is "Engineers are human". Working with human is the most complex part of life. API can return you with Error. But directly blaming person still hurting. That's why Google has "no finger-pointing" culture.

I was impressed by the naming "no finger-pointing" when I saw it first time. I practice it since then. No matter what happened, I usually say "Let's do XX to fix it". And I can also feel it when others saying "dont't worry, we can fix it" to me during OMGs.

Personal Growth

Working as adult is totally different from the life at school. Real world is more complex than the school. I have to do thing no matter if I'm ready or not, no matter I like it or not.

Thanks to this totally different experience, I starting have different understanding about the words "Programing" and "Software Engineering". I also start having sense about how "Software Engineering" and "Business".

Programing and Software Engineering

In the university, we usually only focus on letting code work. A project usually start from empty repository. Students add code without any reviews or comments. Testing is optional. CI/CD is rare. We only need program work for our final report.

This is programing. We adding code, make it work. And done.

But when it comes to Software Engineering. The Engineering becomes the more important part. When people thinking about the civil engineering, many complex process coming up in mind. Same as Software Engineering! We need to think about the software architecture, avaliability and many other aspects. Adding 100 line of new code might along with 300 line of tests.

A programing genius might not be the good Software Engineer, vice versa. At least from my mind, they are going to different directions.

Software Engineering and Business

Real world is much more complex than learning at school and working at corporate. The core of Business is to resolve the complexity for the others.

When working at corporate, leadership have abstract the problem to the specific doable projects to every leads. Every lead break the projects to actionable items to the IC. Everyone's daily work is after the abstraction. They only need to focus on their own part.

However, there is no one do the abstraction for Business owner. In other word, business owner is doing the abstraction for others:

  • For customer: business owner is abstract complext things. Customer just need to pay for them. This is the essential of the business and also the enssential of SaaS.
  • For the team: business owener has to stract the whole task for each of them. Same as what happens in the corporate.

Software Engineering is cool, it can solve many problems that cannot be solved before. Business is also cool, it can bring Software Engineers with right problems to solve.

Postscript

When I look at my photos 3 years ago, I can't recognize myself. Eyes, thoughts and understanding of world changed a lot.

I was thinking joining Google is my life highlight. Now it's just a beginning of one of my life phase. What I learned in these 3 years are very important. What I need to learn in next 3 years also countless. Respect!