#196: Faust had it easy.
00:00:00
◼
►
Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing
00:00:04
◼
►
news of note in iOS development, Apple and the like. I'm your host, David Smith. I'm
00:00:08
◼
►
an independent iOS and Mac developer based in Herne, Virginia. This is show number 196.
00:00:13
◼
►
Today is Wednesday, September 24th. Developing Perspective is never longer than 15 minutes.
00:00:19
◼
►
So let's get started. So last week, we had the fun, the excitement, the spectacle that
00:00:26
◼
►
That is the week where iOS and the new iPhones drop.
00:00:30
◼
►
In the last couple of years, this
00:00:32
◼
►
has always been in the same week.
00:00:33
◼
►
iOS drops on the Wednesday.
00:00:35
◼
►
The iPhones come out on the Friday.
00:00:37
◼
►
You have about a week before that,
00:00:39
◼
►
where the event's on the Tuesday before traditionally,
00:00:43
◼
►
and Apple seems to like this kind of pattern.
00:00:46
◼
►
And so it's always a bit of an intense and insane time
00:00:49
◼
►
as an app developer, because you are
00:00:53
◼
►
trying to balance a couple of things that
00:00:55
◼
►
impossible to ultimately to balance correctly or at least to think of what
00:01:00
◼
►
would be the correct thing to do. And mostly what I'm going to be talking
00:01:02
◼
►
about today is the kind of impossible process that we have we as developers
00:01:08
◼
►
have to go through to be compatible with the new stuff as quickly as possible
00:01:15
◼
►
while yet still delivering quality experiences to our customers and while
00:01:19
◼
►
while staying sane and healthy.
00:01:24
◼
►
So over the summer, you know, so whatever, since WWDC the second week in June or somewhere
00:01:30
◼
►
around then, Apple comes out and they present the new stuff.
00:01:35
◼
►
Here's iOS 8 in this case.
00:01:37
◼
►
Here's all the cool new stuff.
00:01:39
◼
►
Here's the sessions where you can go and we'll talk about how it's going to work, what it
00:01:42
◼
►
looks like, etc.
00:01:44
◼
►
And you go to WWDC or you watch the videos at home or however you do that.
00:01:48
◼
►
And you take a look and you see all the cool new stuff,
00:01:50
◼
►
and you go download the betas, beta 1 of the new OS.
00:01:55
◼
►
And if you're anything like me, you start to look at it,
00:01:58
◼
►
and you start to be like, oh, that's really cool.
00:02:00
◼
►
Let me try it.
00:02:01
◼
►
And sometimes it works, and sometimes it doesn't.
00:02:04
◼
►
Because when Apple says this is beta 1, in some ways,
00:02:08
◼
►
I think they're really more honest to say,
00:02:10
◼
►
this is public alpha 1.
00:02:13
◼
►
The first couple of betas of new versions of iOS,
00:02:16
◼
►
especially for new API, not just improvements on existing things,
00:02:20
◼
►
but if it's a whole new set of functionality, if it's healthkit,
00:02:24
◼
►
if it's metal, whatever it is.
00:02:25
◼
►
I imagine there's always big problems and changes that
00:02:29
◼
►
will come out in those first couple of betas.
00:02:31
◼
►
And that's in some ways good.
00:02:33
◼
►
That's the whole point of that process,
00:02:35
◼
►
is for us to give feedback about it, to actually see it in use.
00:02:38
◼
►
And honestly, from talking to a lot of engineers at Apple,
00:02:40
◼
►
it's just the reality of they have
00:02:42
◼
►
this kind of immovable arbitrary date
00:02:44
◼
►
that they have to ship by.
00:02:46
◼
►
And so it's as good as they could get it by that date.
00:02:50
◼
►
And sometimes, features aren't even
00:02:52
◼
►
available in the first betas.
00:02:53
◼
►
So you have that problem going on with you, too.
00:02:56
◼
►
So you go through the summer, and you look at those changes.
00:02:59
◼
►
And the betas improve one over one.
00:03:02
◼
►
I think this year, I went onto my carry phone.
00:03:05
◼
►
I think it was beta 4?
00:03:08
◼
►
I think it was beta 4.
00:03:09
◼
►
I put it on my phone.
00:03:10
◼
►
I tend to wait a little while, especially
00:03:12
◼
►
a year like this where there was less, it was less groundbreaking in terms of the functionalities
00:03:19
◼
►
and things that were added to it are things that are mostly, you know, new functionalities
00:03:24
◼
►
that other developers will add to their applications rather than if I was seven, I think I went
00:03:28
◼
►
beta two on my main phone just because I wanted to experience how Apple is trying to change
00:03:34
◼
►
the interaction model. But this year, I did that. And you know, we run through that process
00:03:40
◼
►
all through the summer, and then you kind of probably late August, you get a pretty
00:03:44
◼
►
good sense of when the event's going to be.
00:03:46
◼
►
And you start having to make decisions about your applications.
00:03:48
◼
►
You start having to look at your portfolio of apps or your main app or whatever it is
00:03:52
◼
►
and say, "How am I going to get this ready for that first launch?
00:03:58
◼
►
What features am I going to add?
00:03:59
◼
►
What issues or bugs are going to come up?
00:04:02
◼
►
What rumors are coming out of, you know, like the various rumor mills about what its device
00:04:08
◼
►
changes are going to come into place? What are the things that at WWDC you kind of picked
00:04:12
◼
►
up on in terms of the reading between the lines about what's going to change? And you
00:04:17
◼
►
have to start making some really, really hard decisions. And a lot of these are really hard
00:04:21
◼
►
because you aren't necessarily making very important for your business and for your apps
00:04:27
◼
►
decisions without complete information, right? I, you know, this fall, I was looking through
00:04:33
◼
►
and it's like you hear I heard all these rumors that there are big phones coming out that
00:04:37
◼
►
There's going to be a big phone.
00:04:38
◼
►
We had a lot of estimates about what the resolutions are going
00:04:41
◼
►
to be, how that's going to work.
00:04:42
◼
►
We have the adaptive layout session
00:04:44
◼
►
at WWDC, which kind of heads in that direction.
00:04:47
◼
►
We have the resizable simulator.
00:04:49
◼
►
There's lots of things that are indicating,
00:04:51
◼
►
hey, this is coming.
00:04:53
◼
►
But knowing that it's coming in the abstract
00:04:57
◼
►
and actually being ready for it are two very different things.
00:05:01
◼
►
It was good to be aware-- this is something
00:05:03
◼
►
that I should be thinking about and I should be playing with.
00:05:06
◼
►
a bunch of my apps at kind of weird resolutions in the simulator to see how they would break
00:05:11
◼
►
and I fix them a bit.
00:05:12
◼
►
But the reality is, when I look at that, is I can't make my app ready for any possible
00:05:20
◼
►
size and any possible layout and any possible screen scaling based purely on rumors and
00:05:27
◼
►
expect it to be perfect from day one.
00:05:30
◼
►
And so you have this weird deal you have to make with yourself of like, am I going to
00:05:35
◼
►
spend lots of time on something without information that I know I'm necessarily
00:05:39
◼
►
going to be spinning my wheels a little bit or am I just going to wait am I just
00:05:45
◼
►
going to wait and see until I have all the information be reasonably prepared
00:05:49
◼
►
and dive in and the reality is you kind of are balancing a couple of different
00:05:53
◼
►
trade-offs right so your some of the trade-offs you have to be thinking about
00:05:59
◼
►
is so the first one and that's probably most significant this time of year is
00:06:03
◼
►
is the App Review delay.
00:06:05
◼
►
App Review, I feel so bad for those people,
00:06:09
◼
►
those wonderful people in App Review this time of year,
00:06:12
◼
►
who are, I'm sure, just being absolutely crushed
00:06:16
◼
►
under just an overwhelming wave of updates.
00:06:19
◼
►
I'm not entirely sure how many they've pushed out at this point.
00:06:22
◼
►
I actually expect probably at the end of this week,
00:06:24
◼
►
I'll do an analysis of that because I love playing with numbers.
00:06:27
◼
►
But they are probably doing hundreds of thousands of app updates
00:06:32
◼
►
app updates, if I had to guess, in that kind of range.
00:06:34
◼
►
And many of which are going to be rejected
00:06:37
◼
►
or are going to have to come back and forth,
00:06:39
◼
►
or the people who are misunderstanding new rules.
00:06:41
◼
►
And so App Review is going to take a long time.
00:06:44
◼
►
I think the current estimate that I
00:06:45
◼
►
saw from the App Review Times website that
00:06:50
◼
►
is something like it's around 10 days right now, which
00:06:52
◼
►
is a long time in general, and especially feels especially
00:06:58
◼
►
long when your customers are going to be expecting things
00:07:01
◼
►
quicker and quicker.
00:07:02
◼
►
And so you have this pressure to say,
00:07:04
◼
►
do I need to be in that first initial wave
00:07:07
◼
►
that Apple opens the gates to submissions at whatever it is,
00:07:12
◼
►
4 PM Pacific on announcement day or something like that.
00:07:16
◼
►
And do I need my build ready to go at that moment
00:07:20
◼
►
so I can be one of the first in lines,
00:07:21
◼
►
so I can be ready on day one?
00:07:23
◼
►
That's a first consideration.
00:07:25
◼
►
Second consideration, you have weird considerations
00:07:27
◼
►
about marketing.
00:07:29
◼
►
Now on the one hand, it's awesome to be first.
00:07:31
◼
►
It's awesome to have these things out and available
00:07:35
◼
►
Apple did a huge range of features in the App Store.
00:07:39
◼
►
There's a lot of press talking about it,
00:07:40
◼
►
and press looking for opportunities
00:07:42
◼
►
to highlight apps that are taking advantage
00:07:44
◼
►
of new capabilities, new cool things that
00:07:46
◼
►
weren't possible before.
00:07:48
◼
►
That's all really cool.
00:07:49
◼
►
But that's also kind of bad, because there
00:07:52
◼
►
are more apps being launched and updated at once,
00:07:56
◼
►
probably last week and this week,
00:07:58
◼
►
than there are at most other times of the year,
00:08:00
◼
►
other than perhaps the week couple weeks before Christmas.
00:08:04
◼
►
Like, it is a very hard time in some ways
00:08:06
◼
►
to get attention because you're not the only one vying for it.
00:08:10
◼
►
If you wait a week, you wait a couple weeks,
00:08:12
◼
►
the first week of October, and you
00:08:13
◼
►
launch this great new thing with awesome new features,
00:08:16
◼
►
in some ways it's easier to get attention.
00:08:18
◼
►
So you have to balance those issues.
00:08:21
◼
►
Another issue, of course, is there's always
00:08:22
◼
►
going to be bugs and things that are
00:08:24
◼
►
going to happen to your applications, going from one OS
00:08:27
◼
►
As much as you try to be clever and thoughtful and defensive in your application coding,
00:08:35
◼
►
in my experience it is impossible to catch all the issues that are going to come up when
00:08:39
◼
►
the final GM comes and you launch your application on it for the first time.
00:08:43
◼
►
And the crazy thing too is you won't know until that final GM if it's going to break.
00:08:48
◼
►
I had a couple of my applications that were fine in terms of they weren't updated to take
00:08:53
◼
►
advantage of the new stuff, but the old version ran fine.
00:08:56
◼
►
Beta 1, beta 2, beta 3, beta 4, beta 5, last beta worked fine.
00:08:59
◼
►
GM, it crashes.
00:09:01
◼
►
It crashes every time you start to do something.
00:09:04
◼
►
It's like, oh, OK.
00:09:06
◼
►
So I just found out that I have this problem essentially
00:09:11
◼
►
a few minutes before submissions open up.
00:09:15
◼
►
I downloaded the last GM and tried.
00:09:19
◼
►
And so those kind of bugs and issues
00:09:20
◼
►
are always going to be a weird thing that you're going to have to try and balance between.
00:09:26
◼
►
Because as starting at that, you know, starting when Apple pulls the trigger and launches
00:09:31
◼
►
it out into the world, it seems like right now we're getting, you know, 10, 20, 30, 40%
00:09:37
◼
►
of people updating within the first week. And it goes pretty steadily thereafter. Like
00:09:41
◼
►
Apple is very good at pushing out these updates. And so a lot of my customers are going to
00:09:45
◼
►
start complaining and saying, hey, it doesn't work. Hey, it doesn't work. So I need to be
00:09:49
◼
►
But at the same time, if I rush something out, I'm also going to probably introduce
00:09:53
◼
►
bugs because when I rush something out and don't have time to thoroughly test it, try
00:09:57
◼
►
it, beta test it with friends, etc., there's not going to be other trouble.
00:10:01
◼
►
And so it's impossible to really balance between those and you just kind of have to do the
00:10:04
◼
►
best you can.
00:10:05
◼
►
You have to think about things like, are these new features worth it?
00:10:08
◼
►
Am I going to get a return on them?
00:10:10
◼
►
Am I putting something out?
00:10:12
◼
►
There's a term, I think it was Horst that first used it, where it was hygiene features.
00:10:18
◼
►
Having to do work that is just because people expect it
00:10:23
◼
►
at this point is really tough as a developer,
00:10:26
◼
►
especially if you're an independent or a small company.
00:10:29
◼
►
Because doing those features, you're
00:10:31
◼
►
not really going to get credit for.
00:10:32
◼
►
You're not necessarily building a lot of goodwill
00:10:34
◼
►
because people expect it.
00:10:35
◼
►
It's like, why doesn't it work on the big phone?
00:10:37
◼
►
I just bought my big phone.
00:10:38
◼
►
Why doesn't the app work?
00:10:39
◼
►
When the app works, they're like, great.
00:10:41
◼
►
Now it works on my big phone.
00:10:42
◼
►
They didn't see that as a feature that you added,
00:10:44
◼
►
even if it took lots and lots of work.
00:10:47
◼
►
It's just that's the thing that you had to do in order
00:10:53
◼
►
to reach the minimum bar.
00:10:56
◼
►
And so it's really kind of a tricky trade-off
00:10:58
◼
►
that you have to think through what's worth spending time on
00:11:00
◼
►
and what isn't.
00:11:02
◼
►
And then the last thing is you have
00:11:04
◼
►
to understand what your tolerance is for wasted effort.
00:11:07
◼
►
There's a lot of times that will happen in iOS where
00:11:09
◼
►
if you work too much on the early betas,
00:11:12
◼
►
you're going to be stuck working around weird issues
00:11:15
◼
►
and building all this code that kind of is working around
00:11:18
◼
►
an issue that sometimes will just be a bug that
00:11:20
◼
►
gets fixed in the final GM.
00:11:22
◼
►
Sometimes it is a intentional limitation or issue
00:11:26
◼
►
that only makes sense once the full range of capabilities
00:11:29
◼
►
of the final phone or something gets laid out.
00:11:32
◼
►
You have to decide how much your tolerance is for that.
00:11:35
◼
►
So given all those, you have to decide
00:11:38
◼
►
what's your approach going to be.
00:11:39
◼
►
And first, before I dive into what I did this year,
00:11:42
◼
►
I'll talk through at a high level what
00:11:43
◼
►
are the things you can do.
00:11:44
◼
►
You can kind of be like the as ready as you could ever be.
00:11:47
◼
►
You're working feverishly.
00:11:48
◼
►
You're battling through buggy betas and API changes.
00:11:50
◼
►
You're getting ready as absolutely possible
00:11:52
◼
►
for that estimated release date.
00:11:54
◼
►
You have builds ready to go at a moment's notice.
00:11:57
◼
►
As soon as Apple flips the switch,
00:11:58
◼
►
you're uploading the build in iTunes Connect.
00:12:00
◼
►
You are as fast as you can be.
00:12:02
◼
►
If you're a big company, this is almost certainly
00:12:04
◼
►
what you're going to be doing.
00:12:05
◼
►
If you work for Tumblr or Twitter or someone like that,
00:12:07
◼
►
you're a big company who is vitally important
00:12:10
◼
►
with a large team, yet you can kind of spin your wheels
00:12:13
◼
►
in some ways, and that's fine.
00:12:14
◼
►
probably what you're doing.
00:12:15
◼
►
You're going to do a measured compatibility thing where you're kind of making sure things
00:12:20
◼
►
don't break.
00:12:21
◼
►
You have some amount of changes and fixes vaguely ready to go.
00:12:26
◼
►
You'll download the latest GM.
00:12:28
◼
►
You'll submit it in a day or two, maybe something like that.
00:12:30
◼
►
Maybe you're kind of ready.
00:12:32
◼
►
Maybe you're kind of keeping an eye on changes.
00:12:34
◼
►
You have plans in place for basic compatibility, but you don't really begin in earnest until
00:12:38
◼
►
you have all the information about what it is that those changes are going to involve.
00:12:43
◼
►
Or maybe you just wait and see.
00:12:44
◼
►
and you don't really start thinking about this until the final announcement and you
00:12:49
◼
►
have all the information, you have the final GM and you can get going.
00:12:52
◼
►
Those are kind of the four general spectra, the spectrum between which you can work.
00:12:57
◼
►
This year, I ended up mostly taking the approach of kind of the second one and a little bit
00:13:02
◼
►
of the third one for a few of my apps where I was definitely not working feverishly and
00:13:07
◼
►
battling betas over the summer.
00:13:08
◼
►
I've done that before, and it is just so soul-crushing.
00:13:14
◼
►
But this year, what I did is I made sure that my apps
00:13:16
◼
►
generally-- I kind of knew what was going to break.
00:13:18
◼
►
I knew what was going to change.
00:13:20
◼
►
And I got things generally ready at a conceptual level,
00:13:25
◼
►
not on a code level.
00:13:26
◼
►
And then as we got really close, I
00:13:29
◼
►
started doing a bit more of that.
00:13:31
◼
►
And we got the final GM, and I just
00:13:33
◼
►
went through my apps methodically,
00:13:34
◼
►
working on updates and changes.
00:13:37
◼
►
The normal exception was Podometer++, which I knew was going to have some kind of big
00:13:41
◼
►
features that were going to be important with the new elevation change stuff that's been
00:13:45
◼
►
in the beta since the beginning, so I had that one ready pretty much before.
00:13:49
◼
►
With a lot of my other apps, I just waited and did a lot of the updates as we went.
00:13:54
◼
►
As a downside of that, you know, Podometer++ at this point is my only update that's out
00:13:59
◼
►
into the world and into the wild.
00:14:00
◼
►
And the other ones are just all sitting stacked up in a queue.
00:14:04
◼
►
But that ultimately, I think, for most developers,
00:14:06
◼
►
is a very sane approach.
00:14:08
◼
►
That as much as people are going to complain and whine
00:14:10
◼
►
that your apps aren't updated, especially now
00:14:12
◼
►
that the bigger phones and the things get a little fuzzy,
00:14:15
◼
►
if you're running Tweetbot or an app like that,
00:14:17
◼
►
it looks a little funny right now.
00:14:18
◼
►
But I understand it from their perspective,
00:14:21
◼
►
that getting it ready earlier would likely
00:14:23
◼
►
have been worse for customers in a lot of ways,
00:14:26
◼
►
because they would have either had to rush something
00:14:28
◼
►
out the door, or the reality is they
00:14:30
◼
►
would have been spending a ton of effort for which they
00:14:32
◼
►
probably wouldn't have actually gotten a good return from.
00:14:35
◼
►
So that's the deal we have to make.
00:14:37
◼
►
That's the impossible balance.
00:14:38
◼
►
And in general, this is where I come out now.
00:14:40
◼
►
You just kind of do a high level work, you make it sort of work, and you go from there.
00:14:44
◼
►
All right, that's it for today's show.
00:14:45
◼
►
Questions, comments, concerns, complaints.
00:14:46
◼
►
You can find me on Twitter, underscore David Smith, David at developing perspective dot
00:14:51
◼
►
Thanks, have a great week.