PodSearch

Developing Perspective

#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:07 ◼   ► Beta 4?

00:03:07 ◼   ► Beta 5?

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:34 ◼   ► on day one.

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 ◼   ► to another.

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:50 ◼   ► com.

00:14:51 ◼   ► Thanks, have a great week.