Talkback says, “Epic Strava Internship! Double Tap to Activate”

Dylan Cunningham
strava-engineering
Published in
6 min readSep 8, 2021

INTRODUCTION

Hi! My name is Dylan, and I am a rising Master’s student at Stanford studying Computer Science. I have actively used Strava for the past few years to track my running and biking activities, so I was absolutely stoked to be able to do a summer internship at Strava. I am happy to say that the past 11 weeks lived up to and surpassed my high expectations going into the summer. The people, the work, and the company culture were all extraordinary and helped to make my summer an immensely positive experience. Today I am going to talk about some of the contributions I made during my internship and my other highlights from the summer.

This summer I worked as an Android engineering intern on the Growth Activation team. I remember reading a description of the Growth Activation team right before my internship started: “The Growth Activation team is responsible for several of the app’s core experiences and the systems that power those experiences, including the feed, social, and communications.” I personally had no idea what that definition meant before this summer started, but after being on the growth team for the past 11 weeks, I think I understand it and can explain it.

The Growth Activation team is focused on experimentation and testing new ideas. An ideal growth project consists of a plan to test an idea in a simple way that only takes a few weeks to develop. For example, let’s say we are making a change that we think will encourage people to upload more activities in their first seven days of using Strava. We will write code to make the small change and then cohort new athletes who sign up for Strava into either a control group that doesn’t have the change or a variant group that does have the change. Then, over the course of a few weeks, we can collect data from both groups to see if the change really did cause people to upload more activities in their first seven days. Let’s say that, on average, the change successfully encouraged athletes to upload more activities. Then, once the experiment ends, that change would likely be shipped to all athletes using Strava. We can learn a lot of information from each experiment on how to improve the athlete experience. This example experiment is a simplified version of how the Growth Activation team works.

MY SUMMER WORK

I was lucky enough this summer to be able to contribute to a few Growth Activation projects. I worked on a project that tested out how to encourage more people to connect their fitness watches and bike computers to Strava. I also helped on a project to make some fundamental changes to how the settings menu is structured. I worked alongside the other Android and iOS engineers on the team and also interacted with a designer and product manager to make the Growth work come to life. Outside of my technical contributions, I was also able to contribute my opinions to team meetings. As part of the growth project development lifecycle, there are meetings that the whole team is involved in to discuss design, experiment setup, and experiment results. One of my favorite parts of the summer was contributing to these meetings with the Growth team. I especially enjoyed discussing the pros and cons of different design decisions. Also, as an intern, I very much appreciated being treated like any other member of my team. My ideas were treated the same way as engineers who have 10 times the experience I do. I am grateful to the Growth Activation team for making me feel like a real part of the team.

Outside of doing team work with Growth, I was responsible for improving the accessibility experience on Android. Going into this summer, I didn’t know much about what it meant to make an app accessible, but now I feel like I know enough to teach you a little bit about accessibility on Android. Android has a built-in screen reader called TalkBack which allows people with visual impairments to navigate through their android device. TalkBack allows visually impaired athletes to use the Strava Android app. However, without proper work adding labels and ordering the experience properly, it would be impossible for visually impaired athletes to use parts of Strava. TalkBack highlights different elements on the screen and reads descriptions to the user. It inherently knows how to read text, but icons, buttons, and images all have to be labeled. Outside of writing proper labels for elements, it is also important to order these labels correctly so that the experience makes sense for someone using a screen reader. I wrote code to both add labels and change the focus of elements in order to manipulate the order and create a good user experience. I would consistently enable TalkBack on my own phone during the summer to test out my changes and make sure that there was a positive user experience.

An example of TalkBack reading out different elements on the screen. The middle photo is an example of what TalkBack says when it doesn’t have a proper label to read.

One of the most exciting directions for future accessibility work in the Strava app is integrating accessibility labels with Strava’s server-driven UI. Some of the main screens on Strava’s Android and iOS apps function using server-driven UI where the server sends json with information about how to display the UI and then the client just translates that json into local UI modules and displays it. Adding accessibility labels for these modules client side can be tedious and difficult when modules are used for multiple purposes. To address this, we can add an optional accessibility label field on some of the server-driven UI elements and have the server send that value as a part of the json payload. Then, with a small amount of client code, those labels can be integrated into all of the different screens where server-driven UI is used. This is a much more extensible solution for future accessibility development.

Intern painting workshop

SUMMER HIGHLIGHT

To end this blog post, I want to share a few of the fun highlights of the internship. First, every week a slackbot on Strava’s Slack platform would release 10 trivia questions for people to test their general world knowledge. I knew almost none of the trivia on my own, but a few other interns and I teamed up and had a great time trying to solve the questions all together. Even with 3 or 4 of us, we still did not come close to the top of the Strava trivia leaderboard. Trivia with the interns was definitely one of the highlights of Wednesday each week. We also had some fun intern events throughout the summer including a painting workshop and a scavenger hunt with our mentors and managers. My favorite week of the summer was Strava Jams, which is Strava’s weeklong hackathon that happens a few times per year. I teamed up with some people who I had not worked with all summer and over the course of a few days, we built a small feature that I have been wanting to see in the app for years. The excitement, comradery, and creativity that I experienced during Jams week was a great way to round out the summer.

Trivia with some of the other interns using Zoom’s immersive view

Although the internship was remote, the kindness and passion of other Strava employees shined through to make my summer experience great. I got to know my team well through meetings on zoom and discussing both work and random topics on slack. Strava places a huge emphasis in hiring people who will lift others on the team up and create a positive work environment. Those characteristics shined through again and again in all of the different people that I interacted with. It was a special environment to be a part of. Above anything, the entire experience made me so excited to hopefully meet all of these people in person eventually.

Thank you to Strava for giving me the opportunity to do a summer internship! Also, I want to say a huge thank you specifically to Faraz, Jason, Annie, Kurt, Adam, and Kelsey for supporting me all summer long and helping me grow as an engineer.

--

--