PodSearch

Under the Radar

Under the Radar 91: Removing Features

 

00:00:00 ◼   ► welcome to under the radar a show but

00:00:02 ◼   ► independent iOS app development I'm mark

00:00:04 ◼   ► Worman and I'm David Smith under the

00:00:06 ◼   ► radar is never longer than 30 minutes so

00:00:08 ◼   ► let's get started so today we wanted to

00:00:10 ◼   ► talk about having to remove features of

00:00:13 ◼   ► the apps and this is you know I've done

00:00:16 ◼   ► this a lot over time so a lot of times

00:00:18 ◼   ► it's kind of questionable whether like

00:00:20 ◼   ► you really have to remove something it's

00:00:23 ◼   ► kind of a blurry line of like are you

00:00:24 ◼   ► removing something because some

00:00:26 ◼   ► condition is changing or somebody is

00:00:29 ◼   ► forcing you to remove it or are you

00:00:31 ◼   ► removing it because you don't like the

00:00:33 ◼   ► feature anymore or they it's hard it's

00:00:35 ◼   ► too hard to support or something like

00:00:37 ◼   ► that and I've done a lot of both

00:00:41 ◼   ► honestly more the latter than the former

00:00:44 ◼   ► honestly but III think but what I'm

00:00:48 ◼   ► facing this summer is is I'm having to

00:00:52 ◼   ► remove the send to watch feature from

00:00:55 ◼   ► overcast this is a feature that would

00:00:58 ◼   ► use the iPhone app to transcode the the

00:01:02 ◼   ► podcast file to a smaller size and then

00:01:05 ◼   ► set in bacon smart feed and then send it

00:01:07 ◼   ► over Bluetooth to the watch and then the

00:01:10 ◼   ► watch would have its own local copy of

00:01:11 ◼   ► the file and then it could play the file

00:01:14 ◼   ► directly from the watch to a pair of

00:01:16 ◼   ► bluetooth headphones if you were you

00:01:19 ◼   ► know out running with the watchman and

00:01:20 ◼   ► didn't have your phone with you this is

00:01:22 ◼   ► a feature that people had requested for

00:01:25 ◼   ► ever since the first watch came out it

00:01:27 ◼   ► was it was the number one feature

00:01:28 ◼   ► request from watch owners was the

00:01:31 ◼   ► ability to have standalone playback you

00:01:34 ◼   ► know playback without your phone and

00:01:36 ◼   ► basically and and this feature I took me

00:01:39 ◼   ► a very very long time to get this

00:01:40 ◼   ► working I worked a lot on it this past

00:01:42 ◼   ► winter

00:01:42 ◼   ► I've probably invested something like

00:01:45 ◼   ► three or four months of development time

00:01:46 ◼   ► and to just this feature and the the

00:01:50 ◼   ► main problem I kept facing was the the

00:01:54 ◼   ► background audio playback api's on watch

00:01:57 ◼   ► OS are very very rudimentary because

00:01:59 ◼   ► watch OS has to run on this very very

00:02:01 ◼   ► low power device and one thing that

00:02:04 ◼   ► basically doesn't exist in watch OS is

00:02:06 ◼   ► background execution of apps like

00:02:10 ◼   ► few can do it mainly late workout

00:02:12 ◼   ► processing apps can do it but almost

00:02:14 ◼   ► nothing else on watch os is allowed to

00:02:16 ◼   ► persistently run in the background the

00:02:19 ◼   ► way audio apps on iOS are you know in

00:02:22 ◼   ► iOS you have audio playback voice you

00:02:25 ◼   ► have location tracking like turn my turn

00:02:27 ◼   ► directions all these kinds of apps can

00:02:29 ◼   ► stay in the background indefinitely as

00:02:32 ◼   ► long as the user is using them they can

00:02:33 ◼   ► keep staying the background on watch OS

00:02:35 ◼   ► that list is much shorter it's it and

00:02:37 ◼   ► notably does not usually include audio

00:02:40 ◼   ► apps and so there is there are a few

00:02:43 ◼   ► api's you can use them the biggest one

00:02:45 ◼   ► is the WK audio file player api but it's

00:02:48 ◼   ► very very rudimentary and honestly I've

00:02:52 ◼   ► had a lot of problems and shortcomings

00:02:53 ◼   ► trying to use it a lot of bugs a lot of

00:02:56 ◼   ► just missing features because the way it

00:02:58 ◼   ► works is it actually is out of process

00:03:01 ◼   ► it you basically hand it a file URL and

00:03:05 ◼   ► it plays and then your app gets

00:03:07 ◼   ► terminated in the background and then

00:03:09 ◼   ► you know at various times your app could

00:03:11 ◼   ► be woken back up again to be notified of

00:03:13 ◼   ► stuff going on and the audio player

00:03:15 ◼   ► maybe if you're lucky or if the user

00:03:17 ◼   ► interacts with you you'll obviously wake

00:03:19 ◼   ► up for that but otherwise you're kind of

00:03:21 ◼   ► just you're not running and that that

00:03:23 ◼   ► makes it very very hard to make a good

00:03:26 ◼   ► audio playback experience especially for

00:03:27 ◼   ► things like podcasts that have to be

00:03:29 ◼   ► resumable they have to save your

00:03:30 ◼   ► position and stuff like that and in so

00:03:34 ◼   ► forever 4 months I was fighting these

00:03:37 ◼   ► api's I was I just I could not get a

00:03:40 ◼   ► good experience out of watch background

00:03:43 ◼   ► audio playback the problem was not

00:03:45 ◼   ► sending the files over all of that has

00:03:46 ◼   ► its own problems of things like it's

00:03:48 ◼   ► very very slow there's no way to detect

