Podcast Search

Under the Radar

121: Fear and Change

Select a time to play from there. The line being spoken is highlighted as the audio plays.

0:00:00Hello and welcome to Under the Radar. Under the Radar is a show about independent iOS

0:00:04app development. I'm David Smith. Usually I am joined by Marco Arment, but unfortunately

0:00:08he has lost his voice and that makes broadcasting profoundly difficult. But nevertheless, the

0:00:14show will never be longer than 30 minutes, so let's get started.

0:00:17Okay, so I'm not sure how many people actually who listen to the show would remember, but

0:00:24back several years ago, I used to do a show by myself called Developing Perspective, and

0:00:29that show was never longer than 15 minutes, which was a constraint that I put on myself,

0:00:37mostly so that I would actually do the show. I found that when I started it out, I just

0:00:42wanted to have a podcast, and I decided that having it be this open-ended thing was much

0:00:47more intimidating than every week, just saying, "Well, I'll just sit down and think of 15

0:00:52minutes of things to say. How hard can it be to talk for 15 minutes?" And so I developed

0:00:57the skill of doing that, and what I decided to do this week, because Marco is sick, was

0:01:01to refresh that skill and do two roughly 15-minute segments of the show this week, partly because

0:01:11I think that works well for a single-person thing to break it into chunks, but also just

0:01:17as a general rule, I try and make sure that I never lose skills once I gain them. I think

0:01:22in general that's a good way to approach life, that in general we should hopefully be learning

0:01:26new things as we go. We should be improving ourselves and getting better, and if I lose

0:01:32a skill that I've learned or it becomes too rusty to be useful, that's not great. That's

0:01:36problematic. And so I was like, "Well, this is actually a perfect opportunity for me to

0:01:41refresh the skill of doing a single show, a one-man show, 15 minutes or less, not because

0:01:47I expect to need that skill in the short term, but nevertheless I want to make sure I don't

0:01:51lose it." So that's the general flow of this week, and I'm going to do two short segments,

0:01:58and hopefully it works. We'll be back to our normally scheduled programming next week,

0:02:01so if it doesn't work, don't worry, just come back next week and it'll be back to normal.

0:02:06So for our first topic that I wanted to talk about this week, I'm going to talk about the

0:02:10perils and pitfalls of developing things, being driven mostly by a fear of missing out

0:02:17rather than a conscious choice or desire. And this is a situation that I find myself

0:02:24in this week, and this is a pattern that has happened many times over my development career

0:02:30where I see an opportunity. I see something that I think I could take advantage of. I

0:02:36see something that I could be a part of, and sometimes these opportunities are big, sometimes

0:02:43these opportunities are small, but nevertheless, these are opportunities. And the pitfall and

0:02:49the danger that I've had to learn is that so often, while the opportunity may be good,

0:02:54while the opportunity may be genuine, it may not always be for me. It may be something

0:03:01that isn't worth pursuing because it will put myself in a position down the road that

0:03:07will be slightly problematic or won't be genuine or true to my interests or passions or whatever

0:03:12you want to look at it. And the specific example why this is top of mind for me this week is

0:03:18there was an article that I'll link to in the show notes that was about how the new

0:03:23Apple Watch Series 3 now has the ability to track skiing and snowboarding workouts. And

0:03:28Apple has kind of made a big deal about this. You know, a big article in their main PR section,

0:03:34they seem to kind of push it out to a variety and a pretty wide swath of news publications.

0:03:42They're trying to make a big deal out of this. And that's awesome. And one of the people

0:03:46who are being featured in this is a friend of mine, Curtis Herbert, who makes the Slopes

0:03:50app, which, you know, by all accounts, I'm not a skier or snowboarder myself, which I'll

0:03:54get to in a minute is why this is problematic. But he makes this great app that looks perfect.

0:03:59And he's had this great Slopes diary where he has talked through kind of the independent

0:04:05development aspects of this app. It's a very, you know, he, for the most part, is an independent

0:04:10app that, you know, he develops himself. And it's really cool to see him being held up

0:04:17there with a couple of other apps. But what's awkward for me is that this was a feature

0:04:22that I thought about adding to Workouts++. Because basically, in the Series 3 Apple Watch,

0:04:29they, you know, they added a, you know, some tools to make monitoring skiing and snowboarding

