This is the seventh post in Strava’s Intern Blog Series, where we give interns the opportunity to talk about the projects that they’ve been working on.
When I was offered an internship at Strava, I could not pass up an opportunity to spend the summer in San Francisco. As an avid cyclist and native New Yorker who had never travelled to the west coast, the chance to work at Strava seemed all too perfect. For the summer, I worked on Strava’s Android application as part of the Premium (vertical) Team. We are the team at Strava that manages subscription payments and builds the special features which people pay for.
For the majority of the summer, I helped bring one of Strava Premium’s web features to mobile: workout analysis for runners. This project involved a whole suite of diverse tasks on Android; I have built a new screen to allow users to set their pace zones, rewritten a few existing layouts to use Android’s new ConstraintLayout, updated analytics tracking code, and fixed a whole slew of bugs.
More recently, I was tasked with rendering high-resolution data in the mobile workout view graph which required refactoring legacy code to a more modern, robust, and unit-testable approach (We’re slowly adopting RxJava to simplify our asynchronous code). While it was a monumental task, I appreciated that this refactor touched many different layers of the application (e.g. database and networking stack) because it gave me an opportunity to learn more about the different parts of the Strava Android application. This task was a good real world exercise on how to migrate legacy code into smaller decoupled components. In addition, it feels great to have my code shipped into a production application used by millions of users.
In the short amount of time I have been at Strava, I have learned what it is it like to deal with a 7+ year old-codebase (something you never have to do in college computer science class projects!). Moreover, through numerous code reviews, I have gleaned that consistency with the rest of the codebase is usually the best approach when it comes to new changes. However, do not be afraid to change existing code or ask why something is the way it is. A newcomer has the prime opportunity to question existing methods and actively improve them. While some changes have little to no user facing impact, they mark a step towards a better product overall. Not all code changes are glamorous, but it does not mean they are unimportant.
While I have thoroughly enjoyed working on the engineering side of Strava’s product, it has been great to feel so at home with the rest of the company as well, even if it is only for the summer. Strava hosts a weekly all-hands company meeting which offers a chance to hear about company-wide news and announcements from all different teams. It has been enlightening to learn about the non-engineering side of the company: everything from finance to growth marketing. I am thoroughly impressed with the transparency of Strava’s leaders. As part of these meetings, I have learned about Strava’s brand identity, long-term plans and goals, as well as major upcoming feature releases. No matter your team or intern status, everyone is a part of Strava and the company’s future.
One thing I really appreciate working at Strava is the work-life balance. As much as I love programming Android, it is very important for me to spend time outside on my bike. It is great to work with people who share this same mindset. Strava has company sponsored runs (Workout Wednesday aka WoW) and rides (Ride with Us) so there are always opportunities to go out and sweat with friends! So far, my summer at Strava has been full of hard work and personal milestones: my team had an off-site where we hiked the dipsea trail in Mill Valley, I biked up Mt. Tamalpais, and I rode my first century with coworkers.
At Strava, there is always time for a <preferred_activity_type>.