00:03:50 ◼   ► the progress of a transfer which is very

00:03:53 ◼   ► very bad for the user experience but

00:03:56 ◼   ► even if you can get past the

00:03:57 ◼   ► transferring of the files or even if you

00:03:59 ◼   ► could have the watch download the files

00:04:01 ◼   ► directly over over Wi-Fi or over maybe a

00:04:03 ◼   ► future cellular connection and watch you

00:04:05 ◼   ► still have would have the problem of

00:04:07 ◼   ► background audio playback on watch OS

00:04:09 ◼   ► and so what happened was this past

00:04:12 ◼   ► spring an app called watch player by

00:04:14 ◼   ► peter knapp came out and it it uncovered

00:04:17 ◼   ► for me a new method basically if you if

00:04:21 ◼   ► you said you were a work out process

00:04:24 ◼   ► you could use a V audio player and use

00:04:28 ◼   ► it directly and your app would stay

00:04:29 ◼   ► running all the time without interfering

00:04:32 ◼   ► with other workout processing apps it

00:04:34 ◼   ► would just do the right thing it would

00:04:35 ◼   ► do what you want it would it would stay

00:04:37 ◼   ► in the background

00:04:38 ◼   ► as audio was playing and allow you to do

00:04:41 ◼   ► things like save your position reliably

00:04:42 ◼   ► and not have to deal with all the out of

00:04:44 ◼   ► process bugs of WK audio file player and

00:04:46 ◼   ► stuff like that it was and it didn't

00:04:49 ◼   ► have any kind of weird interaction with

00:04:52 ◼   ► remote controls or the now playing

00:04:54 ◼   ► screen which is part of the problems I

00:04:55 ◼   ► have with the deputy audio file player

00:04:57 ◼   ► API it has a lot of weird interactions

00:04:59 ◼   ► there anyway so this was finally a way

00:05:02 ◼   ► to fairly reliably play audio in the

00:05:05 ◼   ► background on watch OS so I switched

00:05:07 ◼   ► over to this method and I released this

00:05:09 ◼   ► feature and it turns out that this was

00:05:13 ◼   ► not intended to work this way by Apple

00:05:17 ◼   ► and so this feature no longer works this

00:05:20 ◼   ► way in watch OS for watch OS 4 you can

00:05:23 ◼   ► only if you want background audio

00:05:25 ◼   ► playback you can only use WK audio file

00:05:27 ◼   ► player all the the method of saying your

00:05:30 ◼   ► a workout app to really play audio that

00:05:32 ◼   ► no longer works and watch OS 4 so now

00:05:36 ◼   ► I'm faced with this massive dilemma of

00:05:38 ◼   ► well I can go back and rewrite the whole

00:05:42 ◼   ► thing again for WK audio file player the

00:05:44 ◼   ► out of process API but that had a lot of

00:05:47 ◼   ► problems and a lot of bugs and a lot of

00:05:50 ◼   ► shortcomings and just weird behavior

00:05:53 ◼   ► like for instance it tries to it tries

00:05:56 ◼   ► to hook into the remote control buttons

00:05:58 ◼   ► so if you were to hit you know skip

00:06:02 ◼   ► forward or seek forward on a bluetooth

00:06:04 ◼   ► headphone or if you were to go to the

00:06:05 ◼   ► now playing screen and hit the

00:06:07 ◼   ► fast-forward button what that does for

00:06:10 ◼   ► double K audio file player is what you'd

00:06:11 ◼   ► expect from music it goes to the next

00:06:13 ◼   ► track podcast apps all interpret this as

00:06:17 ◼   ► seek forward by 30 seconds or whatever

00:06:20 ◼   ► you've set it to so for podcasts what

00:06:22 ◼   ► you want is very very different than

00:06:23 ◼   ► that and when you are controlling the

00:06:25 ◼   ► audio player and you have a proper

00:06:27 ◼   ► remote control API like you do on iOS

00:06:28 ◼   ► you can interpret that as whatever you

00:06:31 ◼   ► want and you can you can do that on

00:06:33 ◼   ► watch OS because this is all happening

00:06:36 ◼   ► out of

00:06:37 ◼   ► process out of your control with WK

00:06:39 ◼   ► audiophile player watch OS tries to do

00:06:41 ◼   ► try to do the right thing so it's it

00:06:43 ◼   ► just invalidates that file and seeks to

00:06:46 ◼   ► the next one if you are podcast app you

00:06:49 ◼   ► don't have a next one or you might have

00:06:51 ◼   ► used a WK audio cue file player or audio

00:06:54 ◼   ► file queue play or whatever it's called

00:06:55 ◼   ► but you have you have no way to

00:06:57 ◼   ► interpret that that click as something

00:07:00 ◼   ► else or that that fast forward command

00:07:01 ◼   ► of something else

00:07:02 ◼   ► so it just ends the track you're

00:07:04 ◼   ► listening to and goes to maybe the next

00:07:06 ◼   ► podcast whatever else and I tried so

00:07:09 ◼   ► many crazy hacks with this so for

00:07:11 ◼   ► instance splitting up podcasts into like

00:07:13 ◼   ► 10 second chunks and just giving the key

00:07:15 ◼   ► like 400 files for first show I think

00:07:19 ◼   ► what could go wrong yeah unsurprisingly

00:07:21 ◼   ► watch OS did not appreciate that

00:07:23 ◼   ► approach various resource limitations I

00:07:27 ◼   ► think it probably didn't expect me to

00:07:29 ◼   ► have a playlist with 400 entries of

00:07:31 ◼   ► ten-second files so yeah that didn't

00:07:33 ◼   ► that wasn't great and so again like I I