0:04:37workouts fairly straightforward, that in many ways, I can treat them like other workout

0:04:42types that, like a run or a cycle or something like that, where the watch itself is doing

0:04:48a lot of the tricky processing that I ordinarily would need to have done myself, you know,

0:04:56in terms of safe, you know, segmenting your activity so that it can detect when you're,

0:05:00you know, when you're going downhill, when you're maybe on a ski lift and partitioning

0:05:04things out, calculating a variety of statistics about this. And it made it a lot fairly straightforward.

0:05:10And when I saw this feature come out, or be added to the SDK, I knew this was something

0:05:15that Apple was going to kind of be putting some weight behind. And I think some of that

0:05:19was just because, A, they mentioned it specifically during the Series 3 Apple Watch, like on stage

0:05:27presentation that they made this kind of offhand comment that didn't really have any best,

0:05:32any backing in like, information at the time that he just like, Jeff Williams just mentioned

0:05:38that this is going to be great for skiing and snowboarding apps. And then it didn't

0:05:43really there wasn't much to it until I think it was watchOS 4.2 actually added the, the

0:05:51workout types and all this workout processing stuff. And so then suddenly all these apps

0:05:54could take advantage of it. And, you know, it's like, when it's mentioned on stage, when

0:06:00it's mentioned kind of late cycle like this, it seems like the kind of thing where it's

0:06:03a good marketing opportunity for Apple to kind of create a something topical and newsworthy

0:06:09about a product, you know, just try and, you know, bump up sales again, thought that they

0:06:13necessarily need it. But in terms of, you know, it's this, it's after the Christmas

0:06:17rush of watch purchases, I imagine they're looking for opportunities to, you know, give

0:06:23give people a reason to get an Apple Watch and specifically to get a new Apple Watch

0:06:26to get a Series 3 Apple Watch. And so it made sense that this was going to be something

0:06:30they would push. And so I investigated this and I, you know, I will say like, I'm not

0:06:35a skier or snowboarder, I have like fallen down the hill a few times in my life, trying

0:06:40to ski, or trying to snowboard, but it's never really been something that I do. It's something

0:06:45I've done for fun, maybe. I think I did it once in the last 10 years. And it was fine.

0:06:50And it was interesting. But it wasn't, it's not something that I avidly do. It's not something

0:06:54that I have a passion for. And I tried to implement this feature. And it was in some

0:07:01ways straightforward, like I could very easily add it to Workouts++. But I didn't really

0:07:05know how people would use it in practice, the things that they would actually want or

0:07:11be interested in. And then also, it was kind of tricky for me, because to really test something

0:07:16like this, you probably have to go skiing, and you probably have to go snowboarding.

0:07:21And I'm sure I could have found somebody to beta test it or kind of work on it. But it's

0:07:24a hard thing if it's not something that I have really any personal connection to, and

0:07:29don't know somebody, you know, who will go skiing or snowboarding on a regular basis.

0:07:33You know, I similarly in Workouts++, I don't do a lot of swimming myself. But I have my

0:07:40wife and I have a good friend who does go swimming a lot, and they were able to give

0:07:45me a lot of good feedback. And you know, going swimming on a regular basis is much more practical

0:07:50than going skiing or snowboarding on a regular basis. And I mean, I remember seeing Curtis

0:07:54talking about how he, you know, had to go on these trips where he was, you know, skiing

0:07:59down a mountain with a, you know, a laptop in his backpack, trying to kind of then like

0:08:03stopping at the bottom and checking how it was working, and then, you know, doing it

0:08:07again. And like, it's a really complicated thing to test and to debug. And there was

0:08:11no simulator support for it either. So that was doubly tricky. So in the end, I decided

0:08:16to not add this feature, to not pursue being part of the push for skiing and snowboard

0:08:26tracking apps. And then now, this week, you know, I see the fruits of what may have possibly

0:08:33been if I had pursued it. And that's not to say that if I'd added it to Workouts++ that,

0:08:38you know, my app would have been caught up in this publicity push. But I think there

0:08:42is a non-zero chance of that nevertheless. But I don't regret it at all. And I kind of

0:08:48wanted to unpack why I don't regret it. And I think it's coming from an experience I've

0:08:52had many times where often I see something that is clear that Apple is going to push,

