PodSearch

Under the Radar

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:11 ◼   ► old.

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]