Under the Radar

68: Overcast 3


00:00:00   Welcome to Under the Radar, a show about independent iOS app development.

00:00:04   I'm Marco Arment.

00:00:05   And I'm David Smith. Under the Radar is never longer than 30 minutes, so let's get started.

00:00:09   So, I released Overcast 3 finally.

00:00:12   Yay!

00:00:14   And we're going to talk about that a little bit.

00:00:16   Hope you don't mind everybody, this is going to be self-promotional, but that's fine.

00:00:20   The luxury of doing a podcast about iOS apps as iOS app makers is that when either of us launches a major new app,

00:00:27   we get to talk about it on our show.

00:00:29   Sure. And the reality too is, the whole point of the show is to, at least in my mind, is to encourage and motivate people to ship and make apps and release them.

00:00:42   And the big celebration at the end is the release.

00:00:45   And so, it's like, of course we have to talk about it.

00:00:47   That's the exciting part.

00:00:48   If you did everything up to, but they never released anything, it wouldn't make any sense.

00:00:54   So I think it's something to be ashamed of. It is an exciting, awesome part of development that when we get to the end,

00:01:00   we can show the world what we did, you've been toiling away for months and months on this update.

00:01:06   And so, to finally be able to show it to the world and proudly say, "Hey look, I made this cool thing!"

00:01:11   That's really cool.

00:01:12   Thanks.

00:01:13   Yeah, and it's a huge update in how much has changed, especially at the code level.

00:01:21   There's tons of code that has changed.

00:01:23   But it's kind of weird because the feature list of what's new in 3.0 is shockingly short for the amount of work that went into it.

00:01:32   It's basically like new Q features and a new watch app that does actually a little bit less than the old one,

00:01:39   but it's much faster and much better and has a very basic complication.

00:01:44   But that's about it.

00:01:46   The bullet point features of what has been added is very little.

00:01:52   Most of the changes were refining and rethinking and redesigning the UI basics of the app.

00:01:59   And a lot of that was just deciding what to do and doing it a little differently.

00:02:03   A lot of that was long hours spent hacking away at UI table view, as iOS developers often fall into traps similar to that.

00:02:14   And so there was a lot that took a long time, and the result of it is just better, but it's hard to sell it as a bullet point list.

00:02:27   So it's a little bit of an odd update to talk about or promote.

00:02:32   And I think too that that's the reality of a mature piece of software.

00:02:39   In many ways I think it's probably a good thing that you aren't looking at a major update has to have this 20 bullet long checklist of all these crazy features that you're adding and all these modes and things.

00:02:54   That speaks to a type of development that, as much as sometimes we talk about, "Oh, back in the good old days with paid updates and all that type of business model."

00:03:06   One of the advantages of the more modern business model where your goal is to have a large, engaged audience, and you get your revenue from that rather than from an upfront purchase, is you don't have to have this crazy long list of obvious features.

00:03:22   It can just be better, and that's better for all your customers who are already there.

00:03:27   They don't have to pay any extra to get that betterment, and the app just sort of evolves in that way, and it avoids you feeling like, "Oh man, I need to add a ribbon at the top of this, and I need to add these features and do all this stuff."

00:03:42   That would make 10% of your users a bit happier, but make the 90% of your users slightly happier, or make it slightly less approachable for them, or it may be a bit more overwhelming.

00:03:58   I think that's the natural sign of mature software, is that as it goes on, the actual new features start to get smaller and smaller and more incremental, and the nature of the change is just refinement.

00:04:14   It is just polishing it to a point that you're learning from your mistakes that may have been made before, or you're cleaning something up, or you're changing with fashions or times.

00:04:23   But the core app experience is the core app experience, and if anything, if you change that, if you change the core app experience dramatically, you're far more likely to alienate people than you are to attract more new customers.

00:04:38   If you think about it, we as developers always fall into the trap of "What can I add to this for the next big version? What else can I add?" It's all about adding, adding, adding when we're planning these things out.