0:08:58that there is going to be this sort of this opportunity for quote unquote, like free publicity.

0:09:04And I've got pursued it in the past. But the awkward reality is that publicity is not free.

0:09:10That is, in fact, comes with tremendous costs. And often they are the kind of external hard

0:09:15to quantify type of costs that are the most insidious. You know, for example, iMessage

0:09:20apps was an example of something like this where it was, you know, when iMessage apps

0:09:26were introduced to iOS, they were kind of pushed and promoted. And it seemed like something

0:09:31that Apple was going to put a fair bit of weight to. And I, you know, was like, okay,

0:09:37great, let's go for it. Let's make some iMessage apps. And I made iMessage apps for a bunch

0:09:40of my apps. And as best I can tell, it's led to almost no use or very limited use, nevertheless.

0:09:48You know, I don't have great statistics for it. But I from what I can understand, the

0:09:54apps are very poorly used. And I have to maintain them going forward. And I didn't really get

0:10:01much out of it. In that case, there was, you know, Apple was promoting them. And I my apps

0:10:09were picked up in a couple of the, you know, the promotional things in the App Store. And,

0:10:13you know, certainly not to the degree of an article in, you know, in the PR section. But

0:10:18it was, you know, certainly something that had a little bit of push. But the awkward

0:10:22thing is, even when I was making them, I was looking at these things and being like, is

0:10:26anyone actually going to use this? Like, is this really the way someone is going to, you

0:10:32know, choose to interact with the app and we're like kind of forcing it into into something

0:10:37that I didn't really understand, that I didn't use myself and that, you know, as a result

0:10:43was never really going to have that level of care and attention and quality that I think

0:10:49you you would hope or I, you know, I ideally have in a product you make. And this is where

0:10:55I think sort of like the end lesson comes from this is that it's important to, you know,

0:11:01develop things because you want to develop them that because you think it'll be interesting

0:11:07or useful, or ideally even something that you will use yourself on a regular basis.

0:11:14I know for myself that my best apps are the ones that I use myself on a regular basis

0:11:19that I use every day that are solving actual felt problems that I feel and apps that I'm

0:11:25not developing out of a fear of missing out on an opportunity that I'm not just like doing

0:11:29it because or to try and time or take advantage of something because if I don't use if I don't

0:11:36use it on a regular basis, if it isn't, you know, sort of any in any way kind of overlapping

0:11:41with my interests, it's it even if it does get picked up, even if it does create an opportunity,

0:11:46I'm either then going to be stuck kind of maintaining something I don't care about,

0:11:50or probably more likely I'll end up having to maintain or having to kill off or, you

0:11:55know, make tricky decisions about something that didn't actually pay off in the first

0:12:00place. So anyway, it was just an experience I had this week that I saw this and I was

0:12:05like super glad and excited for the people who got picked up. But definitely in the back

0:12:09of my mind, I had this twinge of, well, that could have been me, you know, well, like I

0:12:14could have done that I started going down that road. And as a brief aside, slightly

0:12:18comedically, when I was initially testing this, because like I said, you there's no

0:12:23simulator support to test my initial like prototype implementation of this, I tried

0:12:28to work out how best to simulate skiing or snowboarding. And the best I could come up

0:12:33with in terms of a motion and activity that would simulate skiing was that I rode my bike

0:12:40up the biggest hill I could find in my neighborhood, and then sort of glided down the hill as you

0:12:47know, sort of fairly quickly, and got to the bottom, waited a minute and then walked my

0:12:51way back up kind of trying to simulate being in a ski lift. And I did that a couple of

0:12:56times to simulate being a ski run, which half worked half didn't, but was, you know, nevertheless,

0:13:01slightly comedic. And I imagine me, my neighbors think that I was kind of crazy to just be

0:13:06I was just biking up and down this hill over and over and over again. But you know, that

0:13:11was not the life that I wanted. And so I decided to can it and I feel good about that. So you

0:13:15know, just something to keep in mind that you when you're developing things, make sure

0:13:19you're doing it for good reasons and for reasons that you think it might be sustainable going

0:13:24forward.

0:13:26This episode of under the radar is brought to you by Linode with Linode you have access

0:13:29to a suite of powerful hosting options with prices starting as low as $5 a month and you

