2: Time for Swift
00:00:00
◼
►
Welcome to Under the Radar, a show about independent app development. I'm Marco Arment.
00:00:04
◼
►
And I'm David Smith. Under the Radar is never longer than 30 minutes, so let's get started.
00:00:09
◼
►
So this week we are talking about Swift.
00:00:12
◼
►
That lovely language introduced about a year and a half ago now, two years ago?
00:00:17
◼
►
Yeah, yeah, almost a year and a half. Yeah.
00:00:19
◼
►
I have a brief confession to make. I've never written a single line of Swift in the last year and a half.
00:00:26
◼
►
Not a single one.
00:00:29
◼
►
I think I can say the same thing as long as playgrounds don't count. I wrote a few lines
00:00:33
◼
►
in a playground once, and that was it. Beyond that, I certainly have written no Swift code
00:00:40
◼
►
that's gone into an app.
00:00:41
◼
►
Yeah, and that's, I gotta say, I almost feel guilty when I say that. Like, it's this thing
00:00:47
◼
►
that feels like, you know, I'm a fairly committed Apple platform person, like I do a lot of
00:00:53
◼
►
development here, this is where I make my livelihood, and this is their whole big fancy
00:00:57
◼
►
new thing that has, in theory, a variety of advantages to the way that I've developed
00:01:03
◼
►
things in Objective-C, but I've never really felt motivated to learn Swift. I think that's
00:01:09
◼
►
because I don't see how it would make my apps as they are today any better. And that's kind
00:01:16
◼
►
of a strange place to find myself, that I think my apps would be just the same using
00:01:21
◼
►
Objective-C that I know so well, but there's always in the back of my mind, like, "Hmm,
00:01:25
◼
►
"I should be learning Swift, that would probably be better."
00:01:28
◼
►
But that's never happened.
00:01:30
◼
►
- Yeah, I kind of feel the same way.
00:01:31
◼
►
It's something that I'm not really against.
00:01:34
◼
►
I mean, there are some things about it I don't care for,
00:01:37
◼
►
but I'm sure I get over them, you know,
00:01:39
◼
►
in practice, once I was using the language full-time.
00:01:42
◼
►
And I'm sure there will come a time
00:01:43
◼
►
where we will switch to it,
00:01:45
◼
►
and we will start using it full-time,
00:01:46
◼
►
and it will just be normal, and we'll just deal with it.
00:01:49
◼
►
But I don't think the time has yet come
00:01:51
◼
►
where you need to switch to it
00:01:53
◼
►
if you already have a code base in Objective-C
00:01:57
◼
►
that doesn't really need to be migrated
00:01:58
◼
►
for any particular reason,
00:02:00
◼
►
or if you already have a lot of Objective-C knowledge
00:02:03
◼
►
and your primary goal is to ship apps quickly
00:02:08
◼
►
and with little overhead, then in those cases,
00:02:10
◼
►
I think it does make sense to do what we're doing so far
00:02:13
◼
►
and just wait and see.
00:02:15
◼
►
It's not that Swift is never gonna be a part of our lives.
00:02:18
◼
►
It's just that I don't think there's a lot
00:02:20
◼
►
compelling reasons for us to adopt it yet, when we already have this experience and wisdom
00:02:27
◼
►
and toolchains and everything. All these things, everything's built up around the other language
00:02:32
◼
►
that we've known forever.
00:02:33
◼
►
Yeah, and it's funny, I was also thinking about today's episode, I was thinking too,
00:02:38
◼
►
what are the reasons why I haven't? And there's obviously the obvious ones, just the inertia
00:02:42
◼
►
of having done Objective-C for so long, and knowing it inside and out, knowing where all
00:02:46
◼
►
like the quirks are and all the problems and when I hit a weird bug, I'm pretty good at
00:02:51
◼
►
finding them in Objective-C if they're, you know, programming related rather than logically
00:02:55
◼
►
related. But the thing that also makes me so nervous about Swift is that it keeps changing.
00:03:01
◼
►
Like, every time a new version of Xcode comes out, it seems like there's some new thing
00:03:06
◼
►
in Swift. There's some new syntax, there's some new ability, there's some new approach
00:03:11
◼
►
for the way it works. And every time I see one of those, I think of, it's like I have
00:03:15
◼
►
have this moment of relief that, "Wow, I'm glad I haven't decided to start learning
00:03:20
◼
►
Swift yet," because it seems like what I would have learned every time is constantly
00:03:25
◼
►
being deprecated going forward. And that makes me so nervous about spending the time, because
00:03:31
◼
►
the reality is I have so little time to invest into new things that aren't just actually
00:03:37
◼
►
working, that spending time on something that potentially could be completely overcome by
00:03:43
◼
►
or not completely, it's probably an extreme, but could require me to go back and change
00:03:48
◼
►
the things that I've learned or change the code that I've written is very discouraging.
00:03:53
◼
►
Yeah, because it seems like churn to go through this process. And to some degree, certain
00:04:00
◼
►
things like this are necessary in our profession. When Apple changes the UI of the entire OS,
00:04:06
◼
►
like with iOS 7, and we have to recreate or redo or re-implement a lot of things that
00:04:12
◼
►
we had already done.
00:04:13
◼
►
Like it never feels great to be forced to repeat work
00:04:17
◼
►
or to be forced to throw away something
00:04:19
◼
►
that works perfectly well just to do it some new way
00:04:22
◼
►
that you didn't really want to do.
00:04:25
◼
►
On the flip side of that, you know, a lot of people,
00:04:27
◼
►
and myself included, I love deleting code
00:04:31
◼
►
that is no longer necessary or, you know,
00:04:33
◼
►
like once there's a new ability to do something,
00:04:35
◼
►
like a new API comes out from Apple and a new OS release
00:04:38
◼
►
that makes a whole bunch of my code obsolete,
00:04:40
◼
►
I love deleting that old code and getting rid of it,
00:04:43
◼
►
getting it out of my life and moving on,
00:04:45
◼
►
using the new Apple API, assuming it works,
00:04:48
◼
►
which isn't always the case, but usually,
00:04:49
◼
►
and having less code demand.
00:04:51
◼
►
Actually, that part is nice.
00:04:53
◼
►
A lot of programmers, myself included,
00:04:54
◼
►
also frequently get the itch to rewrite things
00:04:57
◼
►
in a better way.
00:04:58
◼
►
And sometimes that is a good idea.
00:05:00
◼
►
It often isn't.
00:05:01
◼
►
Sometimes it's just a big waste of time
00:05:03
◼
►
and a way to create all your bugs all over again,
00:05:05
◼
►
but sometimes it is a good idea.
00:05:08
◼
►
But I think with Swift coming in for Objective-C programmers,
00:05:12
◼
►
the motivation is less there.
00:05:15
◼
►
And as you said, it is still changing a lot.
00:05:18
◼
►
For most of its first year,
00:05:20
◼
►
the tools were still really immature
00:05:22
◼
►
and we're still having lots of crashing
00:05:24
◼
►
and performance issues.
00:05:25
◼
►
And that seems to be resolved so far.
00:05:28
◼
►
From people who have written Swift so far,
00:05:30
◼
►
who are really into it more than us,
00:05:31
◼
►
it does seem like, I've been kind of like paying attention
00:05:34
◼
►
to what people say about it.
00:05:36
◼
►
how people report like, oh, we converted a big project,
00:05:38
◼
►
or we started a new project in Swift,
00:05:41
◼
►
and here's how it went for us.
00:05:43
◼
►
And in the early days, those stories were really rough.
00:05:46
◼
►
They were, in the early days,
00:05:47
◼
►
they were really not compelling,
00:05:49
◼
►
'cause everything was still so immature and unstable.
00:05:51
◼
►
As time has gone on, in just a year and a half,
00:05:53
◼
►
which is pretty quick, that has settled somewhat,
00:05:56
◼
►
and a lot of people are now saying,
00:05:58
◼
►
okay, now you can jump in, I've done a project in Swift,
00:06:01
◼
►
and it was fine for us.
00:06:03
◼
►
So it really, I think now would be a safe enough time
00:06:07
◼
►
to jump in and it wouldn't be too unreasonable.
00:06:10
◼
►
But again, it comes back to how do we allocate
00:06:12
◼
►
our limited time and our limited resources?
00:06:14
◼
►
And how much time are we willing to devote
00:06:16
◼
►
to messing with something that's still new and immature
00:06:20
◼
►
and adapting to it as it changes?
00:06:23
◼
►
Like to me, I've always said in the past,
00:06:26
◼
►
and we'll talk about server-side stuff, I'm sure,
00:06:28
◼
►
many times, but I've always said in the past
00:06:30
◼
►
that my server-side stuff I want
00:06:31
◼
►
to be very conservative with, especially as you get
00:06:34
◼
►
lower down the application level stack.
00:06:36
◼
►
So if you wanna try out a new web API, cool, whatever,
00:06:41
◼
►
a new application layer thing, as you go down the stack,
00:06:45
◼
►
I don't wanna be running a cutting edge Linux distribution.
00:06:47
◼
►
I wanna be running a very conservative OS.
00:06:50
◼
►
I wanna be running a very conservative database.
00:06:53
◼
►
As you get that low level with the data layer
00:06:58
◼
►
and the infrastructure layer of these things,
00:07:00
◼
►
I don't want to be on the cutting edge of anything there
00:07:03
◼
►
because the cutting edge is where you get bugs
00:07:05
◼
►
and instability and you hit limitations.
00:07:08
◼
►
As you move up the stack,
00:07:09
◼
►
I feel like you have more tolerance for things like that,
00:07:11
◼
►
like for risk in those areas.
00:07:13
◼
►
For me, the programming language
00:07:15
◼
►
that you're writing your code in is pretty low level.
00:07:19
◼
►
And with Swift, you at least have the benefit
00:07:20
◼
►
of you can mix it in slowly.
00:07:22
◼
►
And that was very wise of Apple to do.
00:07:24
◼
►
There are some downsides to things
00:07:27
◼
►
like they couldn't make as clean of a jump
00:07:28
◼
►
as they might've wanted to
00:07:30
◼
►
because they had maintained backwards compatibility with objectivity libraries and stuff. But
00:07:34
◼
►
for the most part I think that was wise because we can kind of wade in slowly when we decide
00:07:40
◼
►
that's the right move. But at the same time, you know, because of my conservatism in those
00:07:45
◼
►
low-level things, I don't really see a huge reason to jump in yet because I don't want
00:07:52
◼
►
to be programming with a cutting-edge language. And not only for instability reasons and for
00:07:58
◼
►
having to relearn things as they change things over time.
00:08:01
◼
►
Not only for those reasons, but also,
00:08:03
◼
►
right now we don't really know what will eventually
00:08:06
◼
►
be known as idiomatic Swift, an idiomatic Swift API design.
00:08:10
◼
►
We don't know those things yet.
00:08:11
◼
►
Those are still being worked out.
00:08:13
◼
►
A lot of people, and I'm not one,
00:08:15
◼
►
and I don't think you are one either,
00:08:16
◼
►
a lot of people love being a part of that process
00:08:19
◼
►
of figuring out what the idioms should be
00:08:22
◼
►
and helping to create them and helping to work out
00:08:26
◼
►
how things, and helping to experiment with like,
00:08:28
◼
►
oh, maybe we should design APIs in this way,
00:08:30
◼
►
maybe the right way to use the language is this.
00:08:32
◼
►
I am not into that at all.
00:08:34
◼
►
For me, I would rather let the smarter people than me
00:08:37
◼
►
who care a lot more about language design
00:08:39
◼
►
and who are better at it than I am,
00:08:41
◼
►
let them figure out the idioms and the language design
00:08:44
◼
►
and the API design, and then I want to just take
00:08:47
◼
►
the finished product and master one thing
00:08:49
◼
►
that they've figured out over time
00:08:51
◼
►
and apply that into building apps that I want.
00:08:54
◼
►
So it's like, you know, I wanna be closer
00:08:55
◼
►
to the product building side, not the messing with languages
00:08:59
◼
►
side, if that makes sense.
00:09:00
◼
►
- Yeah, 'cause the process of, it sounds vaguely interesting,
00:09:05
◼
►
like sort of the, oh, let's be part of the process,
00:09:08
◼
►
and it seems like the Swift team is very responsive,
00:09:11
◼
►
and all those things on that side seem to be very
00:09:14
◼
►
encouraging in that regard, if that were something
00:09:16
◼
►
you were interested in.
00:09:18
◼
►
But it's just like effort going into something
00:09:20
◼
►
that isn't making my apps better,
00:09:23
◼
►
isn't making my customers happier,
00:09:25
◼
►
isn't helping me ship something more impressive. It's going into something that is kind of
00:09:30
◼
►
intellectually cool, but it kind of feels like the difference between someone who is
00:09:34
◼
►
an academic versus who makes a more practical living. I'm very glad there are people who
00:09:42
◼
►
enjoy that more academic side of computer science, who come up with the new things and
00:09:48
◼
►
push boundaries and go down ten sort of dead-end roads before they find the thing that is actually
00:09:54
◼
►
the thing that we're going to want to use in practice. I'm really glad those people
00:09:57
◼
►
exist, but it's a very different thing than the skills and the experience and the time
00:10:03
◼
►
allocation that you would want to do if you actually have to ship something. And ultimately,
00:10:08
◼
►
especially if that thing that you ship at the end of the day has to make your living,
00:10:11
◼
►
then the last thing you want to be doing is playing around with stuff that isn't quite
00:10:15
◼
►
baked or isn't quite to the point that it's like, this is exactly the way you do it. Because
00:10:21
◼
►
So I think in Objective-C, it's very established at this point.
00:10:24
◼
►
It's an old enough language, and its use has been so focused in by Apple, and it's benefited
00:10:30
◼
►
from the fact that I think Apple is the only people who sort of typically use it in a way
00:10:34
◼
►
that like language like Java or C has so many different uses that it doesn't quite have
00:10:41
◼
►
that same heavy hand that Apple, I think, has been able to bring to it, where as they've
00:10:45
◼
►
they've improved and changed the syntax and the details of Objective-C, it is now very
00:10:51
◼
►
finely tuned to go along with Cocoa and to go along with iOS and to go along with all
00:10:56
◼
►
of the things that go into building for Apple's platforms. It's very straightforward. There's
00:11:03
◼
►
probably one way to write most functions and most code. And once you learn it and once
00:11:08
◼
►
you get good at it, then you know you're doing the right thing. And the process of learning
00:11:12
◼
►
that for Swift just sounds kind of scary until that thing settles down. And so I'm not really
00:11:18
◼
►
sure what's ultimately going to get me to learn Swift. Like, I was thinking about it,
00:11:23
◼
►
what could Apple do? And obviously they're doing all the right things on the marketing
00:11:27
◼
►
side of saying, like, this is the hot new thing. All their sample code is in Swift.
00:11:33
◼
►
All the session videos, all the code on the slides is in Swift. Like, they're pushing
00:11:37
◼
►
it as hard as they can from a marketing perspective. But my gut says until they come out with something
00:11:42
◼
►
that says, "You can only interact with this platform or interact with this library in
00:11:49
◼
►
Swift. I probably won't learn it." That's just the practical reality. I'd almost wondered
00:11:56
◼
►
if when they were announcing things like the watch or the TV, if at some point they would
00:12:03
◼
►
say, "This is a Swift-only platform and architect the runtime for it or the libraries for it,"
00:12:10
◼
►
or those types of things in such a way that say, "This is the only language that it's
00:12:13
◼
►
going to work." And if they did that, obviously, I'd have to learn. It's sort of like with
00:12:17
◼
►
the tvOS, where you can write apps natively or in the TVML markup language. If they had
00:12:23
◼
►
said, "Oh, we're only going to do the TVML stuff," then, okay, if I wanted to do a TV
00:12:28
◼
►
app, I would have learned that. But it seems like it's probably only going to come out
00:12:32
◼
►
of necessity rather than out of just the intrinsic desire.
00:12:35
◼
►
Right, yeah, I mean at some point they are probably going to have Swift-only APIs in
00:12:40
◼
►
the same way that there are Objective-C only APIs now and originally you could write in
00:12:46
◼
►
C if you wanted to. You could write a lot of Mac apps only in C. In the olden days that's
00:12:51
◼
►
how all of them were written and over time, Objective-C came in and there have been Objective-C
00:12:57
◼
►
only APIs. So over time there will be Swift-only APIs eventually, as Apple adds new APIs to
00:13:04
◼
►
add new APIs to things.
00:13:06
◼
►
But that hasn't happened yet.
00:13:07
◼
►
And even internally, Swift is still so young
00:13:10
◼
►
that even internally Apple is hardly using it for anything.
00:13:14
◼
►
So if they can't even work it into their workflow in mass
00:13:18
◼
►
yet, then I think that shows that we're not yet to the level
00:13:22
◼
►
and we're not close yet to the level where it's a requirement
00:13:26
◼
►
for everybody to use.
00:13:28
◼
►
That being said, I think if you're starting out fresh,
00:13:30
◼
►
if you don't know how to program it,
00:13:32
◼
►
or if you only have a little bit of programming knowledge
00:13:36
◼
►
so far or Objective-C knowledge so far,
00:13:38
◼
►
and you're looking to expand your knowledge starting now,
00:13:42
◼
►
by all means, do that in Swift.
00:13:44
◼
►
I don't think it makes a lot of sense
00:13:45
◼
►
to learn Objective-C from scratch now,
00:13:48
◼
►
now that Swift is coming up and being the hotness.
00:13:52
◼
►
Although that being said, I think it's very likely
00:13:54
◼
►
that any iOS app will probably,
00:13:57
◼
►
you will probably need to know some Objective-C
00:14:00
◼
►
at some point to do something,
00:14:01
◼
►
similar to how Objective C programmers generally--
00:14:05
◼
►
you can get along pretty well most of the time,
00:14:07
◼
►
but occasionally you have to call a C function,
00:14:09
◼
►
or you'll have to know how C works enough to use
00:14:12
◼
►
some API that is C only.
00:14:14
◼
►
So new programmers should definitely start with Swift,
00:14:17
◼
►
I would say, just because you generally
00:14:20
◼
►
don't want to start with something that
00:14:21
◼
►
is on its way out long term.
00:14:23
◼
►
You want to start with something that is going to be as useful
00:14:26
◼
►
as long as possible.
00:14:28
◼
►
Yeah, and I think the funny thing is,
00:14:30
◼
►
I know enough Swift at this point that I can read it, but I can't write it. Often I'll
00:14:38
◼
►
be searching on Stack Overflow and I'll find an answer to something that I was struggling
00:14:41
◼
►
with and the answer is written in Swift, and so I need to work out how it works. And so
00:14:46
◼
►
at this point I know it enough to be read only, but I could never create it out of nothing.
00:14:53
◼
►
And I think if you're new to something, your goal is probably going to be to learn Swift
00:14:57
◼
►
well enough that you can write your programs in it and program in it, but then know Objective-C
00:15:01
◼
►
at least well enough that you can read it and understand what's going on with all
00:15:05
◼
►
the crazy square brackets and the general kind of structure of it, but that's probably
00:15:10
◼
►
all you'll ever need to actually, you know, in practical use.
00:15:13
◼
►
Right, exactly. And there are certain things about Swift, too. Like, it isn't a guarantee
00:15:19
◼
►
that if you like Objective-C that you will like Swift. It is a different style of language.
00:15:25
◼
►
It is not Objective-C with pointers removed.
00:15:29
◼
►
Like that isn't it.
00:15:31
◼
►
It is not like what all people were saying
00:15:33
◼
►
before Swift was unveiled.
00:15:34
◼
►
It was like, oh, just make an Objective-C without the C.
00:15:37
◼
►
And that is even how Apple introduced it
00:15:38
◼
►
on the keynote slide.
00:15:40
◼
►
But that really isn't what it is at all.
00:15:41
◼
►
It really is more like a modern reinterpretation of C++.
00:15:46
◼
►
And so this is going to mesh better
00:15:50
◼
►
with some people than others.
00:15:52
◼
►
For me, honestly, I don't like a lot of it,
00:15:54
◼
►
a lot of what I know of it, at least so far. And again, I haven't used it in a project
00:15:58
◼
►
yet, so this could change as I use it. But a lot of the things that are some of its more
00:16:02
◼
►
advanced features, like generics, I don't think I will ever use most of that stuff.
00:16:06
◼
►
You know, this is going to kind of gel better with some people than others, and that might
00:16:12
◼
►
influence how early you want to jump into it. Because for me, it hasn't done much for
00:16:17
◼
►
me, and it doesn't really appeal to me as strongly as some other changes would have
00:16:23
◼
►
or may have, then I'm in less of a rush. But if you're the kind of person who you enjoy
00:16:30
◼
►
those kind of language features that it's adding, or you enjoy the kind of formalism
00:16:33
◼
►
that it imposes that wasn't there before, then by all means, jump in. But that's not
00:16:40
◼
►
going to be true of everybody, and I think that's okay.
00:16:42
◼
►
Yeah, and I think it's—I've gradually gotten better about having the swift guilt
00:16:48
◼
►
of having that feeling of, "Oh, I really should be learning this." And it's like
00:16:52
◼
►
Like the understanding of it's like, at some point, I'm sure it's in my future.
00:16:56
◼
►
I don't know when that is.
00:16:58
◼
►
The role it's going to play in my future is also going to depend on where Apple takes
00:17:01
◼
►
their platforms and what platforms and opportunities make the most sense for my business.
00:17:06
◼
►
Like, you know, I don't know, like iOS is relatively young, and it's also relatively
00:17:12
◼
►
Like seven years or so for a platform is getting to a point that you start to wonder, you know,
00:17:16
◼
►
is something new coming along that is going to overtake it, because very few things in
00:17:25
◼
►
technology seem to last more than 10 or 15 years. And so we're at least towards the middle,
00:17:30
◼
►
if not the tail end of this wave, and you keep your eye out for which platform and what
00:17:36
◼
►
opportunity is going to be the next big thing.
00:17:38
◼
►
Yeah, because as you were saying last week about market opportunities and how you can
00:17:44
◼
►
advantage of a market that's like on its boom time and then how quickly that
00:17:48
◼
►
window falls off as it gets more crowded. It's the same thing with with languages
00:17:52
◼
►
and technologies like if you can get in relatively early to things now again
00:17:57
◼
►
again this is a balance between like conservatism and stability versus you
00:18:01
◼
►
know how cool it is to try new things and whether you're the kind of
00:18:04
◼
►
person who loves just trying new languages for the sake of trying them
00:18:07
◼
►
and and you know or whether you're more kind of product focused like me and
00:18:11
◼
►
David here, but I think there's a similar kind of window
00:18:14
◼
►
with technologies where, like as I said,
00:18:16
◼
►
like this is, you can tell that this is,
00:18:18
◼
►
this is the beginning of the end of Objective-C.
00:18:20
◼
►
And it's going to be a long way down.
00:18:22
◼
►
It's gonna, we're gonna, it's gonna be here for a while.
00:18:25
◼
►
We're not talking five years, we're talking at least 10.
00:18:29
◼
►
That is still gonna be around and still be relevant.
00:18:30
◼
►
I mean, look at how long, I mean, look, I just said,
00:18:32
◼
►
like, you know, C functions still exist
00:18:35
◼
►
that we still call routinely from Objective-C apps
00:18:37
◼
►
and that those have been there since the, you know,
00:18:40
◼
►
since the beginning of core foundation,
00:18:42
◼
►
which was what, in the late 80s?
00:18:43
◼
►
- It's gonna be at least until Apple replaces
00:18:46
◼
►
their fundamental OS structure probably,
00:18:50
◼
►
or something like that,
00:18:51
◼
►
'cause Apple isn't gonna rewrite all their apps
00:18:53
◼
►
unless they absolutely have to.
00:18:55
◼
►
- Right, and all the foundation classes.
00:18:56
◼
►
I mean, Swift is still,
00:18:58
◼
►
Swift has its own strings, it has its own arrays,
00:19:01
◼
►
but there's so many things in foundation
00:19:05
◼
►
and networking and IO and graphics,
00:19:08
◼
►
all these things that Swift is still calling
00:19:12
◼
►
the system Objective-C and C APIs to do those things.
00:19:17
◼
►
So it's not like they threw away the entire stack
00:19:20
◼
►
and the entire API, you're just writing things
00:19:22
◼
►
in a new front-end language.
00:19:24
◼
►
It's not like that whole stack is gonna go away
00:19:26
◼
►
in two years or five years or even 10 years,
00:19:28
◼
►
I think that's unlikely.
00:19:30
◼
►
Anyway, we are sponsored this week
00:19:32
◼
►
by our friends at NSScreencast.
00:19:34
◼
►
NSScreencast features short, focused screencasts
00:19:38
◼
►
on iOS development.
00:19:39
◼
►
Every week, you're gonna find a new,
00:19:41
◼
►
fantastically produced episode
00:19:43
◼
►
that will help you build and enhance
00:19:45
◼
►
your development skills.
00:19:46
◼
►
Now, I've been looking at these for this past week
00:19:48
◼
►
since they came to us with this.
00:19:49
◼
►
Have you looked at these too, David?
00:19:50
◼
►
- Yeah, yeah.
00:19:51
◼
►
- These are great.
00:19:52
◼
►
The production value on these is really, really high.
00:19:55
◼
►
And what I like about them is that they're short.
00:19:58
◼
►
Like the idea is it's just one short episode a week,
00:20:01
◼
►
and you just keep up with it,
00:20:02
◼
►
and you can kinda keep up on new technologies,
00:20:04
◼
►
you can learn new things,
00:20:05
◼
►
but you don't have to jump in
00:20:07
◼
►
and watch a 45-minute conference video
00:20:09
◼
►
just to keep up with what's going on
00:20:10
◼
►
or to learn something new.
00:20:11
◼
►
It's a nice overview with examples and everything.
00:20:14
◼
►
The production quality, I think, is great.
00:20:16
◼
►
Have you seen one that you liked?
00:20:17
◼
►
- Yeah, I mean, I love,
00:20:18
◼
►
I've actually, speaking of what we've been talking about,
00:20:21
◼
►
I've been watching a little bit of the ones about Swift
00:20:23
◼
►
just to kind of keep an eye on what's going on there,
00:20:26
◼
►
because like we said, it's not something that I'm at the
00:20:28
◼
►
level where I wanna spend a lot of time on it,
00:20:30
◼
►
but it's really helpful to just be able to sit down
00:20:32
◼
►
and watch a short 10, 15-minute video
00:20:34
◼
►
to get a sense of what are all these fancy keywords
00:20:37
◼
►
and things I keep hearing people talk about.
00:20:38
◼
►
And so I can sit down and watch what's new
00:20:40
◼
►
in Swift 2 or Swift optionals,
00:20:43
◼
►
or all these things that are totally new,
00:20:46
◼
►
and in a very short amount of time,
00:20:48
◼
►
understand what's happening without sitting there
00:20:51
◼
►
and just going through the documentation myself.
00:20:53
◼
►
And so I found that to be really helpful.
00:20:56
◼
►
- You can watch these videos on the web, on iOS,
00:20:58
◼
►
or you can even, they also have a tvOS app.
00:21:01
◼
►
They're already on the Apple TV.
00:21:03
◼
►
You can watch it right there on the NSScreencast TV OS app.
00:21:06
◼
►
All this costs just $9 a month or $100 a year,
00:21:09
◼
►
with team plans available too.
00:21:11
◼
►
You can get 30% off your first month
00:21:13
◼
►
by signing up at NSScreencast.com/firstcrack.
00:21:18
◼
►
NSScreencast.com/firstcrack.
00:21:20
◼
►
Thank you so much to NSScreencast
00:21:22
◼
►
for supporting this show and all of Relay FM.
00:21:24
◼
►
- All right, and the last thing I wanted to talk about
00:21:27
◼
►
briefly with Swift that I thought would be
00:21:29
◼
►
kind of an interesting,
00:21:30
◼
►
so maybe it's the best way to call it
00:21:32
◼
►
a thought experiment, is I was recently trying to think through if in the limited amount
00:21:37
◼
►
of time I have to learn something, if I would be better off putting that time and energy
00:21:42
◼
►
into learning Swift and essentially embracing the future of iOS or diversifying and learning
00:21:49
◼
►
modern Android development. And when I posed that question to myself, the answer immediately
00:21:56
◼
►
wasn't obvious because I think about it in Swift and I'm like, okay, it's the future
00:22:00
◼
►
of the platform, and that's better. I'm very committed to iOS, that's where I make the
00:22:05
◼
►
majority of my living. But it also means that I'm tied into one basket, like I'm putting
00:22:10
◼
►
all of my apps, all my eggs into that one basket. And there's part of me that wonders
00:22:14
◼
►
if would I be better off if instead I took that energy of learning something new and
00:22:20
◼
►
put it into learning Android. In the end, I'm skeptical if I actually ever would, because
00:22:27
◼
►
it's so hard to think about developing for a platform that I don't use on a regular basis,
00:22:32
◼
►
but I think my gut says at the end of the day I would actually probably be more prudent
00:22:36
◼
►
for me to know both iOS and Android than to know iOS and then iOS plus Swift and serve
00:22:44
◼
►
as I know it now.
00:22:46
◼
►
Yeah, I think it really depends. I mean, obviously I think you can learn Swift more easily than
00:22:51
◼
►
you can learn Android because you are still on the same platform calling into most of
00:22:55
◼
►
the same APIs and everything. So I think it's, Swift would be an easier transition. Also,
00:23:01
◼
►
Swift would eventually replace your Objective-C slot in your mind. You know, like so it wouldn't
00:23:07
◼
►
be like an additional thing that you'd have to decide where to spend your time between
00:23:10
◼
►
on an ongoing basis. It would be kind of like a one-time big transition over, you know,
00:23:16
◼
►
six months or whatever, however long it would take you to really like master it and really
00:23:19
◼
►
be doing it full-time. But Android, of course, opens up way more market share. I mean, if
00:23:24
◼
►
If you have a handful of apps, well you have more than a handful, but suppose somebody
00:23:29
◼
►
has a normal number of apps on the app support and they have to choose whether to convert
00:23:37
◼
►
all their existing apps from Objective-C to Swift or port them to a new platform, obviously
00:23:44
◼
►
the right move there would be to port them to a new platform because the customers don't
00:23:48
◼
►
care what language your app is written in, so you wouldn't get any benefit on the customer's
00:23:51
◼
►
side by converting to Swift.
00:23:53
◼
►
It's more of like an investment in your own long-term ongoing education, long-term craft,
00:23:59
◼
►
you know, long-term time savings for yourself, assuming Swift will save you time in the long
00:24:03
◼
►
run, which I think it probably will over time, but we don't know that yet, really.
00:24:08
◼
►
So it's a question, I mean, these are, this is a great thought experiment. This is one
00:24:13
◼
►
of the reasons why I wanted to podcast with you, because you are so good at coming up
00:24:16
◼
►
with these crazy ideas, because it isn't that crazy. Like, if you think about it, going
00:24:20
◼
►
on to a new platform is probably a better idea than relearning the language on the platform
00:24:29
◼
►
you're already on. That being said, if you specialize in one of these areas, if you specialize
00:24:35
◼
►
and you say, "I'm going to just be really, really good at making iOS apps," and that
00:24:41
◼
►
way to do what you do, to be able to try out a whole bunch of ideas, to be able to make
00:24:45
◼
►
new apps quickly and deploy them to the store quickly. If you get really, really good at
00:24:49
◼
►
that one thing versus if you spread your knowledge out into a more broad tool set really. So
00:24:57
◼
►
you're able to make iOS apps and Android apps and maybe apps for something else, maybe Mac
00:25:02
◼
►
apps, maybe web apps. If you spread it out and get more wide like that, I feel like that
00:25:07
◼
►
might be harder for one person to be very productive and very successful for themselves
00:25:13
◼
►
because there's so much overhead involved in dealing with these different ecosystems,
00:25:18
◼
►
different platforms, different languages, different APIs,
00:25:21
◼
►
I feel like you can be better specializing in one
00:25:25
◼
►
and being able to just really crank out high-volume work
00:25:28
◼
►
on one, rather than spreading yourself out very wide
00:25:31
◼
►
to be able to do a wider variety of things.
00:25:33
◼
►
Does that make sense?
00:25:34
◼
►
- Yeah, and I think ultimately that's probably,
00:25:36
◼
►
the reality of that's where I am,
00:25:38
◼
►
that's where I have been for the last year and a half
00:25:40
◼
►
since this would even be sort of a thought experiment
00:25:43
◼
►
that could exist is ultimately for me and my business
00:25:46
◼
►
run, I have to be extraordinarily productive in one thing, and to be a true expert and
00:25:54
◼
►
be able to really, you know, if I have an idea for an app, to be able to build it very
00:25:58
◼
►
quickly. And for me right now, that's writing iOS apps in Objective-C. That's something
00:26:04
◼
►
that I can really crank out just by the virtue of having so much experience with it. And
00:26:10
◼
►
And I think until such time as doing that thing, having that expertise and having that
00:26:15
◼
►
sort of finely honed of a skill ceases to be the thing that I need to do, and it becomes
00:26:20
◼
►
like, "Okay, now I should, I need to diversify, I need to go somewhere else.
00:26:24
◼
►
Like it isn't working on iOS anymore.
00:26:26
◼
►
That's probably where I'll continue to go."
00:26:29
◼
►
And but in this, you know, it's for the same reasons that I haven't learned Swift, it's
00:26:33
◼
►
probably the same reasons that I haven't learned Android.
00:26:34
◼
►
It's that same thing of it's like, I like, and it seems to work well to be a true master
00:26:39
◼
►
of one thing and to drive and perfect your art and craft of doing that one thing is probably
00:26:48
◼
►
better than becoming a complete generalist but being more superficial in all the different
00:26:53
◼
►
areas. This is obviously coming from the perspective of being independent. If you work in a bigger
00:26:58
◼
►
company you may have to be a generalist and be working in all these different platforms
00:27:03
◼
►
and areas because that's just what your boss tells you to do. Because my boss doesn't tell
00:27:08
◼
►
to do anything, I can be able to just sort of go with whatever makes sense for me.
00:27:12
◼
►
- Right, and I think it makes sense for big companies to diversify, because when you look
00:27:16
◼
►
at the way big companies structure their engineering departments, you don't usually have one person
00:27:21
◼
►
who's in charge of five different platforms of apps, and they're the only ones working
00:27:25
◼
►
on them. Usually you have employees who are specialized. And so the whole department might
00:27:29
◼
►
be able to be more broad and have an app for iOS and an app for Android, and even look
00:27:34
◼
►
at Windows Phone or Blackberry or whatever else comes along, but each individual person
00:27:38
◼
►
to maximize their efficiency is usually only doing one of those things. You know, it makes
00:27:43
◼
►
sense for companies to be able to afford to be more broad, but for individuals to maximize
00:27:49
◼
►
what you can do, I think it makes the most sense for individuals to be specialized.
00:27:52
◼
►
Yeah, and I think that's sort of where we're just going to end up for today's discussion,
00:27:57
◼
►
that I think Swift is a powerful, useful tool that I'm glad exists and I'm glad Apple is
00:28:03
◼
►
pushing the platform forward on, but I don't expect to use it anytime soon.
00:28:08
◼
►
I'm sure both of us will use it eventually, and it might even be faster than we think,
00:28:11
◼
►
it might even be like next year, but I'm certainly not in any rush to start doing it right now.
00:28:15
◼
►
But that's fine.
00:28:16
◼
►
Yeah, and I think that's probably where we'll end it for today.
00:28:19
◼
►
Thanks for listening, everyone.
00:28:20
◼
►
Please tell your friends about the show, help us spread the word, recommend us on Overcast,
00:28:23
◼
►
and we'll see you next week.
00:28:24
◼
►
See you next week.
00:28:24
◼
►
See you next week!
00:28:25
◼
►
[BLANK_AUDIO]