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
◼
►
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: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: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: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: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: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: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
◼
►
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: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