0:13:33can be up and running with your own Linode server in the Linode cloud in under a minute.

0:13:38Linode offers industry leading performance with native SSD storage, a 40 gigabit network,

0:13:42and 95 processors. They have 10 data centers spread all over the world for great redundancy

0:13:47as well as moving your servers close to your customers. They have an API that's great for

0:13:52automating tasks and getting quickly set up and repeatably set up and as well as making

0:13:57everything accessible and manageable via command line. And all of Linode's pricing tiers now

0:14:02feature hourly billing with a monthly cap so that you can make sure that you're never

0:14:07surprised at the end of the month and they offer great things like backups and node balancers

0:14:11for doing more advanced operations. I use Linode. They are a tremendous op that I they

0:14:16find to be tremendously useful and they allow me to not worry about the servers the server

0:14:21side of my hosting. I can focus on the application side which is great. And they have fantastic

0:14:26pricing their prices for one gigabyte of RAM start at only $5 a month and they offer all

0:14:31the way up to super high memory plans with 16 gigabytes of RAM. As a listener of this

0:14:35show if you sign up to at Linode.com/radar you'll only be supporting us but you'll also

0:14:40get $20 towards any Linode plan on a one gigabyte RAM plan that would be four months free and

0:14:47you also have a seven day money back guarantee so there's nothing to lose. So you can go

0:14:51to Linode.com/radar to learn more sign up and take advantage of a $20 credit or use

0:14:56the promo code radar 2018 at checkout to make the same savings. Thank you so much to Linode

0:15:02for sponsoring this show. All right. So I also for the second topic for the second episode

0:15:09the second sub episode inside of this episode I wanted to talk a little bit about communicating

0:15:14changes to customers. And this is something that I ran into this last week as well where

0:15:21I made a big change to the way that pedometer++ works in terms of the ability to migrate steps

0:15:28from one app from one phone to another. So if you get a new phone you can move your old

0:15:31history along with it even if you're not doing a backup and restore to that phone which is

0:15:36a feature a lot of people have wanted for a while. And it's top of mind because I added

0:15:43this feature that has been I have been asked periodically by customers for a long time

0:15:48and then I continued to still get support requests asking people for it which clearly

0:15:54is a an example of the fact that you know people don't really read the change notes

0:15:59they don't read that what's new in the App Store most people probably honestly never

0:16:03open the updates tab in the App Store. If you have automatic updates turned on the updates

0:16:08will just you know kind of happen for you in the background and even if you do periodically

0:16:13go there you know you may not have read the exact one associated with the most recent

0:16:18change or with a particular change I guess. And so it's kind of a tricky thing because

0:16:23in my mind I hadn't really thought about it when I did this update. I hadn't really thought

0:16:28more in more detail about how best to communicate this change. But in retrospect I really should

0:16:35have it's really is something that I should have talked about or thought about and tried

0:16:40to find ways to communicate more directly to my users about this because you know if

0:16:47it's a feature that they want I and it's in the app you know hopefully they can find it

0:16:52because for every one person who is actually going to reach out to me and say hey you know

0:16:56it'd be great if I could do this thing and there's probably going to be 10 people who

0:17:00just assume it isn't there and leave the app frustrated and I definitely don't want that.

0:17:05So first I guess the first lesson from this experience is to assume that nobody ever reads

0:17:11the release notes. Some people will and that's great and I think it's important to write

0:17:15good release notes to write release notes in such a way that they aren't just like you

0:17:21know we are always striving to make our app better. This app this update includes stuff.

0:17:26That's not really helpful. I don't find those kind of release notes particularly useful.

0:17:31I understand why some bigger applications or typically these big faceless companies

0:17:36will tend to do that but and I can understand why they do that but I find especially being

0:17:42an independent developer it's a great opportunity to endear myself slightly to my users to write

0:17:48good change notes and to make them personal like I try and actually write them as though

0:17:52I'm writing a letter to my customer because if the customer is reading that that is functionally

0:17:56what I'm doing. I'm directly communicating with them and so I want to take advantage

0:18:00of that but I think I need to assume that nobody's ever going to read those and so think

0:18:06about whenever I make changes to the application how to communicate that. The one extreme this

0:18:13is something that I've never done myself and honestly I would not recommend but it's probably