00:07:35 ◼   ► tried all these hacks to try to get this

00:07:37 ◼   ► this wk audiophile player to give an

00:07:40 ◼   ► experience good enough for podcast

00:07:42 ◼   ► listening and basically it just didn't

00:07:44 ◼   ► happen it didn't happen four months ago

00:07:46 ◼   ► you know it didn't happen for the four

00:07:47 ◼   ► months I was working on it last winter

00:07:49 ◼   ► and I've tried over the last few weeks

00:07:51 ◼   ► to do it again and with watch OS 4 and

00:07:54 ◼   ► it's not any better in watch OS 4 it

00:07:56 ◼   ► still has all the same shortcomings and

00:07:59 ◼   ► all the same bugs and yes I have filed

00:08:00 ◼   ► many radars and I have I have you know

00:08:04 ◼   ► forward them to evangelists and things

00:08:06 ◼   ► like that but the fact is like

00:08:08 ◼   ► background audio playback I don't think

00:08:10 ◼   ► is is a very high priority on Apple

00:08:12 ◼   ► watch compared to like everything else

00:08:14 ◼   ► they have to do like apples very busy

00:08:16 ◼   ► this time of year with things like iOS

00:08:18 ◼   ► and you know the new phones at never and

00:08:20 ◼   ► all the new stuff for iPad and

00:08:21 ◼   ► everything so while I have filed bugs

00:08:24 ◼   ► and contacted you know the appropriate

00:08:25 ◼   ► people I I don't think I I don't think

00:08:28 ◼   ► these bugs are going anywhere basically

00:08:29 ◼   ► the beta Siri the beta season is almost

00:08:31 ◼   ► over and they haven't gone anywhere so

00:08:33 ◼   ► so I wouldn't expect them to

00:08:34 ◼   ► so I'm faced with this decision of like

00:08:36 ◼   ► do I move to this new API which is much

00:08:40 ◼   ► worse for my purposes in every possible

00:08:43 ◼   ► way and way buggy or introduces all

00:08:45 ◼   ► sorts of new problems and requires all

00:08:49 ◼   ► sorts of crazy hacks like you

00:08:51 ◼   ► using the timer and pulling things that

00:08:53 ◼   ► are supposed to be kvo compliant but are

00:08:54 ◼   ► and stuff like that like just a lot of

00:08:56 ◼   ► bugs and a lot of weird workarounds that

00:08:58 ◼   ► you have to do pulling things to see if

00:09:00 ◼   ► they're playing is or if they're stalled

00:09:02 ◼   ► because sometimes the is playing

00:09:04 ◼   ► attribute is wrong like it's there's all

00:09:06 ◼   ► sorts of problems that I can't even I

00:09:10 ◼   ► can't even overstate how many problems

00:09:11 ◼   ► there are with this API and so I can

00:09:14 ◼   ► switch to that but it's going to be way

00:09:16 ◼   ► way worse than it is now and right now

00:09:19 ◼   ► the feature is barely shippable as it is

00:09:21 ◼   ► like with the watch OS 3 version that

00:09:23 ◼   ► was barely shippable and I probably

00:09:24 ◼   ► shouldn't have shipped it but I did or I

00:09:27 ◼   ► can remove this feature now and just say

00:09:30 ◼   ► sorry everyone it didn't work out and

00:09:33 ◼   ► this has complicate like some people

00:09:35 ◼   ► have said like well I can I'll just

00:09:37 ◼   ► leave my watch on watch OS 3 well that's

00:09:40 ◼   ► not very that's not gonna work because

00:09:42 ◼   ► first of all if I leave this feature in

00:09:44 ◼   ► for everyone else when they upgrade to

00:09:45 ◼   ► watch OS 4 it stops working even if I

00:09:47 ◼   ► don't recompile the app for macho' s4

00:09:48 ◼   ► and then second of all if I update my

00:09:51 ◼   ► app to iOS 11 and watch OS 4 then if

00:09:55 ◼   ► their watch is still on three it'll just

00:09:57 ◼   ► be deleted from the wrap when they

00:09:58 ◼   ► update the phone app so they would have

00:10:00 ◼   ► to also not update to iOS 11 and that's

00:10:02 ◼   ► unlikely you know so anyway I'm

00:10:05 ◼   ► basically stuck and I have to remove

00:10:07 ◼   ► this feature and this is this is really

00:10:11 ◼   ► a tricky decision because the good thing

00:10:14 ◼   ► is not a lot of people use this feature

00:10:16 ◼   ► it's used by something like 0.1%

00:10:18 ◼   ► according to my analytics of active

00:10:21 ◼   ► users so it's it's a very very low

00:10:23 ◼   ► number but that point 1% is gonna be

00:10:27 ◼   ► really mad and I've tried to warn them

00:10:30 ◼   ► on Twitter ahead of time and say you

00:10:31 ◼   ► know hey just so you know I've been

00:10:32 ◼   ► working on this not going well but but

00:10:35 ◼   ► I've decided it's really out now and I'm

00:10:37 ◼   ► not going I'm going to remove this

00:10:38 ◼   ► feature like the decision is made and

00:10:40 ◼   ► I'm also going to remove it like now

00:10:43 ◼   ► rather than in in a month and a half or

00:10:46 ◼   ► whatever you know whenever iOS 11 ships

00:10:48 ◼   ► and watch OS 4 because I don't want my

00:10:52 ◼   ► entire iOS 11 updates story to be a

00:10:56 ◼   ► removal of a major feature and I don't

00:10:58 ◼   ► want all the one star ratings that I'm

00:11:00 ◼   ► definitely going to get by removing this

00:11:01 ◼   ► feature to apply to my big iOS 11 update