00:04:53   But when you think about what are your actual threats for competition or disruption, usually the threats come from new things that actually do less than what you do, but just do it differently or better.

00:05:07   And so really, if you're trying to think about the future health of your business and remaining relevant and remaining competitive and remaining good in people's minds, I really do think there's a lot more value in just improving the app.

00:05:22   And sometimes that comes through feature additions. I did add the Q system, which is not like a full-blown re-architecting of the app to be Q-oriented like what Castro does.

00:05:34   It's more like adding an up next feature, which people have been requesting for a very long time because iTunes does it and some other podcast apps do that kind of style of things.

00:05:46   People have asked for that for a while. So there were some new features around that and that's because, it's not because I wanted something big to add for the update, it's that the app was actually worse for a lot of people without this feature.

00:06:00   And it wasn't that much complexity in the interface to add it. So the cost of it was fairly low. I had to make a few backend changes, but for the most part, the cost was fairly low, the downsides were low, and the app was better because of it.

00:06:13   But that's why I added it. It wasn't because I needed some big headlining features for 3.0, because in fact I pretty much have no headlining features for 3.0, except that the UI is nicer, but that's kind of hard to advertise and most people don't care.

00:06:29   So yeah, but I do think again, it's worth thinking about, it is important to keep improving your app, but that doesn't necessarily mean adding to it. In fact, if you look around in my category in podcast apps, there are successful podcast apps that span the spectrum from very few features to total kitchen sink, everything.

00:06:53   You can do everything. There's like 15 pages of settings and a million check boxes and everything, so you can customize it to be exactly what you want it to be.

00:07:01   And I get requests to go in that direction. I get lots of them. But I also get a lot of people who appreciate it for its simplicity. And so I have to, as the leader of this software project, I have to balance what the users are actually wanting and asking for, and what actually succeeds and fails,

00:07:20   and what I can and can't do, and what I can and can't maintain. And for me, it's kind of keeping the feature set focused and not doing the kitchen sink approach, because not only do I not want to, but I think the resulting app would be less appealing to my customers, and to the type of customers I tend to attract as new customers.

00:07:39   It would be less appealing to them than the kitchen sink approach. So really, Overcast is fairly feature complete at this point. That's not to say I'm never going to add new features. There are lots of things I could still do that I think wouldn't ruin it, and that are the type of thing I should do.

00:07:57   But I think they're all pretty small things. I don't think there's a lot of big things left that would really dramatically be a huge headlining feature of a new release. There's very little of that left, because ultimately, it's a podcast app. People use it to play podcasts and manage what they're listening to.

00:08:17   So yes, there are big things I could do, but you hit diminishing returns pretty quickly, and I've seen great success. I've had a great response. I've had great sales boosts from this release that just makes the core stuff better, rather than adding a bunch of stuff.

00:08:34   So that's probably going to be more the direction I go in the future.

00:08:50   The other thing I would say to the team is that Overcast is, in many ways, you. It is built for the way that you think about podcasts. It is built for your preferences. Thankfully, the way that you think about podcasts is the way that other people think about podcasts, too.

00:09:10   There's a nice overlap between those two things, which you have an audience for. But the advantage of that is, if you lose that, if you end up just implementing everything that someone asks for, it loses that sense of personality or of vision or direction.

00:09:30   I struggle with this, too, sometimes. You get feedback, and you get some very earnest people who love the app, but they're like, "Oh, I wish it did this. I wish it went in this other direction. I wish it could do these things."

00:09:46   I look at that, and the engineer in me is like, "Ooh, there's a problem that I could solve." I jump into it like, "Ooh, how would I do that? How would I implement that? How could I make that work?"

00:10:01   The discipline of instead saying, "Does that actually fit with the app that I want to end up with and ship? Would I regret ultimately implementing this feature?"

00:10:16   Honestly, a question I've started asking myself now when I'm implementing something is, I try and have the thought experiment of, "How would I regret this in the future? What regrets would I have for implementing this?"

