Georgina Xu's CPT Project

From CSclasswiki
Jump to: navigation, search

Program Introduction

During summer 2018, I worked as an Engineering Practicum Intern at Google Kirkland office, in Washington. The Engineering Practicum internship is a 12-week program for first and second-year undergraduate students with a passion for technology—especially students from historically underrepresented groups including women, Native American, Black, Latino, Veteran and students with disabilities. After receiving the offer, I was matched with the People Stack Team in Kirkland and had an amazing summer working with my two intern hosts.

Project

Background

People Stack is a big and important library team at Google, which supports multiple Google applications, such as Photos, Maps, and News. It is responsible for not only keeping track of people's contacts, but also giving accurate people suggestions whenever users want to share something. For example, whenever a user wants to share a photo with friends from Google Photos, they will click the "Share" button, which brings them to the first step of the sharing flow, managed by the People Stack Team. Then, the share sheet will provide multiple people suggestions, which are the people who the user will mostly likely share to, based on Machine Learning methods managed by the server side of the People Stack Team.

Project Description

My project in the summer was dedicated to the client side of the People Stack Team, which aims to design a more consistent sharing UI on Android platform and a "smarter" algorithm which provides users better suggestions for third-party apps. My two intern hosts gave me and my podmate lots of freedom to design the project ourselves. Thus, we started the project by designing the entire UI and functionality of the new product, writing a formal design document, and pitching the ideas to the entire team (including our product manager). The actual implementation of the project was a full-stack implementation, including using Android Studio to create the front-end UI and using Java to design the back-end algorithms. Testing was a major part of my internship as well. All the codes I wrote needed to be guarded by several tests, such as unit tests and UI Automator tests.

Technologies and Languages Used

  • Android Studio
  • Java

Reflection

I really enjoyed working on my project this summer because it feels like a product that completely belongs to me. Rather than continuing on someone else's product, I designed this project myself. I implemented it, fixed all its bugs, guarded it with tests, and handed it back to the team for future production. I had a great time working with the Product Manager, the UX designers and other engineers on the team. It really taught me what a real development cycle in the tech industry looks like.

Having so many Google engineers review my codes every day, I learnt how to write clean and concise codes, be responsible for what I wrote, and be grateful for other people's comments and help. Thanks to my two intern hosts who always encouraged me to speak up during team meetings, I learnt to express my ideas and not to be afraid of disagreeing with my teammates. I felt like an actual contributor on the team, instead of an intern who was told what to do.