In anticipation of the release of our next flagship GPS, I redesigned Hammerhead's ecosystem of workout tools. In doing so, I revisited assumptions we had previously made regarding our then-neglected support for structured training. The workout design initiative became a critical component of Karoo 24's unique value proposition. My deliverables included tools for web-based training plans, device-based workout configuration, integrations with partner companies, and a novel set of data visualizations to follow structured workouts during bike rides. My research showed that to sell a better training experience, users needed to solve problems across touch points in their product journey. I've studied training principles from our professional athletes and simplified their training insights into a consumer-friendly product. The resulting product capitalizes on best-in-class methods and tooling while simplifying the complex nature of endurance training.
Structured Training – Structured training refers to using a formal training plan to conduct workouts methodologically. In cycling training, coaches and athletes often use training platforms like Training Peaks or TrainerRoad to build programs and follow them.
FIT, ZWO, and ERG – Individual workouts are commonly built on training platforms and shared in the formats .fit, .zwo, and .erg. These files describe a workout's lap, intervals, targets, and other information.
While creating the product definition for Karoo 24, we discovered that our existing workout and training plan tool set was insufficient for serious athletes. My quantitative jobs-to-be-done analysis revealed two categorical insights regarding structured training:
These findings were supported by research I previously wrote about in my Karoo 24 Product Definition Process write-up. Insight #1 was supported by a difference in the satisfaction score Karoo users ranked their ability to conduct training outcomes versus non-Karoo rankings. Insight #2 was kept in a relatively high opportunity score while ranked highly important. In conversational terms, although we fell behind in this category, no single competitor provided a satisfactory solution. The surveys used for this research included 40+ questions across various training outcome statements. The survey yielded over 10,000+ data points.
While our product definition process proved the value of investing in training tools, it wasn't prescriptive of what the tools should look like. Our intention from the K24 PDP was to include focused research specific to each major product initiative. Like other design projects I've written about, I followed a version of the traditional design thinking process popularized by IDEO and the D.School. Within our software product team, we've modified these processes to fit our regular sprint cadence. Explore one of our cross-team workshops I organized between engineering and product explore ways to help our lagging workout tooling.
To understand what a complete and satisfactory toolset would look like for our athletes, we began with user calls to uncover problems in their existing journeys. As with any significant Hammerhead design project, we did these interviews to understand better the pain points riders were facing within the Hammerhead ecosystem and with competitors. I helped set up and moderated 12 interviews via the Hammerhead Research Group. Although I entered these calls with a list of workout-related topics, each session had the possibility of unlocking new behaviors and pain points. Dovetail, our research repository, was my chosen tool of analysis. Dovetail provides annotation tools that help with data tagging, filtering, and synthesis. The 12 interviews netted me over 30 insights, each backed up with multiple supporting quotes. With insights, Grayson Pollock and I sifted through to group similar workout topics. Our grouping method helps figure out complimentary features that, together, holistically some of the paint points. Some of our significant "categories" of workout insights included setup pains, training education, in-ride coaching, responding to data changes, and interactions with external platforms.
Most modern endurance training plans' workouts are based on intensity zones. Intensity zones are built to categorize and simplify levels of strenuous effort to follow workouts better and understand the biological adaptations at each intensity level. These zones are often measured in three ways: 1. Pace, 2. Heart Rate, and 3. Power Output. For cycling, 2 & 3 are most common. Heart rate and power zones differ for every individual, and each coach might have a different method of breaking them up. The result is that training platforms have built non-standard defaults and configuration tools. Strava does five zones by default, TrainingPeaks does 6, and many others recommend 7. Coaches prescribe workouts to derive heart rate or power threshold markers to find each zone value, which becomes the basis of zone calculations. These baseline fitness tests are often done regularly (I do mine every six weeks, for example). Each test nets a new value, which requires the rider to recalculate their zones each time. They then have to update their zones on their planning software (Training Peaks), their head unit (Karoo), and their post-ride tools (Strava). Since these platforms each have their implementations, it leads the riders to re-input data across different interfaces. It's a time-consuming step that riders dread.
When training plan providers, either coaches or software, share their plans with athletes, the athlete has to digest large sets of raw information to understand their upcoming day, week, or training season. What we found was that although the high-level training plan across several weeks or months was easy to understand, the rationale behind day-to-day workouts was mysterious. The training provider builds workouts based on the long-term plan, inputting information like rider fatigue levels, cumulative training volume, intensity polarization, and athlete availability. In their processing, individual workout motivations are lost on the end-athlete. These athletes are often curious and intelligent people who like to know why what they are being prescribed is the best workout that day. Even amateur cyclists aren't satisfied blindly trusting a training source without more profound knowledge of each workout's impact on their progress.
Training cyclists often buy head units like the Karoo as a tool to coach them on their rides. Via the athlete's training provider, they load .fit, .erg, or .zwo files onto their devices to run workouts. Karoo, like competing head units, follows the files in-ride and shows the rider their current targets for each interval. An interesting sub-insight was that riders often forgo their structure workout files when the workout that day is a simple endurance workout. These endurance workouts usually involve long, extended times at low intensities. For example, I have a workout this week that prescribes:
1. 10 minute warmup, ramping from Zone 1 to Zone 3
2. 1 hour 30 minutes endurance, Zone 2
3. 10 minute cooldown, Zone 1
These workouts are easy to keep in their head. It's easier for riders to follow the above workout mentally than to go through the hassle of moving files across platforms. But, for more complex training, structured workout files are critical. Take the following workout, which I occasionally do:
1. 10 minute warmup, ramping from Zone 1 to Zone 3
2. 3x Set of:
- 1 minute Zone 3
- 1 minute Zone 1
3. 10 minute endurance, Zone 2
4. 5x Set of:
- 3 minutes 30 seconds at Z4
- 30 seconds at Zone 5
- 1 minute Zone 1
5. 10 minute cooldown, Zone 1.
Whoa. No one is keeping that all in their head. Much less so when they are out in the real world, facing wind, traffic, and fatigue. This is where the head unit comes into play, and the magic of structured workouts shines. Upon starting the workout, the device triggers the first interval and shows target intensities. It also shows where the athlete's current output is compared to the target. Visualizations help them think, "Do I go hard, easier, or stay at this intensity?". The device handles triggering the following laps and indicating upcoming changes. But, the existing in-ride workout implementation on the Karoo fell short.
For one, riders found our target visualization challenging to see in glare and other low-visibility situations. When a rider originally opened a workout on Karoo, we would add a specialty workout visualization page to their in-ride interface. The primary interval target value would be shown (for example, "152bpm") with a red arrow in the back if the rider was out of the zone range. The red arrows are powerful but make the text difficult to read. We also heard how the inability to configure this page made it useless for those who prefer more or less data granularity. Some users liked simple instructions, telling them, "Go harder!". Others are highly opinionated that they must see their target power range to the exact watt every second of the ride. The middle ground we offered at the time appeased neither side. We had already built customizable numeric data fields and visualizations on our standard in-ride screens but not on the workout page.
Another frustration we heard was we didn't support coach-cues. Some structured workout formats support pre-ride notes from coaches and time-stamped text to accompany intervals. For example, a coach might add a text cue for an interval that says, "Only use your right foot for this interval to work on muscle isolation and technique." Text cues aren't widely adopted across workout platforms, but riders who needed them, needed them.
1. 10 minute warmup, ramping from Zone 1 to Zone 3
2. 1 hour 30 minutes endurance, Zone 2
- Text @ 0:10:00: "Keep it easy, try to breath through your nose."
3. 10 minute cooldown, Zone 1
At the time, the workout tooling needed to be more straightforward for riders first using the device. Particularly challenging was how the workout page added during rides had poor discoverability. Some people didn't know of its existence, and those that did felt they had to escape their preferred customized in-ride screens to view it. For the rider to be notified of interval changes, they must be on the workout page to see. There wasn't a way to message interval changes and targets universally, regardless of page.
A universally recognized challenge for endurance athletes is finding the time to do their workouts. Our JTBD analysis revealed that time management was one of the most significant opportunity areas regardless of whether the rider was racing or casually riding. While we had explored more off-the-wall solutions for this problem elsewhere, we found that it could apply today on our workout platform. Athletes commonly receive their training plans in one to two-week chunks. The effect is that they can plan far enough to schedule training times but not too far where injury, illness, or other life factors might throw a wrench in progress.
At the time, the Hammerhead Dashboard didn't provide much for workout planning. While we did pull in workout files from third parties, like Training Peaks, the dashboard reflected a high-level summary of workout duration and date. The user calls showed us how riders often pulled open their phones to understand upcoming workouts the night before. Doing so, they could know where to do this workout and when they had time the next day. Since the Karoo, or any other head unit, is generally stored near the rider's bike outside of riding (often in the garage), riders weren't using the device to familiarize themselves with their plans. Their preferred touchpoint is on their phone or at their computer. At the time, it required the rider to log into their coach's training platform to review individual workouts to understand the makeup of intervals and how they should prepare. Coaching platforms, while data-rich, can make it difficult for the end rider to digest high-level summaries of workouts to make informed decisions.
As mentioned above, understanding upcoming workouts is critical since time and route planning are significant hurdles. By far, the biggest category of challenges we hear from riders is how following a structured workout outdoors is highly challenging. Indoor training on platforms like Peloton and Zwift keeps athletes in controlled environments. There is no traffic, no road hazards, resistance and power are controlled by the smart-trainer bike, and rarely are there complete workout interruptions. If a rider were to only ever ride on a stationary bike at home, they would execute their training plan perfectly. If riders follow their prescribed plan perfectly, they are almost guaranteed to make performance gains. The biggest roadblock keeping athletes from performance gains is their inability to do what is prescribed.
Athletes aren't intentionally going off-plan. But endurance cyclists don't follow training plans, so they can keep following training plans. If that were the case, they would always stay in their house and exclusively train indoors. Cyclists ride for the love of riding. Cyclists ride socially. Cyclists ride to explore. Inevitably, they will deviate from their plan by riding outside. We heard that there are standard variables that can't be accounted for, forcing them to get off-target or off-route. Sometimes, a plan will tell a rider to cruise at low intensities, but there is a hill they have to struggle to get over. Sometimes, a plan will tell a rider to sprint for one minute, but the light in front of them turns red. Wind, weather, nutrition, and countless outside factors add to the equations.
Cyclists' natural response to this is to develop their workarounds. For some, getting stopped, mid-interval leads them to "over-compensate" and subsequently go over-target, so their overall average interval intensity bounces back to target. Some continue at the target, leading to their interval average dipping below the target. For some, they restart the interval. These individual behaviors change day-to-day and are highly context-driven. Compensating for real-world interruptions always leads riders to feel uncertainty about their decision-making. Among athletes and coaches, there is no consensus on the appropriate response.
Our generative research phase created valuable, actionable insights, including more than I discussed. Grayson and I analyzed our opportunities in these insights and cut them down to sets we found feasible to develop within the project's constraints. The leftover insights were slated for future design initiatives.
Naturally, I explored possible improvements to act on the insights we synthesized above. I quickly found that comprehensive solutions to user pain points meant designing for flows spanning both the web dashboard and the Karoo.
Solving for insight: Baseline Training Metric Pains
To alleviate pains in updating zone metrics across software, I thought about the origin of the problem. Each platform has tried creating a novel approach to zone calculation and management. My initial instinct was to design a common denominator between all competitors, which would find a middle ground. Iterating on these designs, it became clear that an average between all platforms netted a better experience for no one. It would contribute to the problem further by providing yet another approach.
Instead, I looked for ways of offloading the problem on our end. Digging through the APIs of the major third-party platforms we support, I found most provided training metrics, including zones. Based on the standard zone data we could pull from these APIs, I built designs that let riders sync zones from their preferred sources. In doing so, we effectively removed another place where the user needed to re-enter data. This solved half of the problem. Syncing from third parties eliminated the pain of using our tools but didn't help the pain of syncing to third parties. I brainstormed with our engineers to see what else we could do about this. We concocted, through experimentation, a feature to push any training metric or zone updates to the APIs that could ingest it. For one, manual zone changes on our end update the riders' Strava's and Training Peaks. More impactful, though, is how we could act as the link from a third-party source to update every other connected platform. By doing so, we weren't just alleviating the pains of using our product but solving for a painful flow across every tool in the rider's bag. Our learnings have since become a driving principle around new feature development on the Karoo– Lean into the best-in-class tools third parties provide and build the glue that facilitates better experiences between them.
Solving for insight: Understanding Workout Adaptations
Figuring out how to understand the impact of workouts each day proved to be one of the most complex challenges of this project. Only after diving into endurance training on my own time and using a variety of platforms did I deduce the most crucial info. For most scenarios, any workout targets one biological adaptation at a time. Remember, zones are meant to break down intensity into simple generalized categories. These categories usually align with physical adaptations at each intensity level. The currently accepted practice is that workouts are most effective when targeting only one biological adaptation at a time. This could be rewritten as: The most effective workouts focus on only one training zone at a time. You will find very few workouts that try to build base endurance (Zone 1/2) while including high intensities for sprints (Zone 5). Training plans are made based on changing the cumulative time in each training zone over weeks, months, or seasons. But not by changing zones within a workout session.
Focusing on one zone at a time isn't a new idea. This principle helps algorithmically-driven training platforms like TrainerRoad, Xert, or Zwift ground each workout with a clear output. A few standard metrics are used as well to indicate the training adaptations each workout produces:
Read more about the algorithms and science behind these metrics→
For our power users, those actively competing and following these metrics, it was clear that this information had to be quick to find when planning their next day or week. This may be rocket science for the individuals dipping their toes into structured training. How, then, can we convey the impact of a workout to that rider? Focus. As only one zone is the focus of each ride, that zone should be emphasized in each workout's ride summary. Since my zone configuration designs allowed for the input of zone labels, this information could propagate wherever zones are relevant. In talking with users, I found that "Focus" is a helpful metric in their journey. It's useful when planning to understand why a workout is effective. It's beneficial to find the appropriate workout for that day on-device. It's helpful in-ride to confirm they are following the plan (focus works even without a workout file loaded). After the ride, it's helpful to understand that their zone distribution was accurate that day. It's helpful in their post-ride analysis tools, like the dashboard, to figure out if they need to adapt their following workouts to fit.
Solving for insight: Real World Interruptions
You'll notice that a new concern becomes apparent in scenarios after ride planning– compliance. Once a rider understands why they are doing a workout, their next set of uncertainties stems from whether they are following the workout to plan. Some training tools provide similar concepts upon post-ride review, but my research showed this is also essential. This is particularly important in the real world, where interruptions are common, and compensating for interruptions can be difficult. So, I adapted principles of similar metrics found outside of the ride and redesigned them to be user-friendly, both in and out. The resulting metric takes the ongoing ride's cumulative TSS score as a percentage of the planned workout's total TSS. Compliance is measured in percentage. Not only is compliance described numerically, but we found that color-coding compliance is helpful for quickly ingesting the information.
Green Completed TSS is within +- 20% of planned TSS
Yellow Completed TSS is within +- 50% of planned TSS
Orange Completed TSS is within +- 100% of planned TSS
Red Completed TSS is more than +- 100% of planned TSS
Grey No associated workout
Color is effective for skimming workout summaries and analysis but becomes critical in-ride. On the bike, the Karoo has limited screen real estate, and small typography doesn't lend itself to safety. Instead, the use of compliance as a metric mainly works by color. Through conversations with riders, I found two helpful touchpoints during the ride. The first is to provide compliance as a standalone data field, which helps riders gauge whether or not they need to keep riding. This is helpful when it comes to real-world interruptions. The second is to provide compliance on an interval-by-interval basis. Once the next interval starts, riders find it helpful to see if they completed the previous one as prescribed. They can adjust future intervals to compensate as they see fit if needed. After a workout, riders can see what percentage of intervals were completed on target. The suite of compliance tools throughout the Hammerhead interfaces allows riders to have a standard metric followed through from ride planning to the workout to the post-ride analysis. It breaks down the complexities of day-to-day training into simple metrics.
Solving for insights: In-ride Coaching Failures Coach Cues Setup Confusion
It was clear to us that the workout page was a UX failure. We heard a need for better configurability, legibility, text cues support, and better integration into their preferred flows. I went about by exploring two directions. 1. I rebuilt the workout page with customization and legibility. We quickly found limitations with this approach, both from a usability perspective and due to developer constraints. So, I pursued option 2: Integrate the workout player into Karoo's existing "drawer" paradigm. The drawer was an interaction pattern we developed after the initial workout page. The drawer allows for contextually relevant ride data to appear when needed. Unlike the workout page, drawer pages could notify users of ride-critical events from any data page. For example, a turn-by-turn notification can occur in the drawer while you are actively following the map. The non-persistent nature of workouts during a ride lent itself well to the drawer paradigm.
The resulting designs exist in three flavors– 1. The pre-workout state, 2. The in-workout state, and 3. the post-workout state. One of the tricky requirements we set was that workouts must be controlled independently of the recorded ride itself. This was one of the few positives of our existing workout page, and riders requested we maintain it. Once a workout is loaded, the drawer gains a new Workout Tab. Typically, when a rider triggers a lap manually on the Karoo, a Lap Tab opens. Workouts effectively replace the lap tab, as workout intervals secretly start new laps on the back end. In its initial state, the workout tab reads the loaded workout and offers a play button to initiate the workout. After a count-in, the drawer switches to its in-ride state. The drawer in this state shows the remaining duration of the ongoing interval and relevant zone target information. Entering a new interval, the drawer gives a heads-up of the upcoming intensity target. This gives the rider time to prepare, speed up, or slow down. Immediately after the next interval triggers, the upcoming interval target changes to a short-form summary of the previous interval. The only information conveyed here is whether or not they completed the interval to spec, also known as compliance.
The workout drawer's flow "in interval," "upcoming interval," "previous interval summary," and back to "in the interval" repeats until the workout has ended. Once completed, the workout drawer shows a high-level summary of the rider's compliance with the workout. At any point during the workout, the rider can pull open the drawer for a richer experience. This pattern, typical across all drawer tab types, allows that drawer to utilize the entire screen's real estate. In the case of the workout tab, the user sees the same interval progress, as well as a table of all past and upcoming intervals. For previously completed intervals, the table shows compliance with the target. This historical information can be used to compensate for upcoming intervals. The workout drawer accommodates other edge cases, like lap-triggered intervals, distance-based intervals, and workout paused states.
Knowing legibility was a concern, I created several new visualizations to live in the drawer. Knowing the duration remaining in an interval is half what riders need to follow it. The other key data point is their output concerning the target. Should they go harder, stay steady, or stay at that intensity? We needed these designs to be legible, easy to digest, and customizable for power users. Power users strongly prefer raw numerical fields, while some prefer simplified graphics to follow their workouts. I iterated over dozens of new data visualizations to convey interval targets. Our final design offers two visualizations based on user preference. 1. A glanceable bar that visually conveys the user's current intensity, average intensity for the interval, and whether or not they are in the zone. 2. A dual data field configuration that closely matches existing data fields on the Karoo and is similar to the previous workout page. We knew we had to provide replacement interfaces to move away from the workout page model.
Solving for insights: In-ride Coaching Failures Setup Confusion
We had to replace its unique data fields elsewhere to phase out the workout drawer. The workout drawer acts as a "minimum viable workout player," providing what a rider needs to follow workouts and no more. But, in doing so, it doesn't give power users the ability to configure data fields to their hearts' desire. To double down on configurability, I rebuilt the workout page data fields and visualizations into new fields compatible with standard data pages. We created several new generic data fields:
In doing this exercise, I also explored rethinking the design language of in-ride data fields on Karoo. Our existing fields needed to be updated to avoid poor labeling and clutter to guarantee legibility. I also attempted to aesthetically improve them to make our UI feel more "designed." The resulting designs use highly legible labels where needed, forgo labels where not, and capitalize on our device's industry-leading display. To give credit where credit is due, the Teenage Engineering OP-1's interface was my reference as I designed these visuals.
Solving for insight: Workout Planning Pains
The dashboard's neglected interface needed love to tie together the overall Hammerhead workout ecosystem. The behavior of athletes using their phones and computers the day before a workout helped us uncover how some wanted more support on the dashboard. The dashboard's workout "card" elements had poorly rendered workout structure graphs, so I naturally updated them with the new visualization design language. I then created a workout detail page, adding more detailed workout information. This page sits between the workout card (high-level information, very little information) and the original training plan software (low-level information, vast amounts of information). Sitting between the two and providing just the required information for ride planning, the workout detail page becomes a sticky touchpoint for the end user.
Within the workout details page, I tested all types of data with users to find the most important for quick comprehension. I found that an interactive workout chart best-conveyed structure at first glance. The chart was rated highly as an essential component of their workout details. Below, I split the page's layout in two. The left column holds workout notes from the coaches and an interval-by-interval breakdown. To the right, I put workout metadata and derived summary data. Together, the layout provides everything most riders need. I tested more or less information, but this combination proved efficient. If someone needs more granular details on the workout, the metadata box includes a direct link to the original workout file on the workout provider's website. Remember the lesson from third-party sync? Lean into the best-in-class tools third parties provide and build the glue that facilitates better experiences between them.
The riders visiting the dashboard the night before a ride sometimes review past workouts during this time. My thinking changed regarding the workout journey once I saw how it's a loop, not a linear flow. The results of one workout and their compliance with it feed into the next workout that the rider does. This behavior proved that certain workout elements had to exist in our post-ride analysis tools. Focus, compliance, and time in zone distributions are key data points that I work out on this analysis page. The complete dashboard now acts as a convenient single location to complete the pre and post-workout flows.
TrainerRoad Integrations – Since developing our updated workout ecosystem, I've had the privilege to lead the design collaboration with TrainerRoad on deep integrations. Our research showed how TrainerRoad is seen as one of the best workout platforms in the industry, so we applied our principle of working with third parties where applicable.
Control Center Updates – To avoid breaking down the hardware button paradigm I wrote about in my case study on the control center, I designed all of the workout controls to maintain accessibility, even in the rain or with gloves on.
Text Cues – I designed a system leveraging our existing in-ride message drawer tab to solve the need for text-cue support.
Post-ride Perceived Exertion – After a ride, we (optionally) give users a simple form rating of how hard the workout was. The response feeds into third parties like Strava as RPE (Rate of perceived exertion).
Scheduled Workouts – I built a flow that allows pre-scheduled workouts to automatically populate on the rider's Karoo, so they no longer have to menu dive to follow their workout.
The above designs have been tested, iterated upon, and retested to validate effectiveness. You can read more about our design validation process in my case study on the control center. This initiative's prototype testing with Maze and strategic survey questions helped me discover design vulnerabilities and reduce our risk developing each feature. When shown the entire workout ecosystem, survey respondents rated their satisfaction with new designs highly. The software suite now ranks much higher than our competitors at satisfying workout needs. Explore the insights from one of my Maze tests below:
I applaud you if you've made it this far in my write-up. I set out to write a brief overview of the design initiative spanning multiple quarters, but I found workouts to be a topic difficult to discuss without deeper conversation. I could write a case study for any subject I wrote about here. If you have any questions or want to dive into the science of endurance training, please reach out. The Karoo's new workout ecosystem is set to release in 2024.
Grayson Pollock acted as PM for this design initiative.
Will Tribble collaborated with me in the JTBD research that led to this initiative.
Training for the Uphill Athlete – The book I'm building my current training plan on.
Normalized Power, Intensity Factor, and Training Stress Score – A brief description of the metrics mentioned earlier. Author Dr. Andrew Coggan, Ph.D., is one of the most impactful endurance sports scientists and has invented many of the principles world-class athletes use today.
The Trainer Road Blog – A great resource to learn concepts used across training platforms.
Dylan Johnson's Youtube – Dylan is a self-coached world-class cyclist. He produces videos breaking down the most up-to-date research and applies it to endurance training.