00:10:29   If I can try and put myself into the future and say, "What kind of things am I going to regret? Am I going to regret the code? Is it a time sink for me that I have to see? Is there some new bit of busy work that I'm going to have to maintain?

00:10:44   Or I'm just not going to like it? I'm going to think it's ugly?" Whatever that is, if I can try and experience that regret in the present, it's a very good way to reduce my desire to actually go down there.

00:11:00   I think as a result, it's a good barrier against just throwing features in because they sound cool or because they sound interesting.

00:11:09   Yeah, exactly. So one other thing that I wanted to talk to you about as you've been making these changes is the nature of the changes that you've been making.

00:11:19   And you were kind enough to have put me on the beta for this, and so I've been seeing it as it's been developing and changing over time.

00:11:27   The awkwardness when an app is this mature and has this kind of sustained vision that Overcast has. I've used Overcast almost every day for however long it's been out for.

00:11:44   And honestly, even before that, probably, when I saw some earlier versions of it. But it's an app that I know so well and I have such muscle memory for that it's awkward, potentially, or maybe even just uncomfortable.

00:12:01   When you were making changes that I think, in aggregate, make the app better and make it more accessible and straightforward, but changed some of the paths that I had learned and the things that I had developed with.

00:12:19   And I know we've talked a lot about this, and I think it's an interesting thing to discuss, though. It's a really interesting balance that I think we have to find when we have an app that has this established audience that knows how to do something.

00:12:31   And if you think of a better way to do that thing. Like, for example, right now, you changed the location of the now-playing screen.

00:12:42   So when you're playing a podcast, that used to be pushed onto the navigation stack. And so I would always dismiss it by just doing the regular edge swipe from the left to the right of the screen.

00:12:57   And now, the now-playing screen is sort of a modal sheet that comes up from the bottom. And initially, you dismissed it by swiping down.

00:13:10   And that subtle change, that little--all that's really changing is the direction of my thumb moving. But I remember in my first experience with the app, it was infuriating.

00:13:22   Like, in an actual way, because it made the app feel slightly broken to me, or that I was slightly broken. Like, why isn't it doing what I'm doing? I've swiped back hundreds of times in the app, and now it's not doing it.

00:13:36   And so I know you ended up adding a little affordance for me in this particular case. But I wonder if you could talk a little bit through your thought process, as you kind of are making these changes to something that people have a level of comfort with,

00:13:51   but then still making it--it's important to make those changes if you really think it's better, but at the same time, keeping it comfortable for the existing users.

00:14:01   Oh yeah. I mean, so basically, my goal with this UI redesign overall, my goal was to eliminate all the problems and design failures that I've seen over the last two years of this design.

00:14:18   From customer feedback, and from people using it and everything else. Like, there were lots of parts of the design that people found confusing, or features that they never discovered, because they were hidden in some weird way, or they weren't obvious enough visually.

00:14:30   And there were also just like, the old design had limited room for expansion, for adding things like a cue button everywhere on the episodes, and there were lots of weird little downsides to it.

00:14:43   And it had grown, it had evolved kind of haphazardly since it was released in 2014, which was designed for iOS 7 and the iPhone 5S.

00:14:54   And now, we had a new world of bigger phones come out since then, and I added things like chapters, and there were all sorts of things that I had to add to the interface over time, that kind of felt bolted onto the old design, in addition to all the built-in design failures it already had.

00:15:10   Again, like features people couldn't find reliably, or things like that.

00:15:14   And so, I wanted to change some of the fundamentals. So things like the Now Playing being a slide-up thing, and probably the most controversial change, which I saw coming, was the Now Two-Stage selection process, when you want to play an episode.

00:15:28   So, before you tap on the cell, it would play immediately, now you tap on the cell, and it expands into a selected state with buttons, and one of those buttons is Play.

00:15:36   And, you know, very similar to Tweetbot, if you've seen that. And so, I knew that those two big changes would be controversial for people, because you're right, when you change people's muscle memory, it's very similar, but on a much smaller scale, very similar to when Apple changed the lock screen behavior in, was it iOS 10 that did that, or 9?