00:11:05 ◼   ► I want I want to get this out of the way

00:11:07 ◼   ► now and I and I want to kind of stop the

00:11:09 ◼   ► influx of new customers finding this

00:11:12 ◼   ► feature and getting accustomed to it

00:11:14 ◼   ► only to have it be ripped away from them

00:11:15 ◼   ► in a month and a half or whatever so I'm

00:11:18 ◼   ► going to remove this feature now and

00:11:21 ◼   ► it's it's always a very tricky balance

00:11:23 ◼   ► because like again it's like you have to

00:11:24 ◼   ► think about all these things that you

00:11:25 ◼   ► have to consider like you're definitely

00:11:28 ◼   ► gonna make a lot of people angry you're

00:11:30 ◼   ► definitely gonna get a lot of one-star

00:11:32 ◼   ► reviews it's going to hurt the app for a

00:11:35 ◼   ► while but the feature wasn't very good

00:11:38 ◼   ► to begin with and I've been getting

00:11:39 ◼   ► one-star reviews over the current

00:11:41 ◼   ► feature as it is today even even from

00:11:44 ◼   ► people who love the rest of the app but

00:11:46 ◼   ► they want this feature to work better so

00:11:49 ◼   ► they say one-star for their whole app

00:11:50 ◼   ► because they're mad at this feature so

00:11:52 ◼   ► like it's uh what should I do

00:11:55 ◼   ► does this sound reasonable I think it

00:11:58 ◼   ► does I think the reality in a situation

00:12:02 ◼   ► like this is that like the the biggest

00:12:04 ◼   ► things that come to mind is at a certain

00:12:06 ◼   ► point there's like the the sunk cost

00:12:08 ◼   ► fallacy that you have to deal with of

00:12:10 ◼   ► the that feeling of like because you've

00:12:12 ◼   ► put so much into something that you

00:12:15 ◼   ► should put more into it to save that

00:12:17 ◼   ► effort that you put into it before

00:12:19 ◼   ► mm-hmm

00:12:20 ◼   ► so like in this case the thing that you

00:12:22 ◼   ► I'd always have in the back of my mind

00:12:23 ◼   ► is this like am i continuing to work on

00:12:25 ◼   ► this feature because I've spent months

00:12:27 ◼   ► working on this feature or does this

00:12:29 ◼   ► feature still make sense in and of

00:12:31 ◼   ► itself like if I was coming at it fresh

00:12:33 ◼   ► to have that in the back of your mind

00:12:35 ◼   ► and then to it's like is what is this

00:12:38 ◼   ► feature getting in the way of you know

00:12:42 ◼   ► being made because you know it's it's

00:12:45 ◼   ► like especially as a 1 as a one-person

00:12:47 ◼   ► developer you know or even a small team

00:12:49 ◼   ► like you you're the one thing that you

00:12:53 ◼   ► can't get more of is time and attention

00:12:55 ◼   ► to work on your app and to make the part

00:12:59 ◼   ► of the vdf that 99.9% of your other

00:13:02 ◼   ► users interact with better and so the

00:13:06 ◼   ► biggest things I'm like it is so hard to

00:13:09 ◼   ► say did you just like accept the fact

00:13:13 ◼   ► that this is going to be unfortunate

00:13:14 ◼   ► that this is not going to be pleasant

00:13:16 ◼   ► for who knows how long for

00:13:18 ◼   ► you know I mean it could be indefinitely

00:13:20 ◼   ► problematic for the very small group of

00:13:21 ◼   ► people but hopefully it's you know for a

00:13:24 ◼   ► month or something or for a couple of

00:13:25 ◼   ► weeks when you know the update comes out

00:13:28 ◼   ► where this gets pulled but the reality

00:13:31 ◼   ► is trying to please that small group of

00:13:34 ◼   ► people indefinitely trying to sort of

00:13:36 ◼   ► pile hacks on top of hacks of this crazy

00:13:39 ◼   ► feature is just never gonna it's no it's

00:13:41 ◼   ► never gonna win and so you kind of have

00:13:43 ◼   ► to at some point just say you know we

00:13:45 ◼   ► tried it it didn't work I'm very sorry

00:13:48 ◼   ► and move on because otherwise you're

00:13:51 ◼   ► just yeah the app is just gonna get

00:13:53 ◼   ► stuck and I mean if it's in a weird way

00:13:55 ◼   ► it's like Thea the reverse of the Sun

00:13:57 ◼   ► cost fallacy is you start to think in

00:13:58 ◼   ► terms of like should I have pulled this

00:14:01 ◼   ► project earlier should I you know put it

00:14:04 ◼   ► in what could I have done in the mean

00:14:05 ◼   ► time and you know it's not that you want

00:14:08 ◼   ► to just you know only slightly try

00:14:10 ◼   ► experimental interesting features and if

00:14:12 ◼   ► at the first sign of trouble back out

00:14:14 ◼   ► because you know a lot of the cool and

00:14:16 ◼   ► interesting things that differentiate

00:14:19 ◼   ► apps and make them useful and

00:14:20 ◼   ► interesting are these kind of more

00:14:22 ◼   ► experimental like going down these crazy

00:14:24 ◼   ► routes and seeing if it can work and

00:14:26 ◼   ► coming up with interesting workarounds

00:14:28 ◼   ► and you know crazy hacks like I love

00:14:29 ◼   ► that part of things but I think at a

00:14:31 ◼   ► certain point you have to decide you

00:14:33 ◼   ► know is this could does this continue to

00:14:35 ◼   ► be worthwhile and it sounds like in your

00:14:36 ◼   ► skin your case like I absolutely agree

00:14:38 ◼   ► that it's time for it to go and it's

00:14:41 ◼   ► just gonna be one of those things where

