Slopes Diaries #31: Saying Yes

Slopes Diaries is my ongoing journey to turn my indie app into a more sustainable part of my business. First time reading? Catch up on the journey so far.

What is Slopes? Think Nike+, Runkeeper, Strava, MapMyRun, etc for skiers and snowboarders.

One of the qualities I attribute my success with Slopes is my ability to keep the product focused. I have a pretty strong set of opinions on what I want Slopes to be, and I'm good at saying no to things that don't fit that vision (even if they would be well-received by users and still fall within what an app like Slopes could be).

I tend to, instead, try to focus on making the experience of using Slopes better. Often this might mean a new new feature (like adding the ability to trim time off their recorded day for cases of leaving Slopes running while driving away in their car), or sometimes it means revisiting a feature to improve it (like rewriting said trimmer and turning it into a full lift & run editor).

Better, not just more.

I attribute some measure of the success I've seen to this focus because it has helped me keep things moving at a good clip. My future-self isn't bogged down with a lot of maintenance work caused by rushing to add a bunch of features to Slopes just to make it be everything for everyone. Features are more likely to build on top of one another, vs many different modules of features with a wider surface area to tend to.

Saying no and keeping focus certainly isn't any new insight into making a great product, though. People have written ad nauseam about it, heck Apple even made a video. I'm not here to write about that today.

I instead want to talk about two recent exceptions to this focus / insistence on saying no, what lead me to say yes, and how sometimes a single yes compounds into multiple yesses.

Skiing and snowboarding is a very social sport, with many people riding with a group of friends or with their family. Some are competitive with it, some just enjoy the company when riding a 10min lift back to the top, and some are parents sharing the hobby they love with their kids. Personally when I look back at my various trips to ski resorts I remember who I was with just as much as I remember where I went.

At the same time, when it comes to product development, I am very anti social-features. They're too often thinly-veiled methods to increase "engagement" and "retention" within an app, and hopefully help the app "go viral" at the same time. Products will add these social features to chase those metrics, copying the approaches that big social networks do (activity feeds, comments, likes, etc), but often don't put the same amount of thought into how they'll cultivate, nurture, and safe-guard the community that will take root on their platform.

Chasing those metrics means every decision about a social feature will often be discussed in the lens of those metrics alone. Want to add a feature that makes it harder to harass other users, but in doing so it'll make using the platform a bit "harder" to use and decrease engagement by 2.5%? Good luck getting that approved.

So yeah, I've been saying no to social for a long time, even though it is a key aspect, a potential tent-pole feature even, of my niche. I just didn't want to fall into the tap of checking off the social checkbox like any other app. I needed to do it right.

It was an interesting and very unrelated series of yesses that ultimately lead me to a compelling enough way to do social that I'd consider it "right."

First chain of yesses was driven by a focus on purposely minimizing the social graph of my users. I always aim to have Slopes mirror the actual activity of skiing as much as I can, and when skiing you're 98% focused on the other people you came to ride with, not all the other randos on the mountain. I wanted to keep the social graph as limited to IRL (in real life friends) as much as possible, which meant not investing in engagement-rich social features like leaderboards at each mountain. This meant no public profiles, no "find me on Slopes" username or email lookups, etc.

I was focused on encouraging friends, not followers.

The previous yes that pushed me over the edge on this first point was how I ended up tackling family sharing (see Slopes Diaries #27): deep links. With deep links I could rely on users' existing social graphs (iMessages, WhatsApp, Facebook Messenger) to "find" each other, encouraging only IRL or at least closer connections. This extra step also lets me avoid having to deal with blocking, and potential for bots / spammers to abuse Slopes as a way to fish.

But as nice as that is, it still felt a little clunky, especially if you just met someone on the mountain and didn't exchange email / phone numbers yet. As much as I wasn't chasing high conversion numbers for friending people on Slopes, I did want to make it as painless as possible with people you were riding with. I was originally thinking of a QR code you could scan, a la Snapchat, but while natural to a lot of people now a days QR codes are too easy to cross-post on social media to get randos to friend you.

That lead me to think about AirDrop as an avenue for sharing said links, but sadly not everyone has AirDrop on (or it is set to contact only), and worse AirDrop hasn't gone mainstream either and is still some wierd technological wizardry to many. So I came up with the next best thing: shamelessly copy AirDrop with a cross-platform solution. I'm adding a bluetooth low energy discovery process to let people friend each other just by proximity, assuming they both open the "Add Friend" dialog at the same time. This makes it even easier to friend the people you know when you're all riding together already, and keeps the deep link as a fallback.

The second chain was based on what I wanted to enable a Slopes social graph to do. Like I said above, while there's a vocal minority of users that would love a leaderboard-per-resort, that's not what I wanted to encourage ("King of the Hill" marketing opportunity aside). I'm not looking to enable hyper-competitive behaviors within Slopes, I want to keep it more casual.

When I was riding a gondola with a family of soon-to-be Slopes fans they were talking about an older app they were using that has since been abandoned. The wife spoke of her love for using that app's social / stat features to measure her own progress season over season. That conversation really stuck with me and was the beginning of the erosion of the stubbornness against social. I realized it wasn't just for leaderboards and activity feeds (that vocal minority skewed my opinion on what the feature should be), but rather for progression and a little friendly competition within a small group.

By the end of the week I had launched a season-over-season comparison feature to start to let users get a feel for their progress. And saying yes to that comparison feature is what started to open the door for me on social – not so much focusing on keeping everyone up to date on every activity recorded (see: every fitness platform) or leaderboards, but rather the same small-scale comparisons you'd do over some beer after a long day.

Data I learned over the summer backed this up this path, too. Turns out 48% of users use Slopes to compare their stats to someone else. People are already doing it; it wasn't just a minority, so I just need to make that experience better.

(I might even try to tackle a bit of that mountain-scale comparison itch by reporting what percentile of a given stat you're in for that mountain, instead of a given rank for people to chase, but that isn't final yet.)

The third, and last series of yesses, lead up to the killer feature that made social click as an obvious feature that would improve the app. So when I launched the virtual mountains feature years back I'd show your location on the 3d mountain as you browsed through your day, a little generic indicator that looked like a pointer (yes: virtual mountains). Half a year later I had the random idea to use someone's avatar (a previous yes to: sync + account) as that marker when using the new full-screen 3d view or AR (yes: new 3d view + AR). But it wasn't until months after that that I figured it would be an easy "oh, that's cool!" to switch over my 2d maps to also use said avatar instead of a generic dot (yes: easy win using avatars more to make maps feel more personal).

That long series of yesses building on each other over the last few years lead to this:

Lemmi just say, a bunch of avatars of your friends moving around the map like this has produced so many "oh, shit!" moments, almost as many as my use of 3d had back when I started Slopes.

I love how social is turning out because it takes the digital idea of "social" and relates it directly back to the analog equivalent. It isn't focused on shoe-horning the digital representations of "social" that we are all used to (feeds, likes, comments), but rather focuses on the ways skiers and riders think about their shared social experience and the social experiences they were already building on top of Slopes.

It does add some "more" to Slopes, but it focuses on taking the features (maps, the daily summaries, season stats) and making them better, adding some more context, all while avoiding the normal trappings of "social" that open the doors for online harassment.

But as excited as I am for this social aspect of Slopes taking shape, saying yes here had a ripple effect into another thing I had been saying no to for a long time.

More on that next time, though.