00:15:58   It was iOS 10, I think. Yeah, so when they changed the lock screen behavior, so now you kind of have to, like, you know, touch ID, unlock, then push, like, you know, they changed it subtly, but in a way that everyone got really mad at for a couple of weeks.

00:16:10   Because they changed the way their phone unlocks, and that's a, you know, like, if you got used to it quickly, then you moved on, it was fine. But, you know, a lot of people don't get used to it quickly, or were very mad for a brief time.

00:16:23   Or switched the accessibility setting back to the old way, and just resisted as long as they can.

00:16:31   Exactly. So, you know, I knew I would be facing some of that. So, basically what I did was, you know, try to add affordances, like you said, I have the edge swipe gesture still works, even though visually it makes no sense.

00:16:43   And, like, you can still swipe in from the edge, you know, inside in a horizontal motion, as the card dismisses itself vertically down. So, the animation doesn't make sense compared to what you're doing, but the muscle memory does.

00:16:57   And, of course, you can also dismiss it by the way it does make sense, by dragging it down. So that was one thing, because that was relatively easy to add, and didn't really have a lot of downsides.

00:17:06   There's very few cases where that interferes with a legitimate gesture that people are trying to do otherwise. It was a little tricky on the now playing screen, but other things, like other screens that dismiss that way, it's kind of a no brainer.

00:17:20   And then, the double tapping the cell, you know, like basically tap, and then tap a play button, rather than just tap the cell to play.

00:17:27   That was a very controversial change so far, but most people are okay with it. And that's something that it's harder to add an affordance for that.

00:17:38   Because if you tap the cell, and it immediately plays, then I have nowhere to put all these buttons.

00:17:43   And, it's kind of like, that would kind of be like designing a whole third interface. I've had a couple people request a preference for that, but that's kind of not my style for requesting a preference to change the entire design back to the old way.

00:17:56   That would also kind of be a maintenance nightmare. So, I'm probably going to leave it exactly as is, with no changes.

00:18:02   Some people requested like, "Oh, what if you do like a double tap, or a long press, or some other kind of like advanced, undiscoverable gesture to immediately jump into a play screen?"

00:18:13   And, I'm going to play with that. I might do that, but I'm not kind of on the fence, because that doesn't seem like it's a great solution. I seem like nobody would ever find that, except accidentally, which would not be good. I don't know. It doesn't sound like a great solution.

00:18:29   But, the reality is, you're not actually solving the problem they're having, really. Because, either way, they have to learn a new gesture. Either way, they're going to have to get used to this new thing. And, I think there's a trap in trying to keep fighting the last war.

00:18:47   If you're not going to go back to it being one tap, then this is the new version. This is how it works. Rather than creating a new affordance on top that's something else they have to learn, if the old version isn't going to work, if that old muscle memory of "I just tap, and it plays" is never going to be there,

00:19:06   then going down too many other roads of splitting this out so that, "Oh, now you can play by tapping and then tapping the play button." Or, you can swipe left across the cell, or you can long press on it, or you can do all these other things.

00:19:21   You're just making it more complicated, but you're not actually addressing the feeling they have as, "I liked it better when I could just tap it to play."

00:19:28   Exactly. I knew all this was going to happen, but I had to be confident in my own vision here that, even though a few people, relatively speaking, a small percentage of the user base would be mad about these changes forever, because that's true of anything I ever changed,

00:19:47   I knew this was the right move because the whole reason I was doing it was because of the hundreds or thousands of people over time for whom this design has failed in some way.

00:19:59   Again, whether it's features they can't find, or just erroneous input, or misunderstood features, I've lived with the fundamental design of the previous version for two years now.

00:20:11   I know very well how it fails, and so it was more important to me to fix the design for everyone than to try to please the few people who were going to be mad that something changed.

00:20:23   Because if you're going to be mad at every change, you probably shouldn't use any software in the modern age, because it's always changing.

