TrainerRoad Helps Cyclists Increase Performance with Five-Star Apps
The .NET community continues to grow in size and expertise, ranging from recent college grads building the future of technology to experienced professional developers modernizing decades’ old business processes. TrainerRoad,one of our amazing customers, combines their passion for technology with their passion for cycling. They’re laser-focused on user experience, delivering web, mobile, and desktop apps that provide personalized workouts and training plans, connect with on-bike sensors to track performance metrics, electronically readjust resistance, and sync real-time metrics across platforms.
Today, Nate Pearson, TrainerRoad CEO, shares how his team uses end-to-end mobile DevOps and cloud services to build, test, distribute, and continuously monitor and improve their apps to ensure their customers get the same high performance and quality from their training technology that they demand from their own performance. The result? Five-star ratings and a rapidly growing user base.
Tell us a little bit about your company and role. Have you always been a developer?
Becoming a faster cyclist used to be my personal mission and it inspired me to build TrainerRoad. I used to wake up and spend my days creating executive dashboards for a Fortune 500 slot machine manufacturer, but all my free time—weekends, early-morning hours before my 8-to-5 engineering job, and late-night evenings after my kids went to bed—was dedicated to triathlon training and increasing my speed. Your bike (and your training regime) is where you make up the most time: if you’re strong on your bike, you finish with a time you’re proud of.
Now, I wake up every day as TrainerRoad’s CEO, where I help thousands of athletes achieve their goals and become faster cyclists. I’ve been developing software since 2014, although my mobile development experience was extremely limited until 2013 when we started working with Xamarin to develop TrainerRoad’s iOS app. We couldn’t exist today, or continue to grow, without mobile: 50% of the platforms we support are mobile and nearly half of our customers use our Android or iOS apps.
Tell us about your app and how it fits into your mobile strategy.
Two things make us the industry’s most effective training system: science and hard work. We bring the science, and our athletes bring the hard work; both are equally important to becoming a faster cyclist in the most efficient way possible. We combine technology with trusted, science-backed principles and deliver structured indoor workouts and plans to athletes across desktop, web, and mobile.
We’re always evaluating how we can provide the best training experience for our athletes, and mobile is a big part of the discussion. A lot of our athletes mount their cell phones to their handlebars to create an easier, more seamless training experience. We get that, and so mobile is—and always will be—a huge focus for us.
What sets your apps apart?
TrainerRoad is an all-in-one training system. When an athlete downloads our app they’re not just getting access to the best indoor cycling workouts; they get personalized training guidance just as they would if they had their own cycling or triathlon coach. We use our expertise to create structured training plans that tell riders exactly what to do to become as fast as possible, and they can track their progress throughout the training season via their personal performance dashboard.
What do you think about when you hear “native app”?
I think of the feel, launch time (it’s gotta be fast!), and how it looks. Without a doubt, Xamarin allows us to accomplish the native look and feel in a fraction of the time. Unlike most “shortcuts,” we’ve never had to compromise on quality using Xamarin. In fact, the quality of our apps has been better, because we execute new features and resolve bugs across all platforms much more quickly.
Why did you choose Xamarin?
TrainerRoad is unique because we share one codebase across four platforms (Windows, Mac, iOS and Android). All the guts of what we do—interacting with client devices, execution of workouts, syncing workouts, etc.—comes from this shared codebase. For our athletes to have a five-star experience, our apps must run seamlessly for the entire workout duration (one to two hours at a time), connect to external Bluetooth devices, connect to ANT (the fitness version of Bluetooth Smart), and instantly perform client-server interactions.
We’re a C# shop, and we specifically chose Xamarin. We knew our apps had to feel native, but we also wanted to build and implement new features across all our platforms quickly and simultaneously, which we’re able to do with Xamarin. We’ve recently switched to Xamarin.Forms to share even more code across Android and iOS.
There are very, very few companies that (1) are available on four platforms and (2) have the same thorny functional requirements we have. Managing our codebase’s complexity in the same programming language has been a game changer for our development team.
It’s a lot to handle, but Xamarin makes it all possible, allowing us to reuse our code across all platforms. Xamarin is a killer solution for us; we’ve saved so much time!
How long did it take to ship your app, from design to deploy?
We started with iOS, which took about a year, and our Android version took nine months. Without Xamarin, it would have taken us twice as long to build each app; we share nearly 90% of our code across platforms, which is huge for time savings.
How, and why, are you using Microsoft Azure?
All of our development servers are on Azure. We look for reliability and scale in a web hosting service, and Microsoft Azure delivers on both. Like many other software companies, we looked at AWS, but the integration with our existing technology appealed to us, and now I’d hate to not be on Azure. It’s saved us so much time and money.
Describe your development process and approach to mobile DevOps.
Our designers use InVision to create mock-ups for stakeholder sign-off and, once approved, we put them inside of Zeplin. From there, our weekly sprint planning meetings and GitHub projects define clear objectives and tasks for the dev team.
When an engineer picks up an issue and has a pull request ready, another engineer reviews the code before it goes to our testing team. After testing is complete, validated code goes into our development branch, and we publish nightly alpha and test builds to TestFlight and GooglePlay.
Why is mobile quality important?
You know what it’s like to get ready for a workout—there’s a lot of mental and physical preparation. Now imagine this: you’ve gotten yourself in the mindset to do your workout, eaten your pre-workout nutrition, changed into your gear, jumped onto your training equipment and… it doesn’t perform. That’s a fists-raised-in-the-air moment—like getting ready for a date only to be stood up. It leaves a bad taste in your mouth.
We try extremely hard to avoid our athletes ever experiencing that feeling. Testing, a lot of testing, is imperative to our app quality and our reputation. We have unit tests, integration tests, automated testing with Xamarin Test Cloud, and a test team. It’s extensive: team members physically get on bikes to ensure everything works seamlessly. For example, our automated testing suite once caught a mistake in our codebase that prevented users from signing in before we released it.
We treat testing like a first-class citizen in our development process. Without it, we’d risk a buggy app that riders wouldn’t recommend to their peers. We’re proud of our 76 NPS (Net Promoter Score), and it would sting for that to drop. So yes, we like to test, and in a variety of different ways!
It’s not feasible for us to have every device variation, and Xamarin Test Cloud gives us a breadth of devices. We have about 40 different variations of Android and iOS phones in-house, but of course that’s just the tip of the iceberg (if you look at just Android, there are over 24K device variations!).
Xamarin Test Cloud helps us run full regression tests, so we can ship beta builds to our internal teams and production releases to our customers as soon as possible.
What have your users said about your app?
TrainerRoad is an app built for cyclists by cyclists. Team members from across our development, test, support, and marketing teams are cyclists or have cycling experience. They use TrainerRoad for their own training, and we rely on them for internal testing and early product feedback. Our internal riders download our alpha and beta builds and share their commentary, ideas, and feature requests in our #rider-feedback Slack channel. We invite all teams to join our weekly product show-and-tells to make sure everyone, not just the development team, gives feedback on our in-development features.
The feedback we’ve received from TrainerRoad athletes who aren’t on our team is also incredible. We get a lot of amazing public reviews, but some of our most memorable feedback has been through our social and customer support channels. Last week, one of our athletes began a support chat, sharing that he’d been diagnosed and treated for cancer last year and how the treatments were grueling. He went on to tell us how our training system is exactly what he needed, and he’s started building his strength back up. It’s this kind of feedback that makes the whole team pause, reflect, and feel even more proud of what we’re accomplishing everyday.
What’s your team planning to build next?
We’re working to give riders a more complete, holistic view of their training, including features that automatically sync outdoor ride metrics into TrainerRoad.
What advice do you have for developers who are just starting out or investigating mobile development?
We recommend Xamarin’s educational tools; Xamarin University is a great resource. What we learned from Xamarin University courses got our team up to speed and going on mobile. Visit xamarin.com/customers to learn how our customers across industries and geographies deliver amazing mobile apps, and visit xamarin.com/download to start building your own.