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]