00:14:42 ◼   ► they will you know you can work on the

00:14:44 ◼   ► messaging around that you can try your

00:14:46 ◼   ► best to kind of message that and maybe

00:14:48 ◼   ► you'll end up putting message may be

00:14:49 ◼   ► having messaging in the app to try and

00:14:52 ◼   ► communicate that because in the majority

00:14:55 ◼   ► of you users almost certainly aren't you

00:14:56 ◼   ► know following overcast FM on Twitter or

00:14:59 ◼   ► whatever or reading your blog like

00:15:00 ◼   ► messaging that as best you can to try

00:15:03 ◼   ► and make sure that you know people are

00:15:05 ◼   ► at least have some understanding about

00:15:07 ◼   ► what's going on but ultimately it's like

00:15:10 ◼   ► the being held hostage by a vocal

00:15:12 ◼   ► minority is just going to stall

00:15:14 ◼   ► everything else out and though you know

00:15:16 ◼   ► if anything the best thing is to do is

00:15:18 ◼   ► to just call it quits like I like that

00:15:19 ◼   ► you're just you decided to do it early

00:15:21 ◼   ► and the cycle just get it done and just

00:15:23 ◼   ► put that to the side so you can focus on

00:15:26 ◼   ► your next big updates for iOS 11 because

00:15:28 ◼   ► you know

00:15:29 ◼   ► once you've done it the nice thing in

00:15:31 ◼   ► many ways at least it's a funny thing to

00:15:33 ◼   ► say but I want things I like about the

00:15:35 ◼   ► app store is that like I don't it's not

00:15:37 ◼   ► like I work in a physical retail store

00:15:38 ◼   ► or something like that where if I do

00:15:41 ◼   ► something that my customers don't like

00:15:42 ◼   ► they reach out to like to me

00:15:45 ◼   ► specifically in a like a physical way

00:15:47 ◼   ► that I can't avoid like if you make

00:15:50 ◼   ► something do something lips may upset

00:15:51 ◼   ► some people you can in some ways isolate

00:15:54 ◼   ► yourself from that and just move on at

00:15:56 ◼   ► least for a period of time let it die

00:15:57 ◼   ► down and focus on the things that are

00:16:00 ◼   ► gonna make your app better for everyone

00:16:01 ◼   ► else because almost certainly like that

00:16:03 ◼   ► is better for the future of the app then

00:16:06 ◼   ► trying to hold hold on to a feature and

00:16:08 ◼   ► like in this case your hand is kind of

00:16:10 ◼   ► forced but I mean there's even

00:16:11 ◼   ► situations where you have to make like

00:16:15 ◼   ► any change in an app is going to have

00:16:16 ◼   ► this exact same experience I think like

00:16:19 ◼   ► if you change the font or you change the

00:16:21 ◼   ► color or you change the layout people

00:16:24 ◼   ► will be upset like there's just that is

00:16:26 ◼   ► the that is the inevitable reality of

00:16:28 ◼   ► any change but if that change is making

00:16:30 ◼   ► the app better then it's kind of

00:16:33 ◼   ► essential to just develop a bit of a you

00:16:35 ◼   ► know it's like I struggled with this a

00:16:36 ◼   ► lot early in the early days of my to

00:16:38 ◼   ► indie career with this feeling very

00:16:41 ◼   ► personal about it but a certain point

00:16:42 ◼   ► I've had to just develop a thick and

00:16:43 ◼   ► thick enough skin to say whatever this

00:16:46 ◼   ► is the I'm trying to make the app as the

00:16:47 ◼   ► best app that I can make it and just go

00:16:51 ◼   ► with that and hope and hope that people

00:16:53 ◼   ► accept that you know like the majority

00:16:55 ◼   ► better for more people is always almost

00:16:58 ◼   ► certainly better than leaving it as it

00:17:01 ◼   ► was for a small group of people this

00:17:04 ◼   ► this has been a lot of my rationale for

00:17:06 ◼   ► for choosing to remove this feature now

00:17:07 ◼   ► because like I have you know like the

00:17:09 ◼   ► sunk cost fallacy is definitely a play

00:17:11 ◼   ► here and but but I think what you what

00:17:13 ◼   ► you just described and what I will now I

00:17:15 ◼   ► guess coin the the the lost opportunity

00:17:19 ◼   ► cost tragedy like I like I could have

00:17:24 ◼   ► done so much more for the main app in

00:17:26 ◼   ► the time I've spent on this feature and

00:17:27 ◼   ► and if I would have known this feature

00:17:30 ◼   ► would have cost so much time I probably

00:17:32 ◼   ► wouldn't have started tackling it in the

00:17:33 ◼   ► first place but you know that that's all

00:17:37 ◼   ► gone now like that now you have to focus

00:17:38 ◼   ► on well what do I have now and the fact

00:17:40 ◼   ► is I'm already like more

00:17:43 ◼   ► than halfway through the summer and I

00:17:45 ◼   ► have done relatively little to adapt the

00:17:48 ◼   ► main app for iOS 11 because I keep

00:17:50 ◼   ► getting stuck and watch problems and

00:17:53 ◼   ► developing for the watch in general it

00:17:55 ◼   ► as you know it's better than probably

00:17:58 ◼   ► anybody it's complicated and it's slow

00:18:00 ◼   ► going you know like it's it's a very you

00:18:03 ◼   ► know because it is first of all this

00:18:05 ◼   ► like kind of sister device to the phone

00:18:07 ◼   ► so it has like you have to do a lot of

00:18:09 ◼   ► things through the phone first and then

00:18:11 ◼   ► over the Bluetooth or Wi-Fi to the watch

