00:00:00 ◼ ► Welcome to Under the Radar, a show about independent iOS app development. I'm Marco Arment.
00:00:05 ◼ ► And I'm David Smith. Under the Radar is usually not longer than 30 minutes, so let's get started.
00:00:10 ◼ ► So it is the beginning of July as we are recording this, which is the summer is starting to kick off properly.
00:00:18 ◼ ► Things are, you know, kids are getting out of school. But something else exciting is also, we're right on the cusp of, which I think is very exciting.
00:00:26 ◼ ► If you've been listening to this show for a while, you know this has been a topic in the background of this show for a very long time.
00:00:35 ◼ ► We are getting close to when you are expected to be launching Overcast. So as you're recording this, this is probably the last episode, hopefully, fingers crossed, that we will record before it's actually the big redesign is out into the world.
00:00:48 ◼ ► And so I thought it would be a really exciting moment to just talk through this calm before the storm. Maybe not that calm, but this period.
00:01:00 ◼ ► Where you're in this place of this thing you've been working on for so long is getting so close and is getting almost ready, almost across the line and out into the world. And I think that's exciting. That's, I imagine, terrifying having gone through this myself. Like it was a very, it's a really tricky place to be, but it's also, you know, worth noting.
00:01:20 ◼ ► And I think it's interesting to talk about here because right now, you only have your expectations. You don't have the reality and hopefully the reality is awesome and great and awesome.
00:01:31 ◼ ► But maybe it isn't. Maybe it's more awesome than you imagine. Maybe it's worse than you imagine. Like you just don't know. But right now we all we have expectations. And I think that is useful to capture.
00:01:41 ◼ ► Because this is a really tentative, awkward time that I know as someone who's launched many a redesign and or be sort of a big update, you go through a lot of different phases and feelings around where you are with this, this feeling like I always feel like I go through the this ebb and flow between thinking that this big feature, this big redesign, this big whatever it is, is it going to be amazing.
00:02:03 ◼ ► It's going to be awesome. Wow, I can't wait to get this out. And then the next day, I'll think, Oh, no, I've made a terrible mistake. This is awful. Everyone's going to hate it. What have I done? And then the next day, I feel like it's awesome. And it goes back and forth and back and forth. And sometimes that happens moment by moment.
00:02:18 ◼ ► And so it's a really difficult time. So I don't know if you those are any of the feelings you're feeling. But those are the kind of feelings that I tend to feel when you're in the situation you find yourself in right now.
00:02:26 ◼ ► Oh, yeah, I'm feeling so, so many of those feelings. I mean, you know, so so where I am now is I intend to submit the final build to the App Store in about a week, and then hopefully launch, you know, sometime in the following week.
00:02:46 ◼ ► I don't know if I'm going to get rejected for various things. Everything has been rewritten in the entire UI. And so even little details like how the subscription flow works, like I expect, I'm planning for a rejection or two on that, just because I know they look at those things very carefully.
00:03:01 ◼ ► And it's very tricky and everything. So but I'm not expecting any any kind of controversial rejections or anything, just, you know, just little stuff like that. Sure. So I basically have a week left of work on it.
00:03:12 ◼ ► It has been for about a couple of weeks, it has been in kind of a small private friends only beta. And I'm getting a lot of great feedback. You're on the beta.
00:03:23 ◼ ► And so the point I'm at now is like I I've been writing this rewrite for about a year and a half. It is just about to ship it is just about to be, I guess done is kind of an overloaded term.
00:03:37 ◼ ► I'm not is software ever really done. It's not going to be done, but it's going to ship in a short time. And so I have all these expectations from myself. I have all the expectations from my customers.
00:03:51 ◼ ► And what's different this time like this. This has a lot of echoes of the overcast one point oh release, which was ten years ago in the sense that I did a small private beta with many of these same people.
00:04:05 ◼ ► I was on that. Yeah, you were on that too. And I got tons of great feedback on that and the app changed pretty substantially during that course of that beta.
00:04:14 ◼ ► The difference there is there are two big differences. Number one is that that beta had no deadline. I just it was it would ship when it was ready.
00:04:24 ◼ ► This one I have self imposed a deadline of the ten year anniversary of overcast. So I really want to hit that. I think I will hit it unless something really bad goes wrong, but I should probably hit that.
00:04:36 ◼ ► You know, so I have this kind of admittedly self imposed, but this firm deadline. And so I kind of I've had to do things like, you know, cut scope for some of the things I wanted I wanted to do like I'm not going to have every single idea or plan that I want to have in this initial release.
00:04:52 ◼ ► This release is going to be more like a new foundation that I'm building upon and I'm able to build upon much more quickly. And it's much more modern. It's much more stable. It's way faster, way more performant, especially with large collections.
00:05:05 ◼ ► Like there's all these great under the hood fixes. But most people are going to not see that. Obviously, most people are going to see the app looks and works a little bit differently.
00:05:17 ◼ ► Not radically differently, but it's a redesign. Controls are laid out differently. Certain screens move differently or flow the different way. Like the Now Playing screen doesn't have those horizontal swipes anymore. Now it's just buttons on the bottom that bring up sheets and modes and stuff.
00:05:30 ◼ ► So like there are different interactions, slightly different behaviors here and there, different looks here and there, but it's basically the same app. It's just a little bit refreshed for the modern age and for my current design feelings.
00:05:43 ◼ ► And so what the result – the other thing about this that's different from the 10 years ago beta is that I've had people using the app for 10 years. And they have gotten used to things being a certain way.
00:05:54 ◼ ► And this is not the first redesign by far. I think it's had like six or seven major designs over the course of 10 years. But it is a significant one and it's all going to happen at once when this launches in a short time.
00:06:07 ◼ ► And so I have to kind of balance here like how do I move the app forward and give it a modern design that I think it pretty significantly needs while not annoying or frustrating my existing user base?
00:06:24 ◼ ► This is a problem that we all face whenever we do major updates to an app or whenever we even just move controls around or change features or whatever. I know I'm going to have some people who are really mad about it.
00:06:34 ◼ ► I know I'm going to get a whole bunch of one-star reviews because I changed anything. And some of the changes I made I think will take people a little bit of getting used to.
00:06:42 ◼ ► Again, just things like muscle memory things like now instead of swiping over to a card to see the info screen, now you have to hit a button or tap the artwork.
00:06:52 ◼ ► There's other ways to do it that are actually, once you get used to it, in my opinion it's better but there's going to be that getting used to period. And I'm going to have to face probably a month of feedback that is probably not as good as I hope it would be just because it's some pretty substantial changes.
00:07:14 ◼ ► When I launched the beta a couple of weeks ago with the friends, I got almost no feedback. I would hear like, "Oh, this thing's broken. This thing, hey, where's this feature? This thing was confusing."
00:07:27 ◼ ► But almost nobody said anything good. And I was starting to freak out a little bit. I was starting to get a little nervous. I'm like, "Uh-oh." Because if this is how it's going to land with the public, I'm going to have a bit of a rough month.
00:07:42 ◼ ► As time has gone on, I think some of those doubts have passed. Obviously some of the feedback I have used to make it better and to ease some of the transitional burden. But a lot of it's just getting used to it.
00:07:55 ◼ ► And it's going to be weird for me to release something into the world that I think is really good but I know a lot of people will at least temporarily and maybe permanently think differently.
00:08:12 ◼ ► I went through a very similar thing. I did a massive, ground-up, SwiftUI redesign of Perimeter++ that I launched over a year ago now. It was a similar kind of thing. I had this old UI kit system that was starting to really feel its age and was slowing me down.
00:08:31 ◼ ► I couldn't get features. If I had an idea for something, it would take forever because I had to use this technology both that was a bit more cumbersome but also something I was less of an expert in because I was less experienced because most of my work had been in SwiftUI.
00:08:44 ◼ ► And so I did this big redesign. And I think the thing that I went into that with was this perspective of what I was trying to do was be as respectful of what the user's developed expertise was up to this point.
00:09:02 ◼ ► I tried very hard to not change things for changes' sake, at least at the start. I tried to keep a lot of muscle memory things as similar as I could just to try and avoid the...
00:09:18 ◼ ► Fundamentally, if someone is using the design and it's a thoughtful design and it's built in a reasonable way, eventually people will get used to it and come to develop that expertise and develop the affection and muscle memory and all the things that are positive around the design.
00:09:34 ◼ ► But the risk is always that they won't put in the time to develop that again, that they did it once and that they're just like, "Oh, you move this button in one place and I'm going to bounce out of the app and not come back." That was always my risk.
00:09:48 ◼ ► I felt like I needed to be very careful about not having that experience, at least as part of this initial big redesign. I've subsequently changed and moved and made some adjustments to where things are, but one of my philosophies I was doing was to try and be very slow with those changes.
00:10:09 ◼ ► But even still, trying with that philosophy, I still had a tremendous number of people who complain, and rightly so in some ways, that it's like, "Oh, I liked the old app better." It's the thing that you're going to hear, I'm sure, many, many times.
00:10:24 ◼ ► "I liked the old app better. Can I have the old app back?" Which is a tough thing to hear because if you spend all this time working on this thing, you think it's better, it's better in ways that you are very aware of.
00:10:36 ◼ ► There are things about it, some of them are very tangible. The new app is way faster in terms of a responsiveness perspective. There are so many fewer little hangs and hitches and issues like that that are amazing and fluid in a way that is definitely tangibly better.
00:10:54 ◼ ► But it's not necessarily that people are reacting in this pure, rational, pros/cons, do they balance out way. It's like anything that's different, "Ooh, I don't know what to do. Now you're making me think, and I have to think, and I don't want to think, so I don't like it."
00:11:14 ◼ ► And I suppose the tension is that we always want to make sure that ideally, people don't give the app enough time to be able to do that. And I hope that you'll get there. I think I've definitely noticed that to some degree in my experience where there are some choices you made that initially I was very skeptical of, but now having used the app for this beta period, I'm now used to and I like.
00:11:36 ◼ ► And whether they're better or not, some of them I think are better, some of them I like the old way better, but I can understand them maybe more now.
00:11:46 ◼ ► But that's obviously, I've spent the time to develop there, but it's a really tough road to find because I think the app is better. I think the biggest thing that's also challenging here is the betterness. In addition to the parts that are better now, it's the app's velocity of improvement going forward will be meaningfully better, meaningfully improved.
00:12:08 ◼ ► And the benefit of that you will reap into the future rather than something that you can reap now. The user won't really know why. The fact that it's going to six months from now, you're going to have been able to accomplish way more in terms of feature and functionality because SwiftUI and Blackbird and all of these fancy technologies that are now powering this will enable that.
00:12:33 ◼ ► That benefit won't manifest for a while. It's a tough thing, but I think it's just one of those, A, there's the wisdom of being aware that it's coming and not being surprised or hurt by it when it comes because that's just the reality.
00:12:48 ◼ ► And I think, too, understanding and just making sure that there aren't any things that we've done that are unnecessarily difficult, making the transition unnecessarily difficult, maybe, where it's change for changes' sake rather than changes for improvement's sake.
00:13:03 ◼ ► To some degree, there's only so much that you can do. I remember back when I did the previous redesign, which is still the topmost post on my blog, it turns out I kind of stopped blogging.
00:13:17 ◼ ► Yeah, a long time ago now. But when I did that previous redesign a couple of years back, the reaction was pretty positive overall, but I did get those people who were like, "I need the old one back."
00:13:30 ◼ ► And what was interesting, what helped me kind of contextualize the feedback also is one of the things I did was change the look pretty dramatically of playlists.
00:13:39 ◼ ► They used to just be these plain text cells, and then they became the kind of colorful ovals that they are in the current version.
00:13:45 ◼ ► Spoiler alert, they're becoming circles now. But anyway, it's going to look like Instagram Stories a little bit, the row of circles.
00:13:52 ◼ ► Anyway, what's interesting is that when I made that change, I did hear from a bunch of people who said, "The new playlist design is too big, and I can't fit as many on screen."
00:14:02 ◼ ► And the funny thing is that the height of the cells didn't change. It was exactly the same height. I just rendered them in a different style.
00:14:11 ◼ ► And so you actually fit the same number on screen, but what they were communicating was, "This looks different to me. Maybe it looks bigger even though it wasn't bigger."
00:14:21 ◼ ► And so I had to kind of contextualize the feedback a little bit, like, "Okay, they're saying this. Here's maybe what the actual problem is or what they're actually feeling over here.
00:14:29 ◼ ► It's a little bit different than what they're saying necessarily, but is there some way I can address that or at least be mindful of that and be sensitive to that?"
00:14:43 ◼ ► Obviously, the actual transition is going to be pretty sudden to a lot of people if they just open their app one day and it's radically redesigned.
00:14:52 ◼ ► It is going to be a little bit surprising, and I'm going to get a lot of that instant negative feedback from people who are just kind of mad that it's different.
00:14:59 ◼ ► And I think I'm adequately braced for that. I am a little scared, but I also know it's coming. I'm expecting it.
00:15:07 ◼ ► And so I think I'll be well prepared when it does come. I'll be at the beach in my happy place, and I'll be able to get pizza when I'm upset.
00:15:25 ◼ ► And I didn't ever think for a second when I was getting all that negative feedback with the previous redesign when it first launched, which, by the way, only lasted maybe a week or two.
00:15:36 ◼ ► Then it was over. But I never thought during that week or two when I was getting the negative feedback, I never thought, "Oh, I should give the people an option to have the old design back," which would be quite an operation.
00:15:47 ◼ ► It's a lot of work. In this case, it's like if you don't like the new app, well, this is going to be a problem for you because it's pretty difficult to ever bring the old one back without literally having just two entire code bases.
00:16:01 ◼ ► But anyway, I have to just prepare myself that it's going to be rough, and I'll get through it. And then what happened with the previous redesign was after two weeks, no one said anything, and the app kept going, and everyone liked it, and it was fine.
00:16:12 ◼ ► And there's always going to be like one or two people who show up in your reviews and give you the one star, and sometimes they're even so mad they'll update the one star every time you do an update to retell you how much they hate you.
00:16:23 ◼ ► But that's a pretty small percentage of the user base. Most of the user base, first of all, anybody finding the app from this point forward, this is the only version they'll ever know.
00:16:31 ◼ ► And second of all, most of the user base is used to apps changing periodically and getting redesigned periodically. Most apps do.
00:16:39 ◼ ► Most apps that people use on their phones from big to small tend to get redesigned every few years, and people figure it out and they move on because they're used to it, and they don't care that much, and it's fine.
00:16:50 ◼ ► And so I kind of have to do what I think is right for the overall design for me and for new customers, and I try to respect existing customers as much as I possibly can.
00:17:00 ◼ ► But at the end of the day, it's not a democracy. I have to do what's right for the app. And so I'm going to just take the feedback, and again, some of it will inform actual change.
00:17:10 ◼ ► If I get enough complaints about something and I think, "Hmm, there might be a better way to do this," I'm willing to change it, and I will certainly be able to do that. And now with SwiftUI, it's actually way easier than it used to be to do that kind of stuff.
00:17:22 ◼ ► But I'm also mindful that I designed it this way for a reason, and so far I have been very well served trusting my own instincts of, "All right, how should I design my app? How should this app work? How should it be laid out? How should it look? How should it behave?"
00:17:43 ◼ ► And the people who are using my app have chosen to use my app because my decision-making seemed to line up pretty well with what they wanted.
00:17:52 ◼ ► And if I continue to trust that, rather than like, you know, I learned not to do things like chase my competitors too closely because if people liked my competitors that much, they would just be using their apps and not my app.
00:18:06 ◼ ► So for me to serve my customers best, I should continue doing things in the general style of how I've always done them because that's why they chose my app in the first place.
00:18:16 ◼ ► So now with the new version, I have designed things in a way that I think is where things should be for people with my design sensibilities or for people who like my previous work, I think you'll like the new one too.
00:18:31 ◼ ► It is a little bit different, as we said, like, you know, some of the motions are different, some of the gestures are different.
00:18:45 ◼ ► As much as possible, I wanted to put commonly used controls near the bottom because phones are bigger now than they used to be.
00:18:53 ◼ ► And most people have a phone that they cannot reach the top corner as easily one-handed as they're holding it, myself included.
00:19:04 ◼ ► Screens are also, you know, because screens are bigger, certain areas had to get different shapes or aspect ratios and guess what?
00:19:14 ◼ ► And I'm gonna just face that and deal with it and move forward because I've been using the app in this way for many months now and I think it's great.
00:19:22 ◼ ► I'm a huge fan of the new design and whenever I see the old design, whenever I dive into the old app to look something up or to do something,
00:19:28 ◼ ► I dive into the old app and I'm like, "Ooh, this feels so old. Oh no, I can't believe this is still out there in the world."
00:19:42 ◼ ► But when it comes to hiring, the best way to search for a candidate isn't to search at all.
00:19:50 ◼ ► Indeed is your matching and hiring platform with over 350 million global monthly visitors, according to Indeed data.
00:20:01 ◼ ► Use Indeed for scheduling, screening, and messaging so you can connect with candidates faster.
00:20:08 ◼ ► 93% of employers agree Indeed delivers the highest quality matches compared to other job sites, according to a recent Indeed survey.
00:20:16 ◼ ► Indeed leverages over 140 million qualifications and preferences every day, so their matching engine is constantly learning from your preferences.
00:20:28 ◼ ► Join more than 3.5 million businesses worldwide that use Indeed to hire great talent fast.
00:20:33 ◼ ► Listeners of this show will get a $75 sponsored job credit to get your jobs more visibility at Indeed.com/undertheradar.
00:20:42 ◼ ► Just go to Indeed.com/undertheradar right now and support our show by saying you heard about Indeed on this podcast.
00:20:59 ◼ ► So I think an interesting place to sort of also to touch on now is so a couple episodes ago we talked about the sort of a more organized approach that you had taken to getting the app to this place,
00:21:18 ◼ ► And I think what would be very interesting to me is also hearing how you're dealing with the inevitable, like, I guess if you're building a house thing, they call it a punch list.
00:21:29 ◼ ► It's that kind of thing of how do you know when you're done and how do you keep track of what isn't done and still needs to be done.
00:21:37 ◼ ► And not because, you know, at this point you're getting feedback from I'm on some of these group chats and you're getting lots and lots of feedback of lots and lots of things.
00:21:45 ◼ ► And somehow you have to filter that down in addition to your own testing, your own beta testing of things and trying it on different devices or exploring different modes.
00:21:53 ◼ ► And you have all these little inputs of things that you could do and how you're working through the identifying what you actually should do or need to do and then prioritizing that and then drawing that into the kind of like when you're actually done, done.
00:22:08 ◼ ► Yeah, so the short answer is I have a giant Apple Notes document with a couple of sections and checklists and everything.
00:22:17 ◼ ► I have a spreadsheet tracking certain timed things and larger items, but that's mostly done.
00:22:22 ◼ ► So how I'm prioritizing now, like, you know, I mentioned earlier my goal is to submit to the App Store within about seven days.
00:22:30 ◼ ► And that is, that's pretty tight. Like, that's, I'm near the end. And so for me there's two timelines that I care, like there's two eras.
00:22:53 ◼ ► And so I'm just trying to prioritize like number one, things that get immediate attention are things that are broken.
00:23:00 ◼ ► Like behaviors that most people will encounter sometime in the app, so like, you know, not super obscure things like fairly common mainstream features that are broken.
00:23:18 ◼ ► So for example, one of the things I'm going to do today is I have to implement the auto skip intro and outro feature.
00:23:24 ◼ ► I've had the UI in it forever, you can adjust those numbers, but right now they don't actually skip. I have to do that today.
00:23:29 ◼ ► If I ship without auto skip intro and outro and for some reason everyone who's used that setting, their stuff just doesn't skip the intro and outro, it would seem broken.
00:23:40 ◼ ► So that wasn't something I did a week ago, but it is something I'd like to do before I submit to the App Store.
00:23:45 ◼ ► And then beyond that, then I have like basically enhancement requests or future to do items or smaller features that will be absent probably from the first version just because I haven't gotten a chance to get to them.
00:24:00 ◼ ► This is a behavior in Overcast from literally from 1.0 where if you seek back or forward a bunch of times in a short time, the amounts start accelerating, the amounts get larger.
00:24:09 ◼ ► So you might be seeking for +30, +30, +30, and then it'll go +45, +50, +60, it'll kind of ramp up if you keep doing it fast so you can cover more ground in a short time.
00:24:19 ◼ ► That feature is probably not going to make the initial release, but it'll come in the next point update.
00:24:25 ◼ ► There's things like that. Something to consider deal breakers that had to be there right from the start are accessibility features.
00:24:35 ◼ ► The app is extremely well considered for dynamic type sizes, including the absolute largest accessibility sizes.
00:24:43 ◼ ► Like you can try it, the app will work. Some layouts will change, but the app will work and it works with any text size that I can get to test in the system.
00:24:56 ◼ ► Nothing is unlabeled, but I do want to tweak some of the layouts of some of the voiceover, like what comes in what sequence, maybe certain things becoming modal that aren't modal now, things like that.
00:25:06 ◼ ► But some of those things like with voiceover, it's like, okay, I want everything to be labeled and accessible. That must happen before release.
00:25:15 ◼ ► But things like tweaking the layout and the sequence of those controls, that can happen in the next version if it needs to.
00:25:21 ◼ ► So I've kind of applied that all across the app. Certain features that are like small improvements and niceties, I can kick those to the next release.
00:25:30 ◼ ► And I probably will have to for most of them. But things that are actually broken or missing, I'm trying to do those first.
00:25:38 ◼ ► And the good thing is I've reached a point now where I'm feeling pretty confident. The list of what is broken or missing is very, very short and very, very minor.
00:25:47 ◼ ► And so I'm feeling pretty good. I think I will hit my deadline without really any trouble at all.
00:25:55 ◼ ► That's great. Yeah, I mean, it's wonderful to hear. And I think it's one of these interesting phases where I think as I become more mature of a developer is at some point you start to understand and have an intuition for things you can do now and feel confident that they're going to work and be safe.
00:26:13 ◼ ► That there are things that you need to do. And then there's things you're like, "Ooh, I shouldn't touch that now. I should open that can of worms later."
00:26:22 ◼ ► Because that may have consequences for other features or other things that I've tested and think work or that my beta testers have been trying and it's been fine for them.
00:26:30 ◼ ► But if I go ahead and open this one little bit, it may end up breaking a whole bunch of other stuff.
00:26:35 ◼ ► And I think there's a theme. And some of that's just intuition. You have a sense of like, "Ooh, this code I don't touch." Close to release. It's like the classic thing.
00:26:43 ◼ ► It's like there's some things that you don't push to production on Friday and there's some things maybe you'd be safe to.
00:26:48 ◼ ► But there are some things, systems that you just shouldn't touch unless it's really you feel safe.
00:26:53 ◼ ► And I suppose the other nice thing you have going for you is you have this one big submission, but it's not like at that point time stops and work stops and the app will not get any better.
00:27:05 ◼ ► I imagine you're going to do a slow rollout of this in terms of using the App Store segmented rollout where it'll roll out somewhat slowly to a lot of your users.
00:27:19 ◼ ► Okay. Well, then I guess what I was saying, it doesn't apply. I was going to say you have a little bit of extra buffer to make adjustments or changes or if you find things or if you're in your early feedback.
00:27:50 ◼ ► I think I mentioned this recently. The sync engine is actually running in parallel with the old sync engine on all the versions that are out there in the App Store right now.
00:27:57 ◼ ► And the reason why was to ease the transition so that way the very first launch, when you launch the new version, which has a whole new database schema and everything, I didn't want to force everyone to have to re-sync everything from my server like that.
00:28:07 ◼ ► I want to re-sync everything from my servers all at once on that very first day because you can imagine if they're on a plane or something that could be bad for them and their experience.
00:28:15 ◼ ► So the App Store version of the app has been running this sync engine, building up the right sync database in parallel.
00:28:22 ◼ ► And when you launch the new version, it just imports that database and imports all of your downloaded files.
00:28:39 ◼ ► So I'm actually feeling pretty good about it. I don't think bugs and crashes are going to be my big problem.
00:28:55 ◼ ► I think I probably speak for all of our audience who are just excited to reach this milestone. I think it's been a long time coming and we're excited to see it.
00:29:05 ◼ ► All the best for the next week. Fingers crossed it all goes well. App Review is kind to you.