#209: Not so Fast.
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 life. I'm your host, David Smith. I'm an independent
00:00:09
◼
►
iOS developer based in Herndon, Virginia. This is show number 209, and today is Friday,
00:00:13
◼
►
January 23rd. Developing Perspective is never longer than 15 minutes, so let's get started.
00:00:19
◼
►
All right, before I dive into the main topic I'm going to be discussing today, I just want
00:00:23
◼
►
to have a brief aside about a little update on the As I Learn Watch Kit series that I've
00:00:27
◼
►
I've been doing both my blog, on the podcast, as well as on a YouTube channel.
00:00:31
◼
►
I just wondered if you aren't aware of that, it's something that I've been
00:00:34
◼
►
continuing to do and have been making, I think, some fairly interesting progress
00:00:37
◼
►
and putting out some hopefully useful resources. So there'll be a link to that in the show notes
00:00:41
◼
►
if you aren't aware of that already. The main topic I'm going to be talking about
00:00:46
◼
►
today is a little bit of my storytelling about Swift and kind of where, how my
00:00:54
◼
►
thinking about it has evolved over the last, I guess, almost a year now, eight months,
00:01:01
◼
►
something like that, since WWDC, and why I'm in the position I am now with my use of Swift.
00:01:09
◼
►
And I won't ruin the ending with exactly what that looks like. But let's get started with
00:01:13
◼
►
the story. So I remember quite clearly sitting in the WWDC keynote last year, you know, just
00:01:20
◼
►
sitting there, they had gone through kind of a few things about iOS 8, what we're going
00:01:24
◼
►
to expect there.
00:01:25
◼
►
And then right at the end, they jump out and they say, OK,
00:01:29
◼
►
we have this one other thing, and it's called Swift.
00:01:32
◼
►
And it's this brand new language,
00:01:33
◼
►
and everyone got excited.
00:01:34
◼
►
And we're all kind of like, whoa, that's crazy.
00:01:36
◼
►
This is awesome.
00:01:37
◼
►
They finally did it.
00:01:38
◼
►
They finally came out with something.
00:01:41
◼
►
We can finally put to bed some of the speculation
00:01:44
◼
►
and the talking about where they're going to go next.
00:01:46
◼
►
Is there going to be this next version of Objective-C?
00:01:49
◼
►
Are they going to keep doing what they have been doing,
00:01:51
◼
►
where they keep bolting on other features
00:01:53
◼
►
to the existing language and frameworks.
00:01:56
◼
►
They added Arc, and they added all the cool new modern syntax
00:01:59
◼
►
stuff with the way that they've handled
00:02:03
◼
►
automatic synthesized properties and automatic boxing
00:02:06
◼
►
and unboxing of things.
00:02:07
◼
►
And some of these things that are really cool,
00:02:09
◼
►
they've just been able to bolt onto the language inside
00:02:13
◼
►
of the existing thing just by the way
00:02:15
◼
►
that they've been able to enhance the compiler
00:02:17
◼
►
and taking control of that out of GCC and onto LLVM.
00:02:22
◼
►
So we're all excited.
00:02:23
◼
►
We all see this thing, and it's called Swift.
00:02:25
◼
►
And you kind of have that excitement.
00:02:27
◼
►
And then I remember kind of sitting down and looking
00:02:31
◼
►
at the WWDC schedule and thinking to myself what it was
00:02:35
◼
►
that I was going to do, what I was going to pursue.
00:02:37
◼
►
I have a limited amount of time and energy.
00:02:39
◼
►
During that one week at WWDC, what did I want to do?
00:02:43
◼
►
And there's a whole bunch of new APIs and cool stuff from iOS 8.
00:02:46
◼
►
And there's these whole other track of Swift stuff.
00:02:49
◼
►
And then there's the labs.
00:02:51
◼
►
And I had to decide how I was going to split up my time.
00:02:54
◼
►
And I made the conscious decision at that point
00:02:56
◼
►
to say, you know what?
00:02:57
◼
►
Swift looks cool, but the reality
00:03:00
◼
►
is I need to focus in on shipping updates for iOS 8
00:03:05
◼
►
That is an absolute requirement for my business
00:03:07
◼
►
to continue to be successful.
00:03:08
◼
►
And so I need to go ahead and prioritize that.
00:03:10
◼
►
Swift is cool.
00:03:10
◼
►
I'll look at it later.
00:03:12
◼
►
And I essentially ended up splitting my time
00:03:14
◼
►
between iOS 8 and between going to labs,
00:03:17
◼
►
talking to people, which is a fairly productive exercise.
00:03:21
◼
►
And so this was pretty cool.
00:03:22
◼
►
I went and did that.
00:03:24
◼
►
I remember on the flight back from WWDC,
00:03:27
◼
►
I sort of read the first chapter of the programming guide
00:03:29
◼
►
that they had put in iBooks.
00:03:31
◼
►
But I hadn't been to any sessions.
00:03:32
◼
►
And Swift kind of looked interesting.
00:03:34
◼
►
But it's also probably worth mentioning
00:03:36
◼
►
that while I have a background in computer science,
00:03:38
◼
►
and I've done the academic stuff in terms of understanding
00:03:43
◼
►
a bit of the language, differences
00:03:46
◼
►
between different languages, ways of approaching things, benefits and disadvantages of different
00:03:50
◼
►
type systems. I'm not a language nut. I'm brutally pragmatic, to a fault. In some ways
00:03:58
◼
►
that allows me to do what I do, but that also can sometimes be tricky when I look at something
00:04:02
◼
►
like this. If it doesn't have a direct and obvious impact and benefit to my work, I'll
00:04:07
◼
►
often disregard it. I'm not going to be clever for clever's sake. I just want to be pragmatic.
00:04:12
◼
►
I want to just build the thing, and whatever tool is going to help me get there faster,
00:04:16
◼
►
even if there were a more elegant solution for whatever version of elegant you might
00:04:20
◼
►
think, I'm probably just going to do whatever is the simple, obvious, easy, basic thing.
00:04:25
◼
►
You know, I'm going to be walking around with a hammer and building stuff that way, and
00:04:29
◼
►
that tends to work.
00:04:31
◼
►
That's kind of how I've been able to keep doing what I'm doing because it tends to be
00:04:34
◼
►
very efficient.
00:04:35
◼
►
You don't tend to go down too many rabbit holes.
00:04:37
◼
►
And by that I mostly just mean that there are elements of Swift that I certainly have
00:04:42
◼
►
no understanding of.
00:04:43
◼
►
I don't really understand all of what's going on there.
00:04:47
◼
►
Not necessarily because I couldn't, but because I haven't tried.
00:04:52
◼
►
The academic part of learning a language like Swift doesn't really appeal to me.
00:04:57
◼
►
I just want to know how this will make my apps better.
00:05:01
◼
►
So let's go back to the story.
00:05:04
◼
►
So I go through the summer working on my iOS 8 updates.
00:05:08
◼
►
I have a lot of apps, and I have a lot of updates to put together and build.
00:05:11
◼
►
And there was some cool stuff in iOS 8
00:05:12
◼
►
we were thinking about, some stuff with extensions,
00:05:14
◼
►
and some of the ways that--
00:05:16
◼
►
other things that we had to do to take advantage,
00:05:17
◼
►
adaptive layouts, things that we kind of had hints
00:05:19
◼
►
that there were going to be bigger screen iPhones,
00:05:21
◼
►
so making sure everything works with that.
00:05:23
◼
►
And so I do that, and I get my updates out.
00:05:25
◼
►
You know, for the most part, I had most of my updates
00:05:28
◼
►
out within the first week or so of iOS 8 dropping,
00:05:30
◼
►
which is always a bit of a task when you have as many apps
00:05:33
◼
►
as I do, but I got it done.
00:05:35
◼
►
Then there's the next round of iOS 8 updates
00:05:38
◼
►
in terms of all the bug fixes to fix the things that I broke
00:05:40
◼
►
I did the first updates and get those done, OK, great.
00:05:44
◼
►
Now what do I do?
00:05:45
◼
►
Should I start working on new features from applications?
00:05:48
◼
►
Things are settling down.
00:05:50
◼
►
And it was around that time that Apple
00:05:53
◼
►
did one of their other keynote events.
00:05:56
◼
►
And I remember in it them having a slide.
00:06:00
◼
►
Probably it was Craig Federighi.
00:06:01
◼
►
I can't remember exactly which executive was talking about it.
00:06:04
◼
►
But one of the executives was up on a stage saying,
00:06:06
◼
►
and here are all the apps that have
00:06:09
◼
►
been shipped with Swift in it already.
00:06:10
◼
►
And they're kind of up on stage in their big marketing event
00:06:13
◼
►
talking about Swift.
00:06:14
◼
►
And then I remember seeing them add a new sort of root site
00:06:19
◼
►
to apple.com that if you go to apple.com/swift,
00:06:23
◼
►
there's this whole big page marketing the language
00:06:25
◼
►
and promoting it and talking about it.
00:06:28
◼
►
And by and large, in general, I tend to--
00:06:31
◼
►
I'm kind of all in on Apple in many ways.
00:06:33
◼
►
And maybe that's a good thing, maybe that's a bad thing.
00:06:35
◼
►
But I'm fairly committed to their platform.
00:06:39
◼
►
It is where the vast majority of my income comes from.
00:06:42
◼
►
I have one Android app that does something.
00:06:45
◼
►
And obviously, I have FeederAngler,
00:06:46
◼
►
which is a service outside of the App Store.
00:06:49
◼
►
But by and large, my income in my business
00:06:50
◼
►
is based around the App Store and around Apple.
00:06:53
◼
►
And so when they are putting a lot of energy and effort
00:06:56
◼
►
and marketing capital behind something, I tend to take notice.
00:06:58
◼
►
I tend to try and get myself on board.
00:07:01
◼
►
And in general, that tends to be sort
00:07:03
◼
►
of the path of least resistance.
00:07:04
◼
►
If I head in the direction that Apple wants me to be heading,
00:07:08
◼
►
I'm unlikely to bump into them and to have problems down the road.
00:07:12
◼
►
And so that's what I was sort of starting to prepare to do.
00:07:14
◼
►
I see all these things.
00:07:16
◼
►
Talking about it in another keynote, making a big page on apple.com,
00:07:20
◼
►
and just generally promoting the language makes me start to think,
00:07:23
◼
►
OK, I don't want to swim against the grain on this.
00:07:25
◼
►
I need to start thinking about Swift.
00:07:28
◼
►
And at the time, I'd shipped most of my updates,
00:07:30
◼
►
so I had some bandwidth and availability to do it.
00:07:33
◼
►
And I was actually, just as a random kind of aside and bit of trivia,
00:07:37
◼
►
I was actually starting to lay the groundwork and working on a series that I was then going
00:07:41
◼
►
to be called, as I learned Swift, which you may have noticed was overtaken by something
00:07:47
◼
►
else, the Apple Watch, because a few weeks after this, Apple announces the Apple Watch.
00:07:55
◼
►
And while at that point we didn't have WatchKit, that didn't ship until later in the year,
00:07:59
◼
►
it became clear that this was going to be also another major thing that Apple was going
00:08:04
◼
►
to pursue another major thing that Apple was going to put marketing behind. And another
00:08:08
◼
►
place that as developers was something that I wasn't sure would make sense for me to focus
00:08:12
◼
►
attention on. And so I kind of abandoned Swift, or at least abandoned learning Swift. And
00:08:19
◼
►
to this day, I still yet to write a line of actual app Swift code. I think I wrote, I
00:08:26
◼
►
opened up a playground when the, you know, in the first version of Xcode after WWDC.
00:08:31
◼
►
And I typed a few lines, and the playground didn't really work.
00:08:34
◼
►
Or at least I didn't understand how to make it work.
00:08:36
◼
►
And that's it.
00:08:38
◼
►
And maybe that's a slight confession.
00:08:40
◼
►
It seems like as an iOS developer, at this point,
00:08:43
◼
►
I probably should have done something in Swift, but I haven't.
00:08:47
◼
►
And the reality is I think I'm OK with that.
00:08:50
◼
►
And that's part of why I decided to do this episode,
00:08:52
◼
►
is for a while I didn't really want to be one of these people
00:08:55
◼
►
kind of being boo-hooing Swift.
00:08:57
◼
►
Because Swift is best to understand.
00:08:59
◼
►
functionally and conceptually is pretty awesome. But from a
00:09:03
◼
►
pragmatic perspective, in terms of in the context of my
00:09:06
◼
►
business, and context of what it is I'm trying to do and build,
00:09:10
◼
►
I'm not sure it has a place for me yet. I'm not sure if it if
00:09:15
◼
►
its benefits, whatever those may be, exceed the time, energy and
00:09:21
◼
►
effort that it would take for me to invest into it. That as I'm
00:09:26
◼
►
building watch kit apps, you know, like I took that as I
00:09:28
◼
►
I learned Swift series and turned it into As I Learn Watch
00:09:30
◼
►
Kit with kind of the preparation and thinking
00:09:32
◼
►
that I'd had around that.
00:09:34
◼
►
That transition was easy and obvious because all Watch
00:09:37
◼
►
Kit is for me is a new device.
00:09:40
◼
►
All the tools, all of the tools both in terms
00:09:43
◼
►
of Xcode and Interface Builder and all those type things
00:09:46
◼
►
are fairly stable.
00:09:47
◼
►
And I understand them, and I work really well with them.
00:09:50
◼
►
And Swift, everything I hear is not quite that same way.
00:09:55
◼
►
It's a different thing.
00:09:57
◼
►
it'll take a lot of time to wrap my head around the right idiomatic way of using Swift. And
00:10:04
◼
►
I just don't think I have the time to do that, that I it's not going to make my apps any
00:10:09
◼
►
better. And that's the tricky thing with a lot of these things. Swift falls into that
00:10:14
◼
►
category as you know, it's kind of like classic refactor, that the balance you have to strike
00:10:20
◼
►
when you're refactoring something of, can I justify the time and the energy that I would
00:10:27
◼
►
take to do this thing that is only relevant technically, that my customer will likely
00:10:33
◼
►
never see? And while I'm sure you could make the argument that Swift will make your app
00:10:38
◼
►
more stable, that it will improve the quality of your software over time, maybe it's more
00:10:41
◼
►
performant, maybe it isn't, but there are things that customers might notice down the road.
00:10:46
◼
►
Everything I see makes me think that most customers aren't
00:10:50
◼
►
going to care that my app was written in Swift,
00:10:53
◼
►
that I'm competent enough as an Objective C developer
00:10:56
◼
►
at this point that I'll be fine just doing what I've
00:10:59
◼
►
been doing in Objective C.
00:11:01
◼
►
And it's also slightly compounded by the hearsay
00:11:04
◼
►
around Swift right now.
00:11:06
◼
►
I kind of hear that the tools and the process of building
00:11:11
◼
►
an app in Swift is a bit more clunky,
00:11:13
◼
►
that Xcode gives you weird error messages,
00:11:16
◼
►
There's things that take-- like compilation
00:11:18
◼
►
seems sounds like it's a bit slower.
00:11:20
◼
►
There's all these things that really don't
00:11:22
◼
►
make the process sound good.
00:11:23
◼
►
I keep hearing the word "optionals" constantly.
00:11:27
◼
►
Honestly, I have no idea what that means.
00:11:29
◼
►
I haven't looked into it.
00:11:30
◼
►
I just-- all I hear is every now and then, I keep hearing these--
00:11:33
◼
►
like, seeing blog posts after blog post in my RSS reader
00:11:36
◼
►
saying, you know, how to work around something with optionals.
00:11:39
◼
►
Optionals this, optionals that.
00:11:41
◼
►
Apparently, optionals are a problem.
00:11:42
◼
►
And like I said, I haven't looked into it.
00:11:45
◼
►
it hasn't made sense for me to have some vague intellectual curiosity about that. But the reality
00:11:50
◼
►
is, if there's some weird issue and problem that developing apps for Swift has now, unless I'm using
00:11:56
◼
►
Swift, it's just sort of wasted cycles in my head to focus attention on that. So I haven't. But
00:12:01
◼
►
apparently, there's these weird little issues, weird gotchas, things that I'd have to spend a
00:12:04
◼
►
lot of time working myself around. And so those things certainly don't make me more and more
00:12:10
◼
►
excited about diving into it.
00:12:12
◼
►
One random note that has also been kind of a frustrating
00:12:15
◼
►
thing since Swift came out is the impact it's
00:12:18
◼
►
had on tutorials, documentation, examples, things like that.
00:12:25
◼
►
Whereas before, anytime I would find a tutorial or an article
00:12:28
◼
►
someone was writing about developing for the iPhone,
00:12:30
◼
►
I could pretty much expect to completely follow the code
00:12:34
◼
►
that they were doing, because it was going to be Objective C.
00:12:37
◼
►
Or if they have an example project, or a library,
00:12:40
◼
►
or something like that, it was going to be in Objective C.
00:12:42
◼
►
And there's this unfortunate bifurcation now
00:12:45
◼
►
in our developer community where a lot of the resources
00:12:48
◼
►
for development are split between Swift and Objective C.
00:12:53
◼
►
And if anything, it seems like a lot of the kind of people
00:12:55
◼
►
who tend to make resources like this, the educators,
00:12:58
◼
►
the people who put that together, seem excited about Swift.
00:13:01
◼
►
And so are building-- it is probably, in some ways,
00:13:03
◼
►
a disproportionate shift in terms
00:13:05
◼
►
of tutorials written in Swift versus actual production code
00:13:08
◼
►
written in Swift.
00:13:09
◼
►
And that's just been kind of frustrating.
00:13:11
◼
►
I just mention that because it's something I've noticed,
00:13:13
◼
►
and it's a really kind of awkward time
00:13:16
◼
►
to find ourselves in as a community.
00:13:19
◼
►
And so that's where I am.
00:13:21
◼
►
And that's sort of where I am right now
00:13:22
◼
►
and where I expect to stay.
00:13:24
◼
►
I will likely continue shipping Objective-C exclusively
00:13:28
◼
►
until there is some compelling reason to switch.
00:13:34
◼
►
There's some new API.
00:13:35
◼
►
There's some new platform.
00:13:36
◼
►
There is something that says--
00:13:38
◼
►
Apple comes up on a stage and says,
00:13:39
◼
►
you now have to learn Swift.
00:13:42
◼
►
You now have to use Swift in order to use something.
00:13:44
◼
►
And at that point, obviously, I would start to use it.
00:13:48
◼
►
But until then, as much as I tend to jump on the bandwagon
00:13:51
◼
►
and just go with whatever Apple wants me to do,
00:13:55
◼
►
I think this is an example of a place
00:13:57
◼
►
that I'm just going to hang out in Objective-C land
00:13:59
◼
►
for as long as I can.
00:14:00
◼
►
Not to be a curmudgeon, not to be just kind of stuck
00:14:05
◼
►
but because it seems like that's the thing that is going to benefit my customers the most that that is the most pragmatic solution that it will help me to ship the highest volume and highest quality of applications and write the best code for my people, you know, for my applications right now. And that's kind of a weird place to find myself and if you're new to the platform, if you're new to, you know, iOS development, switch might be a great thing to start with and start learning. But for somebody who shipped a lot of apps who has a lot of existing code, and for whom the process of building an app and objective C,
00:14:35
◼
►
is kind of second nature now, it doesn't make a lot of sense for me.
00:14:39
◼
►
Alright, that's it for today's show. As always, if you have questions, comments, concerns, or complaints,
00:14:43
◼
►
you can email me, david@developingperspective.com, or I'm on Twitter @_davidsmith.
00:14:47
◼
►
We have a great week. Happy coding. Bye.