00:18:12 ◼   ► and it also is very you know rudimentary

00:18:15 ◼   ► performance hardware because it has to

00:18:18 ◼   ► fit in a watch like it has to have the

00:18:20 ◼   ► power and hope to fit in the watch and

00:18:21 ◼   ► everything else like it's very low

00:18:23 ◼   ► powered hardware the OS is fairly young

00:18:25 ◼   ► the api's are fairly young and they're

00:18:28 ◼   ► and very limited so it's it's just very

00:18:31 ◼   ► slow going development wise everything

00:18:33 ◼   ► you do to develop for the watch is more

00:18:36 ◼   ► difficult and more cumbersome the cycles

00:18:39 ◼   ► of division of developing and testing

00:18:41 ◼   ► and debugging are all longer just

00:18:43 ◼   ► because it's this low-power thing that's

00:18:46 ◼   ► complex and tied to your phone so watch

00:18:50 ◼   ► development for me has just been a

00:18:51 ◼   ► massive time sync and a lot of a lot of

00:18:56 ◼   ► my users do use the watch app but you

00:19:00 ◼   ► know way more people use the watch app

00:19:02 ◼   ► than whoever used the send to watch

00:19:03 ◼   ► offline playback and part of that you

00:19:06 ◼   ► know the feature could be better I mean

00:19:08 ◼   ► I'm not saying it was perfect before but

00:19:09 ◼   ► you know it could be way better actually

00:19:11 ◼   ► but the fact is like it is not worth

00:19:14 ◼   ► investing as much time as I've been

00:19:17 ◼   ► investing in the watch app for the

00:19:19 ◼   ► amount of use that she gets you know

00:19:21 ◼   ► still by far like I have something like

00:19:22 ◼   ► 15% of my users who have the watch app

00:19:25 ◼   ► installed but only about one percent of

00:19:28 ◼   ► the daily actives actually interact with

00:19:31 ◼   ► it like they have it running in case

00:19:32 ◼   ► they need it

00:19:33 ◼   ► very few people actually use it or

00:19:36 ◼   ► interact with it more than just looking

00:19:38 ◼   ► at it or glancing at it or even just

00:19:39 ◼   ► having it installed and never launching

00:19:41 ◼   ► it so I need to now just my time

00:19:46 ◼   ► allocation for the reality of the usage

00:19:49 ◼   ► of the watch app and how and how

00:19:52 ◼   ► expensive time wise it is for me to

00:19:55 ◼   ► invest

00:19:56 ◼   ► into it you know like I said like it's

00:19:58 ◼   ► just it's so it's just so slow going to

00:20:01 ◼   ► to make real progress on the watch it's

00:20:04 ◼   ► just it's difficult and it's expensive

00:20:05 ◼   ► so what I need to do now is focus on the

00:20:10 ◼   ► the main app the main UI the main

00:20:13 ◼   ► interactions people actually do with it

00:20:15 ◼   ► because that they know that's what I'm

00:20:15 ◼   ► focused on for I was 11 this is no

00:20:17 ◼   ► secret I'm as we discuss I'm adopting

00:20:19 ◼   ► the new drag-and-drop api's I'm updating

00:20:22 ◼   ► some of the UI you know here and there

00:20:24 ◼   ► for various like little behavioral

00:20:26 ◼   ► tweaks that people have wanted and stuff

00:20:27 ◼   ► like that so like I have I have a good

00:20:30 ◼   ► amount of work still to do all my table

00:20:32 ◼   ► views and iOS 11 have weird animation

00:20:35 ◼   ► bugs and are broken because of the way

00:20:36 ◼   ► the change table view sizing everything

00:20:38 ◼   ► I still haven't haven't started dealing

00:20:40 ◼   ► with that yet because I haven't had

00:20:42 ◼   ► times I keep losing time to massive you

00:20:45 ◼   ► know tar pits of watch development so I

00:20:48 ◼   ► just need to end the watch development

00:20:52 ◼   ► now and and it's okay like I'm going to

00:20:54 ◼   ► maintain the app and update the app over

00:20:57 ◼   ► time but it has to be a small scope it

00:21:01 ◼   ► has to be like this watch app will

00:21:04 ◼   ► continue to work and I'm gonna make it

00:21:06 ◼   ► as fast as I possibly can and even fast

00:21:09 ◼   ► to interact with which by the way is

00:21:10 ◼   ► actually better without the offline

00:21:11 ◼   ► feature because then I have back to a

00:21:12 ◼   ► one page interface and I don't have to

00:21:14 ◼   ► link all these dextra frameworks and

00:21:16 ◼   ► everything is what actually is way

00:21:17 ◼   ► faster without without the that the lot

00:21:20 ◼   ► the offline playback and it's easier to

00:21:23 ◼   ► touch it without your touch is being

00:21:24 ◼   ► interpreted as swipes so that's nice

00:21:26 ◼   ► anyway so the watch app is way better

00:21:29 ◼   ► without this feature and it's more in

00:21:32 ◼   ► line with the amount of time and has

00:21:34 ◼   ► earned from from my development time for

00:21:37 ◼   ► the usage it actually gets like for the

00:21:39 ◼   ► for those 1% of people who were

00:21:41 ◼   ► interacting with it every day I want to

00:21:43 ◼   ► make it really fast cuz 1% is not great

00:21:45 ◼   ► but it isn't like if I leave it without

00:21:47 ◼   ► the offline playback it isn't that big

00:21:49 ◼   ► of a time suck but that does not make it

00:21:52 ◼   ► worth investing half of my development

00:21:55 ◼   ► year into it when the rest of the app

00:21:57 ◼   ► needs attention to you know be

00:22:00 ◼   ► responsive as week by indeed prime