0:18:16worth mentioning is the approach of the like big pop up or banner or like the modal blocking

0:18:24walkthrough or you can do the thing where like the first time you launch the app you

0:18:28have like it's slightly grayed out with like call outs or arrows or you know bubbles like

0:18:33you can really go on the one extreme very heavy handed with this and be like hey look

0:18:38over here here's this cool new thing and the reason I tend to not like those is it assumes

0:18:46that A that the user is going to be interested in whatever the new feature is you know that

0:18:50they're going to want to go you know they want to interrupt whatever it is they're doing

0:18:55even though in this case you're interrupting them and ostensibly for their benefit it's

0:18:59still you're interrupting them you're still doing something that is not the reason they

0:19:03open the app in the first place most likely and so it's you're kind of getting in their

0:19:08way and it also is it kind of is awkward to manage in terms of which you know in practice

0:19:17most applications have a lots of more lot many more new users than existing users like

0:19:25over time your user base will grow which is wonderful hopefully but you know if there's

0:19:29this this the retention rate of most applications is relatively low you know say 10% 20% and

0:19:35so you're most of your people are being onboarded for the first time anyway and so you really

0:19:41you should also make sure that it is optimized not just for communicating change but for

0:19:46communicating in the first place that for helping a new user understand the application

0:19:50and you can't you know it's not like if every time I make a change I added a new pop-up

0:19:55or a new bubble or something to the application you know and you launch the app and it's like

0:19:59here's 26 things you end up with you know these screens we often see them in like Mac

0:20:04apps where it's like you know would you like the tip of the day and it's a kind of an in

0:20:08elegant solution to this problem where you know if your app has gotten so complex or

0:20:13detailed to the point that you know users are going to need a lots of help to find their

0:20:19way around like that's tricky and problematic and I can it's understandable like I'm not

0:20:24saying it's a bad thing in that situation but I try and avoid it if I can because it

0:20:29much rather have an application that is intuitive and understandable without needing to result

0:20:34resort to something like that.

0:20:36So how to how to do it and as I was thinking about this and what am I going to be doing

0:20:42going forward is the a great thing to do is to make careful tweaks to the copy to the

0:20:48text of the application to help make these things clearer so in this case the way that

0:20:55I implemented it is that you can now I've always in the app had the ability to export

0:21:00your step data to a CSV file so you know you can export it for people some people like

0:21:05to do it for you know use in Excel or numbers or something or they want to you know they

0:21:12want to be able to have a an exchangeable format of their step data so great I've added

0:21:17that I had that in the app for a very long time and with the export feature I included

0:21:23the sort of the export transfer file in the same email that you get when you export the

0:21:28CSV because that was very straightforward it was very simple to do there and intuitively

0:21:32it made sense to me but I realize in retrospect there's no way for them to know that this

0:21:38new thing is now there and so one little change I'm going to make is I'm going to tweak the

0:21:45the copy of that section of the app so rather than saying export steps you'll now say export

0:21:49slash transfer steps and it still keeps it simple it still isn't create this you know

0:21:54I'm not like duplicating buttons and options in the application which could add more complexity

0:21:59but I'm just adding a word and I think that word will do a long way to communicating that

0:22:06this is possible and hopefully for new customers who find themselves in a situation where they

0:22:10want to transfer their steps they'll now immediately know how to go there another thing that comes

0:22:15to mind and this isn't applied in my particular situation but is that is important to always

0:22:20think about what the default for a new option should be and be thoughtful about this because

0:22:26that's often a great way for a customer to understand or to come across a new feature

0:22:31so for example in my big update that I'm working on for sleep plus plus I'm adding a the concept

0:22:37of a nightly sleep goal you know so say how many hours of sleep would you like to have

0:22:41a night and there's a bunch of little cues within the application to try and make it

0:22:46you know try and reward you or encourage you when you've done that and not like punish you

0:22:50but to make it make you aware of the time of you know the times when you haven't been

0:22:53able to do that and you start to think about well how am I going to communicate this new

0:22:59feature well it's like hey it's important to have a thoughtful default that if I default

0:23:04that to a number that is too high it's going to come across immediately in the negative

0:23:10you know so if the first time you launch the app and it says you know essentially I'll

0:23:15all the nights turn red because oh man you you know you haven't been hitting your sleep