00:20:31   And that's the worst customer to try and please, is the one who's never going to be satisfied. It's far better to please the customer who will be delighted by the affordance that you gave them, that now makes them feel like they're empowered to use the app in a more capable way.

00:20:46   That now, this thing that they're like, "Wait, I can do this cool feature? That's awesome! I didn't know that existed!"

00:20:52   It's an empowering feeling for that person, rather than, you're never going to make the person happy who just is never happy.

00:20:59   Exactly. We are sponsored this week by Dice.com.

00:21:03   Dice has been helping tech professionals advance their careers for more than 20 years.

00:21:08   They have the tools and the insights needed to give you an edge.

00:21:11   The Dice Careers mobile app is the premier tool to manage your tech career from anywhere.

00:21:16   With thousands of positions from top companies, you will find exactly what you're looking for.

00:21:20   Wondering what's next in your career?

00:21:22   Dice's new Career Pathing tool will help you learn about new roles based on your job title and skills.

00:21:28   They'll even show you which skills you'll need to make the move.

00:21:31   And the Dice Careers Market Value Calculator allows you to understand what your skills are worth.

00:21:36   You can discover your market value based not only on your job title and location, but based on your specific skill set.

00:21:42   Don't just look for a job, manage your tech career with Dice.

00:21:46   Download the Dice mobile app and learn more at dice.com/undertheradar.

00:21:50   Once again, download the Dice mobile app and learn more at dice.com/undertheradar.

00:21:56   Our thanks to Dice for sponsoring this show and all of Relay FM.

00:22:01   So the other change that you made that has nothing to do with muscle memory or UI design is that you switched from using external advertising and instead you're kind of going the in-house, I'm sure there's a fancy term, like boutique advertising.

00:22:20   I'm sure there's some fancy term for it.

00:22:23   You're moving away from using an external ad vendor, and if I remember right, you also are moving away from an external analytics provider.

00:22:32   If I remember right, you took Fabric out of the app.

00:22:36   It's an interesting change.

00:22:39   We've talked about this over the lifespan of Under the Radar where we used to have iAd and then iAd went away.

00:22:47   So then it's like, well, let's move over to like, then the biggest option seems to be to go to Google with their ads.

00:22:56   And now you're going sort of full circle back around and saying, actually, I'm just going to do something myself and try a totally different approach to monetization.

00:23:06   Yeah, basically.

00:23:07   I mean, the ads I had were fine but not great, and they weren't doing very well.

00:23:16   My tap-through rate was abysmal, and therefore the money I was making was pretty low for the number of impressions I was giving.

00:23:23   And that could be partly my fault with how I put them in the app, where I put them in the app, how they were designed.

00:23:29   So I could try to improve the tap-through rate, but ultimately I was happier just doing my own thing.

00:23:35   And I wrote in my big blog post a couple of political reasons why I'd rather not be relying on closed source code from other companies more than I have to.

00:23:45   And so I'm happier having it all just be my in-house stuff.

00:23:52   And because they weren't making a lot of money for me before, it actually gives me the freedom to experiment, to say, all right, well, I don't need to replace it with that much money, so let me just do my own thing and see if I can.

00:24:04   But the model of having ads and having subscriptions to remove them has succeeded.

00:24:10   Now I'm just working out the implementation details of what the ads are.

00:24:14   But ultimately ads fixed my problem of, you know, they don't make a lot of money themselves yet, but they drive more subscriptions.

00:24:22   And so I make more money from that than I did before, so now it's enough. Now it works.

00:24:26   So I'm happy with that now.

00:24:28   And if the ads end up taking off and being their own thing, even better.

00:24:32   As for the analytics, I did indeed remove Fabric, and I put in my own just basic reporting of pretty basic stats back to my server and some basic collections, so things like app version and OS version and stuff like that.

00:24:47   And then a couple of high-level things of where you add podcasts through, so how many podcast descriptions come from search, come from directory categories, come from ads, stuff like that.