00:22:02 ◼   ► indeed prime helps tech talent such as

00:22:04 ◼   ► yourself and other software developers

00:22:06 ◼   ► and data scientists simplify their job

00:22:09 ◼   ► search and

00:22:10 ◼   ► and their dream job indeed prime

00:22:12 ◼   ► candidates get immediate exposure to the

00:22:14 ◼   ► best tech companies with just one simple

00:22:16 ◼   ► application - indeed prime companies on

00:22:18 ◼   ► indeed primes exclusive platform message

00:22:21 ◼   ► the candidates with salary information

00:22:22 ◼   ► right up front and the average software

00:22:24 ◼   ► developer gets five employer contacts

00:22:26 ◼   ► and an average salary offer of one

00:22:28 ◼   ► hundred and twenty five thousand dollars

00:22:29 ◼   ► a year

00:22:30 ◼   ► indeed prime is a hundred percent free

00:22:32 ◼   ► for candidates no strings attached 100%

00:22:35 ◼   ► free for you sign up now and indeed.com

00:22:38 ◼   ► slash prime once again indeed.com slash

00:22:42 ◼   ► prime thank you very much - indeed prime

00:22:45 ◼   ► for sponsoring our show so the thing

00:22:48 ◼   ► that you as you're saying that that

00:22:49 ◼   ► Casso comes to mind I think just in

00:22:50 ◼   ► general is the being aware of the trap

00:22:55 ◼   ► of how we allocate our time as as we

00:23:01 ◼   ► work on our abs because this is

00:23:02 ◼   ► something that I've actually been

00:23:03 ◼   ► struggling with a lot recently and I

00:23:04 ◼   ► have like the double fold problem of

00:23:07 ◼   ► where do I allocate my time within an

00:23:10 ◼   ► app and then where do i hella Kate my

00:23:12 ◼   ► time within a variety of apps that I

00:23:15 ◼   ► have well of course and I think this is

00:23:18 ◼   ► this loops back into the sort of this

00:23:20 ◼   ► this topic around removing features

00:23:22 ◼   ► because it is so easy to get stuck in

00:23:26 ◼   ► these rabbit holes I find where you kind

00:23:28 ◼   ► of you're working on something that

00:23:30 ◼   ► isn't actually giving you a lot of

00:23:32 ◼   ► return and I think it is so like that

00:23:36 ◼   ► means that the traps that I am so easily

00:23:38 ◼   ► falling into ones where you get like the

00:23:42 ◼   ► feedback we get from our customers

00:23:43 ◼   ► whether that be an email or online you

00:23:45 ◼   ► know in in the app and the app store

00:23:47 ◼   ► wherever it comes comes from we get this

00:23:50 ◼   ► feedback and it's so easy to misconstrue

00:23:52 ◼   ► the representativeness of that feedback

00:23:56 ◼   ► and I think I can in this case it's like

00:23:59 ◼   ► if you you know you got the you had a

00:24:01 ◼   ► lot of you had this feeling that you had

00:24:03 ◼   ► a lot of people requesting offline watch

00:24:06 ◼   ► playback like from there you know this

00:24:08 ◼   ► was a highly requested feature since the

00:24:10 ◼   ► watch came out great it turns out point

00:24:14 ◼   ► 1 percent of people actually used it in

00:24:16 ◼   ► practice right right like and I think

00:24:19 ◼   ► that is something that is it's like the

00:24:22 ◼   ► best way to remove a feature

00:24:23 ◼   ► probably is - never had it in the first

00:24:27 ◼   ► place which is pretty like like

00:24:31 ◼   ► pre-emptive removal which did you know

00:24:33 ◼   ► does it like doesn't it doesn't dig you

00:24:34 ◼   ► out if I say that the situation you find

00:24:35 ◼   ► yourself in now and I mean in the

00:24:37 ◼   ► reality is you're just gonna have to

00:24:38 ◼   ► sound you know it's like you just have

00:24:39 ◼   ► to navigate it as best you can

00:24:41 ◼   ► it's out in the world but I think to

00:24:43 ◼   ► wrap this up at the thing that comes to

00:24:45 ◼   ► mind for me is its I'm increasingly

00:24:48 ◼   ► trying to be very analytical about where

00:24:52 ◼   ► I'm spending my effort to try and

00:24:54 ◼   ► maximize the output from that because it

00:24:56 ◼   ► is otherwise I end up spending time on

00:24:59 ◼   ► these apps or on these features that you

00:25:01 ◼   ► know I get the impression are well are

00:25:03 ◼   ► very desired but the reality is they're

00:25:06 ◼   ► not in the common case they're these

00:25:07 ◼   ► sort of these edge case users or uses of

00:25:11 ◼   ► the app or honestly even more

00:25:13 ◼   ► problematic are thoth ones where they

00:25:15 ◼   ► change the core functionality to be

00:25:18 ◼   ► slightly worse make a custom or a

00:25:22 ◼   ► special use case slightly better like

00:25:26 ◼   ► those are the situations where it's I

00:25:28 ◼   ► think it's very important to when we're

00:25:30 ◼   ► going into these kinds of things it's

00:25:32 ◼   ► like to take that step back and say like

00:25:33 ◼   ► how many people realistically are going

00:25:35 ◼   ► to probably use this and do I have any

00:25:38 ◼   ► measures in my app that I can use to

00:25:41 ◼   ► identify that like you know even just at

00:25:43 ◼   ► the basic level of like what percentage

00:25:45 ◼   ► of my apps of users in this case like

00:25:47 ◼   ► have an Apple watch and like knowing

00:25:49 ◼   ► that number ahead of time you know like

00:25:51 ◼   ► that is the absolute if every single