0:23:19goal recently but they haven't even set their sleep goal well that's kind of that's not

0:23:23so great so instead I'm going to set the you know it's like I'm going to default the goal

0:23:27to something on the lower side of what is still probably considered good so I think

0:23:31I'm going to go for seven hours you know it's like in general most people say eight hours

0:23:35is a good goal for sleep I'm going to start at seven and then hopefully for a lot of people

0:23:40they'll have a lot of you know have this kind of nice mix of red and green steps you start

0:23:44to be like or of red and green nights you look at it and be like oh this is great like

0:23:50something's interesting is happening here maybe you go to settings and maybe you find

0:23:53out that you can now set this goal but I'm kind of trying to do it in a way by using

0:23:58the default such that it is intriguing rather than confounding hopefully that will help

0:24:04and I think in just in general whenever you add a new feature it's you know it's something

0:24:09that you have to keep in mind that you know you're probably going to need to choose an

0:24:13option should you know should this feature be turned on by default or off by default

0:24:17you know just the user needs to should they want should they have to actively take steps

0:24:22to turn it on or should it just automatically be turned on and you just have to be really

0:24:27thoughtful about this one thing that's also kind of awkward with this a lot of times I

0:24:30find is it's deciding the right time to prompt for privacy options in iOS so as another example

0:24:39in the sleep plus plus update there's automatic sleep tracking now which requires that you

0:24:44give me your you know prompt you that you have to give me permission to access a variety

0:24:50of other health database types and in general that you know is is fine but I don't want

0:24:57to necessarily you know then that the first time you launch the app after you have installed

0:25:03the updates to just immediately prop up this health dialogue out of nowhere saying hey

0:25:07hey I need your health data like that's kind of creepy and not really great and so what

0:25:12I'm expecting to do instead is pop up a message at the top of the app at the top of the main

0:25:19table view saying hey the app can do sleep automatic sleep sleep tracking now would you

0:25:24like to enable it and have a little switch there and if they hit the switch it'll pop

0:25:28up the health permission prompt at that point and I think that's going to be a much more

0:25:34comfortable thing that you know more people are going to want to actually give me access

0:25:38to their health data in that way and I think overall that's probably going to be a more

0:25:44successful way to communicate that than just popping up the health prompt and assuming

0:25:47they want to turn it on because honestly most people do want to probably want to turn it

0:25:50on but nevertheless if I prompt if I just pop it up right away initially like that might

0:25:56be really confusing or it might not be a nice feeling that like all of a sudden they didn't

0:26:02do nothing change from their perspective because the app just updated underneath of them and

0:26:06then now all of a sudden I'm asking for their health data so that's just something I'm going

0:26:10to do there but I think it's important to just be thinking about this process and to

0:26:13think about how to make it useful for your use for your for your customers and to just

0:26:18you know kind of allow you to get full credit in some ways for these changes that you're

0:26:23making though I suppose no matter what you do here it's also probably just worth saying

0:26:28I expect that people are still going to miss it and the people you're still going to get

0:26:31customer support requests asking for features that are things that you missed and I'll leave

0:26:36you with something that I think it was I think it was Gus Mueller the maker of Acorn was

0:26:42talking about once when I was talking with him and he was saying how he I don't think

0:26:47it was him he was talking about how he likes getting customer support requests for things

0:26:51that are confusing because they're an opportunity to see where the problems are in your design

0:26:57and to improve on them that if you can look at you know when someone misses something

0:27:03as as a negative experience that like someone asking for a customer support is can be a

0:27:08bad thing but on the flip side you know here's an opportunity to make the app clearer that

0:27:13someone has told you hey here's this part of your application that was confusing or

0:27:16problematic or difficult and so it gives you an opportunity to design a fix for it and

0:27:21so have taken that perspective of like in this case you know communicating change is

0:27:26an opportunity and if if you try and communicate that change and your customer doesn't get

0:27:31it then you know that's a fault on yours to hopefully correct going forward all right

0:27:36that's it for this this week like I said hopefully next week we'll be back to our normally scheduled

0:27:42programming hopefully Marco will find his voice again and we can go back to our normal

0:27:46thing but anyway other than that I hope you have a good week and I will talk to you later

0:27:50bye

0:27:51[BLANK_AUDIO]