Google Maps 2017 - 2018 Summer Internshiptech google · maps · android · java
Over the past summer (2017 - 2018) I worked on the Google Maps Location Sharing team! Location Sharing in Maps allows you to share your location with someone. Typical use cases include sharing with family members when overseas and sharing with friends to try meet up somewhere. I worked on two features to improve the user experience when sharing location by providing more information to the person being shared with, I can now talk about because they launched!
Previously the information on the card displayed when sharing your location included stuff such as your distance, directions to them, how old it is and if you are sharing with them.
The first feature was to display the sharer’s battery when it is low. The second feature was to display the sharer’s local time. The project can be broken down into the following steps.
- Location the battery information from the Maps backends and plumb it through the RPC stack
- Show the battery information on the android application
- Make server side changes for time zone
- Show the time zone information on the android application
It seems fairly straight forward when broken down like that, but there were a few large caveats.
- The Maps backend comprised of many (between 1 and 10) different backend services, some of which were owned by teams in Mountain View, USA.
- The backends used lots of dependency injection (Guice, Dagger and lots of producer modules which implement asynchronous dependency injection) meaning it was non trivial figuring out how data from once place got to another
- Finding the right service that handled time zone conversions in the massive code base and handling edge cases such as day light saving and date time boarders
Not to mention the learning curve ramping up to Google’s internal tooling, version control, abundance of protobuffers and internal libraries, notably Google uses an internal library to create android UIs rather than xml.
I had to work with UX designers to make sure the product was consistent across Google products. UX Writers approved my strings to ensure phrasing was correct and translations to over 50 languages were acceptable as some languages phrase sentences differently structurally. I bugged product managers push the feature through to our beta and alpha release stages ensuring features were sufficiently tested and complied with legal, privacy and security. As well as some interesting technical considerations such as when to store information to disk and when to drop information that I usually don’t think about on the outset of the project. The tech used was Java (Guice, Dagger2, Android), protobuffers and RPCs.
I can now point elements (red box around them) of the Google Maps Mobile Application and proudly say I did that.
Along the day I learnt how to make coffee & froth milk!! I also broke a surf board 🌊