00:25:52 ◼   ► person used it all that would be this

00:25:54 ◼   ► many people and like you can go down

00:25:56 ◼   ► that road of being very thoughtful about

00:25:59 ◼   ► it ahead of time because otherwise you

00:26:01 ◼   ► end up in you know in this situation and

00:26:02 ◼   ► I've gotten myself in there many times

00:26:04 ◼   ► myself where it's it's it's so easy to

00:26:07 ◼   ► get sucked it down these these things

00:26:09 ◼   ► that can become these likely yeah like

00:26:11 ◼   ► you sink you said tarp it's like that's

00:26:12 ◼   ► what it feels like sometimes where you

00:26:13 ◼   ► and almost certainly we're at our best

00:26:16 ◼   ► when we're able to move quickly when

00:26:19 ◼   ► we're able to focus on features that

00:26:21 ◼   ► look if we can make that core experience

00:26:23 ◼   ► better and better and better and

00:26:24 ◼   ► reflects like the refining having the it

00:26:28 ◼   ► having the attention and the patience to

00:26:29 ◼   ► refine that core experience over and

00:26:32 ◼   ► over and being okay with letting other

00:26:34 ◼   ► opportunities go fall to the side

00:26:37 ◼   ► because I think I don't know if you ran

00:26:39 ◼   ► into this but what I often run into

00:26:40 ◼   ► wouldn't these kind of these side

00:26:41 ◼   ► features is I have this this fear I

00:26:44 ◼   ► guess like the fear of missing out like

00:26:47 ◼   ► I don't want to be it's like I know this

00:26:49 ◼   ► opportunity exists like here's this

00:26:51 ◼   ► functionality here's this thing that I

00:26:53 ◼   ► could build you know in this case

00:26:55 ◼   ► building offline watch play black like

00:26:57 ◼   ► it's it's a known thing it isn't this

00:26:59 ◼   ► crazy novel invention that you've come

00:27:01 ◼   ► up with it's like it's a pretty obvious

00:27:02 ◼   ► next step be it's like is it getting

00:27:07 ◼   ► over the fear that someone else is going

00:27:09 ◼   ► to do it someone else is going to do it

00:27:12 ◼   ► better and as a result like they're

00:27:15 ◼   ► going to have this runaway success that

00:27:17 ◼   ► crushes you in your business like that's

00:27:20 ◼   ► a constant fear of mine but the reality

00:27:22 ◼   ► is that it's almost certainly not the

00:27:24 ◼   ► case it's possible like in the same way

00:27:27 ◼   ► that it's possible to like win the

00:27:29 ◼   ► lottery and in some ways the odds are

00:27:31 ◼   ► probably more similar it's like it's the

00:27:33 ◼   ► there's a point oh one percent chance of

00:27:35 ◼   ► this that that situation happening but

00:27:38 ◼   ► the reality is the vast move or more

00:27:41 ◼   ► likely thing is that your app will would

00:27:44 ◼   ► lose out and fall to and fall away

00:27:46 ◼   ► because the core experience got worse

00:27:48 ◼   ► over time rather than that it didn't

00:27:51 ◼   ► have some one little feature and like

00:27:54 ◼   ► that's really hard like I've had having

00:27:56 ◼   ► to say no to something that I know that

00:27:58 ◼   ► I can do but just would end up being

00:28:00 ◼   ► this massive time suck is really hard

00:28:04 ◼   ► but it's probably an essential thing for

00:28:06 ◼   ► us to do otherwise we're just gonna you

00:28:08 ◼   ► know like I don't know what the next

00:28:10 ◼   ► features that you are I we are going to

00:28:12 ◼   ► add to our apps that were ultimately

00:28:12 ◼   ► going to kind of regret and maybe you

00:28:14 ◼   ► have to walk back from and have to

00:28:16 ◼   ► navigate and take our lumps when we

00:28:18 ◼   ► remove it but almost certainly there's

00:28:21 ◼   ► opportunities are going to keep

00:28:22 ◼   ► presenting themselves and we just have

00:28:24 ◼   ► to try and focus on the right things

00:28:26 ◼   ► is this all your like subtle long way of

00:28:31 ◼   ► saying that you want me to bring back

00:28:32 ◼   ► one touch play back no no no no that's

00:28:35 ◼   ► fine

00:28:35 ◼   ► I'm okay with the to touch what about

00:28:38 ◼   ► the play button on the right side is

00:28:39 ◼   ► that is I could enough play button on

00:28:41 ◼   ► the right side is perfect okay yeah but

00:28:44 ◼   ► but it is an example of like it's that

00:28:47 ◼   ► it's that core experience of you know

00:28:49 ◼   ► overcast like the optimizing those are

00:28:51 ◼   ► those the behavior of playing a podcast

00:28:54 ◼   ► is like a core experience that should be

00:28:57 ◼   ► perfect

00:28:58 ◼   ► yeah and that's where you should be

00:29:00 ◼   ► spending your time rather than worrying

00:29:02 ◼   ► about the side features that a few

00:29:05 ◼   ► people use a few people love like there

00:29:07 ◼   ► may be super passionate and that's

00:29:08 ◼   ► awesome but that's not most your users

00:29:11 ◼   ► and that's get going down that road too

00:29:13 ◼   ► far it's just gonna end up you know

00:29:15 ◼   ► missing it's like missing out on way

00:29:17 ◼   ► bigger opportunities than missing out on

00:29:18 ◼   ► this small potato opportunity over here

00:29:20 ◼   ► not to mention I gotta fix on my broken

00:29:22 ◼   ► table views still that's alright thanks

00:29:25 ◼   ► for listening everybody and we'll talk

00:29:27 ◼   ► to you next week bye