00:25:00   So I have basic metrics like that, and I have the ability to say, like, you know, do you have the watch app installed and stuff like that.

00:25:07   And that's all to just kind of help me figure out where to direct my efforts.

00:25:11   And the main reason, you know, I had Fabric doing a lot more than that. I had it collecting things like output, like do you listen through the speaker or do you listen through headphones that are plugged in and stuff like that.

00:25:21   And that was all very nice to know for past feature things, like that's kind of what made me decide to do the custom speaker profile for Voice Boost, because I realized how many people were listening through the speaker.

00:25:32   And so when I have something specific in mind, all that data was great.

00:25:38   But what I found was that Fabric was sitting there collecting all this data for, you know, all the time, and I only, it was very rarely actionable data.

00:25:48   It was very rarely collecting data for a, like to try to answer a specific question I was asking, or data that once I saw it would show me the app in a whole new light.

00:25:59   Most of the data it was collecting was not important to me. It was not information I really needed, or it was not providing helpful, actionable conclusions.

00:26:08   And so I realized that while that level of collection might be more necessary for bigger companies or for people who aren't me, I found that what I, all I really needed was the very high level stuff that my own analytics could provide with one day of work.

00:26:24   Which is, as in like, you know, OS version, phone version of gross overview of whether a lot of people use a certain feature or whether almost nobody uses a certain feature.

00:26:33   Like, that's what I really want to know. And so integrating an entire package with its own closed source, Vigory, and its own huge web service that I'm transmitting data to, and then having to have all that in my privacy policy and everything else, it was just, I decided it wasn't worth the overhead anymore.

00:26:49   Yeah, and I think that there's definitely, I can definitely see where you're coming from with it. Like, I mean, at this point I'm continuing to use Google ads in my apps, and I think I still have Fabric in most of them as well.

00:27:03   But I see where you're coming from with it, and it's one of those things that I do kind of, I slightly envy the position of your ads weren't doing well, and so you have the flexibility to just decide what makes sense in a way that, so you always had the choice.

00:27:16   Like, I could pull them out, but if they're performing well, that's a much harder decision than when they're not.

00:27:22   And I think especially, I think the thing that has always made me the most nervous is, anytime I take a closed source library and add it into my app, that always just makes me feel bad.

00:27:38   The reality is, I have no idea what that code is doing, and I can make guests and be hopeful that they're doing responsible things, but at the same time, I have no way of really auditing that or knowing what they're doing.

00:27:56   I feel slightly better now that iOS is a bit more locked down in terms of the number of things that would pop up a privacy prompt that previously didn't.

00:28:08   You used to be able to scan someone's dress book without them having any idea, at least now that those types of things are locked down.

00:28:16   But I do envy the position of all the code in my app being, essentially it's the Apple SDKs, which are unavoidable, and then my own code.

00:28:29   That is a delightful thought, to get to that point, and so I'm very glad that this is working out for you, to be able to go back to that.

00:28:38   Hopefully it has benefits too, just in terms of stability and in terms of reliability, and you're not going to have any weird surprises down the road as a result.

00:28:48   - Yeah, 'cause you're also taking on, when you integrate somebody else's library, you're taking on the risk of what if it gets you rejected from App Review, or what if it does something really creepy that Apple is now gonna bid your app in with the rest of apps that do these creepy things 'cause your ad SDK did it.

00:29:04   I don't know, there's a lot of reasons why if the ads aren't really working for you, it is worth considering other options.

00:29:12   But your ads do work for you, and so it makes sense to keep it if it works, because no question, my method is going to make less money and is going to be harder to do, and it's gonna take more work, no question.

00:29:24   So I guess we'll see how it goes. Ultimately though, I was just really happy to uncheck that IDFA box on submission. I was really happy to finally say nope, I don't use that anymore, thank you.

00:29:35   - Yeah, it's perfect.

00:29:36   - Anyway, we're out of time this week. Thank you everybody for listening, and we'll talk to you next week.

00:29:40   - Bye.