PodSearch

Under the Radar

6: How to Become a Programmer

 

00:00:00   Welcome to Under the Radar, a show about independent iOS development.

00:00:03   I'm Marco Arment.

00:00:04   And I'm David Smith.

00:00:05   Under the Radar is never longer than 30 minutes, so let's get started.

00:00:09   So today, as a little bit of a tie-in to the Hour of Code organization program that's being

00:00:19   celebrated this week about trying to get people into programming, we thought it would be kind

00:00:23   of an interesting episode to talk about our origin stories as developers, where we learned

00:00:30   how to -- how we learned to program both originally, back whenever that was, and then probably

00:00:36   also more specifically on Apple's platforms, on iOS and the like. Because it's a question

00:00:43   that I get more often than -- you know, fairly consistently. I'll get a question from somebody

00:00:48   who says, "I see that you're a developer. I like your work. How did you get there? How

00:00:52   How would I, you know, where should I start?

00:00:55   And it's, you know, I get enough of those that I thought it'd be an interesting place

00:00:59   for us to just to talk about it and hopefully make it a little bit more accessible for,

00:01:05   you know, coding isn't necessarily this big scary thing that you have to get into.

00:01:09   I've actually been working with my kids who are four and six years old on basic programming

00:01:15   concepts and so it doesn't have to be particularly scary.

00:01:18   But it's something that, you know, I think if you don't know where to start, it can be

00:01:22   kind of overwhelming. And so, you know, we can't tell you where you should start, but

00:01:25   this is where we started. So, Marco, where did you first learn to program?

00:01:30   So I was, as soon as I learned of just the concept of programming, and I don't remember

00:01:36   when this was, but I was always very into technology and computers, even before I had

00:01:41   a computer. And I didn't get a computer until the sixth grade, so I don't know what age

00:01:46   that it was maybe 12, 13, something like that.

00:01:49   And so before that, I would only have experience

00:01:53   with friends' computers occasionally,

00:01:55   which you get for like two seconds

00:01:56   and you wanna play a game,

00:01:58   and occasionally computers at school,

00:02:00   but I went to a pretty poor elementary school

00:02:02   that only had one room that had computers in it,

00:02:06   and it was old Apple IIs that had been donated,

00:02:09   and you could not do much on them

00:02:11   except play Oregon Trail.

00:02:13   So I knew of programming though,

00:02:15   and I would get books out of the library that were also ancient, donated books that were

00:02:21   like, "How to program in BASIC." And I used to sketch out programs on paper, you

00:02:28   know, just like ten lines that didn't do anything, but I would just write down programs.

00:02:33   I was trying so hard to program and couldn't do it because I didn't have a computer.

00:02:38   Eventually I got a computer and I didn't even know how to program on the computer I

00:02:43   I got like a Windows 3.1 PC and I had it for about a year I think before I ever knew that

00:02:50   it came with QBasic in the DOS prompt area. I had no idea. I wasn't an expert in computers,

00:02:56   I didn't even know how to find such things. And one day I had, back when they used to

00:03:01   print source code in children's magazines to be like, "You type this into your computer

00:03:06   and you can play a paper airplane game or something." There was a source code print

00:03:12   out in, I think it was 321 Contact magazine, and they would do this every month, and I

00:03:18   would just look at them and, "Man, someday I hope I can try these," but I had no idea

00:03:21   how. And one month it had like a little sidebar in that article that said, "Here's how

00:03:26   to do this on a Mac, do whatever on a PC, type in QBasic at the prompt." And I tried

00:03:33   it and I was like, "Oh my god, I have BASIC on my computer. I've had it all this time."

00:03:41   And from that point forward, I just started programming.

00:03:43   I just taught myself through occasional ancient books

00:03:47   in the library and mostly just trying stuff

00:03:50   and looking into the QBasic help screens

00:03:52   to look up functions that were available

00:03:54   and how to use them and stuff.

00:03:56   It basically went from there.

00:03:58   Eventually, we had a friend of the family

00:04:01   who was a programmer who eventually handed me down

00:04:05   what was comparably ancient at the time,

00:04:08   Visual Basic 1.0 for Windows.

00:04:10   it came on I think two floppies, it was two or three floppies and

00:04:14   you know he had long, this was like at the time when like 3.0 or 4.0 was actually

00:04:18   available

00:04:18   so version 1.0 was useless to a working programmer at that point

00:04:22   so he just gave it to me, here kid, you know, try this

00:04:25   I installed that on Windows eventually and learned Visual Basic

00:04:29   and actually those same Visual Basic 1.0 disks

00:04:33   I took to upstate New York that summer where my family went every summer

00:04:37   on vacation, and I shared those disks with Casey Liss.

00:04:41   And Casey was this other young teenager

00:04:46   that I would play with up there and waste time with,

00:04:49   and his dad had an IBM ThinkPad,

00:04:52   and so we would waste time on his dad's ThinkPad

00:04:55   using Visual Basic 1.0.

00:04:57   And that's how I met Casey Liss.

00:04:59   - There you go, and now he's a programmer too.

00:05:01   - Exactly.

00:05:02   So anyway, it just kind of built up from there.

00:05:05   I was really self-taught in most concepts, most fundamentals, functions, control flow,

00:05:13   things like that, basic GUI construction through Visual Basic. I didn't experience anything

00:05:21   like the low-level languages like C or even web languages like PHP really until college.

00:05:27   College taught me C through the curriculum. I majored in computer science, and then I

00:05:31   I kind of picked up PHP on the side to do,

00:05:33   like, you know, kind of fooling around on the web.

00:05:36   And really just kind of became self-taught from there.

00:05:39   Like, I learned more and more C through college,

00:05:42   and then my first job after school

00:05:44   was entirely written in C, so I learned a lot more C there.

00:05:48   And then I always was kind of self-taught

00:05:50   in web stuff and other stuff,

00:05:53   and then eventually I got the job at Tumblr

00:05:54   and became really, had to become really good at web stuff.

00:05:56   So it's basically, like, I basically started from scratch

00:06:01   kind of just like messing around as a middle schooler. I did it because I just kind of

00:06:07   had to. It's one of those things like if you ask a writer like how did you learn to

00:06:12   write? And I think a lot of them would just say, you know, A, I've been writing a lot,

00:06:17   but B, like I just kind of have to write. Some people just have this inherent drive

00:06:21   to do the thing they do and they just kind of have to do it. That's how I am with programming.

00:06:26   I just have an inherent desire to do it because programming, and I tell people this whenever

00:06:32   they ask me how to get started or what it's like or whatever, programming is incredibly

00:06:38   boring and frustrating and obtuse to most people and you have to really love it.

00:06:46   I do really love it and when you really love it, you see the good side of it which is the

00:06:51   incredible feeling of joy and of pride when you build something from scratch. Like you

00:06:58   create something out of nothing using nothing but time and the thing that you want to exist

00:07:05   now exists. And that's an incredible feeling. It's incredibly satisfying. It's incredibly

00:07:11   intellectually satisfying. And I just, I cannot get enough of that feeling. The problem is

00:07:16   is that most programming actual time spent

00:07:19   is not doing things that are that satisfying.

00:07:22   Most of it is like kind of grunt work or debugging

00:07:26   or just kind of moving stuff around,

00:07:29   making a boring screen you don't feel like

00:07:31   you need to make anymore like a login screen,

00:07:33   Code Monkey reference, but most of it can be very tedious.

00:07:38   So you have to love it enough during those good times

00:07:42   to get you through the tedious times

00:07:43   and the frustrating times, like if something's breaking

00:07:45   and you can't figure out why.

00:07:47   And some people just have that internal drive,

00:07:50   and I definitely do, and I bet you do,

00:07:51   but if you don't have that,

00:07:54   I can imagine it would be pretty frustrating.

00:07:57   Because, and the way you usually learn,

00:07:59   the way I have learned,

00:08:00   and the way I think most people I know have learned,

00:08:03   you basically come to a point where you want to achieve

00:08:05   some next thing in your programming experience

00:08:08   or experiments.

00:08:10   You want to achieve something, you have no idea how,

00:08:12   so you just kind of like try,

00:08:14   or maybe these days you search the internet

00:08:16   and you hit a bunch of walls constantly

00:08:18   and things don't work, things crash, things break,

00:08:22   and you kind of stumble through

00:08:23   until you figure out how it actually works

00:08:26   and then you do it and then it finally works eventually.

00:08:28   But the process of stumbling through and figuring it out

00:08:31   can be pretty frustrating to a lot of people.

00:08:32   So you have to feel that payoff at the end.

00:08:37   That has to really matter to you.

00:08:39   That has to really resonate with you

00:08:41   if this is gonna be the kind of thing that you do.

00:08:43   And if that's the case, that can usually alone be the driver to push you through the bad

00:08:48   times and to really make you keep coming back to this as an activity.

00:08:51   >>COREY Yeah.

00:08:52   So I think my background started, I think, in QBasic, same as you.

00:08:58   But I think we had a slightly—I always growing up always had computers around me.

00:09:02   That was—I don't exactly know how my dad did it, but it was just something that I think

00:09:06   he knew this was going to be important.

00:09:09   and even perhaps at times that economically that was a pretty big ask. It's like as long

00:09:13   as I can remember, we've always, I've always had a computer in my life, and it's like old

00:09:17   Sinclair Spectrums, I think it was, where you loaded the programs off audio cassette tapes,

00:09:22   like playing back from a tape deck. And like, I mean, it was a very different world, but

00:09:27   it was always something that I was around, and I think he knew that that was something

00:09:31   that was going to be important. And it's had a similar sort of experience where it's like,

00:09:35   At some point, I became aware of QBasic.

00:09:39   I remember the thing that had this very...

00:09:43   When you think back on your youth, you often only have these few little flashbulb memories.

00:09:47   But I remember when I first discovered in QBasic, one of the programs that came with

00:09:52   it was an app called Gorillas, I think it was?

00:09:56   Oh yeah, Gorilla.Bass.

00:09:58   And it was just this really silly sort of app where you had these two gorillas that

00:10:04   would throw bananas at each other.

00:10:05   And that was the app.

00:10:07   But I remember this very distinct memory of this moment where I realized that this text

00:10:14   file in front of me created that app.

00:10:22   The person who wrote it just sat down in a text editor just like I was at and put in

00:10:27   all these commands in this order.

00:10:28   I didn't understand half of what was going on, but conceptually they just wrote this

00:10:33   thing and then this game that I can play and have fun with appeared. And I think for me,

00:10:39   that was the spark that this is not -- programming isn't this thing that is completely inscrutable.

00:10:50   That before that I'd only ever really seen the outside of it, where I'm interacting with

00:10:55   the software that other people had made, and then it's like, "Wait, I can come in here

00:10:59   and I can edit it. I'd horribly break the Gorillaz game. At some point, I'd better

00:11:06   go back to the original version. But I had that feeling of sort of like when you get

00:11:11   a toy, and I think some people's instinct is to want to take it apart and see how it

00:11:17   works. And I think I eventually got that same kind of instinct around software, where I

00:11:24   look at something and once the curtain had been pulled back and I was like, "Wait, this

00:11:30   piece of software is behind the scenes just a series of text files. I wonder what those

00:11:36   text files would look like. I wonder if I could write a set of text files that would

00:11:39   create that same thing." And it just sort of grew from there. But there is definitely,

00:11:44   I think, something to it where, in some ways, I think anybody could learn to program. I

00:11:50   I went to a high school where it was mandatory that every student had to take computer science.

00:11:56   It was one of the required courses that everyone had to do a basic computer science course.

00:12:02   Some people, like myself, that was one of my favorite courses that year. I took it freshman

00:12:08   year as early as I could so that I could open up all the advanced computer science classes

00:12:14   later on in high school. But for some kids, it was their dreaded thing that they had that

00:12:19   like, "Well, I gotta do it," or they'll try and squeeze it in some, you know, over

00:12:23   the summer or all kinds of other ways to sort of just get through it.

00:12:27   And for some people, though, I knew people who would go and do that class, and it was

00:12:31   like, "Wow, this is awesome!

00:12:33   I love programming!

00:12:34   I didn't even think, like, I never thought of myself as a programmer."

00:12:37   But when I actually got into it, like, they do.

00:12:39   Some people, it was like the complete opposite.

00:12:41   Like, they just found it really frustrating.

00:12:44   And I think there is kind of this thing about programming, because in programming, you are

00:12:49   You have no one to blame but yourself for a lot of things.

00:12:53   The program is, other than OS bugs and things, what you wrote down is exactly what the app

00:13:00   is going to do.

00:13:02   And the number of times then that the app does something that you don't want it to

00:13:05   do or in an unexpected way, and you look at it and you're like, "Huh, I guess I wrote

00:13:12   the wrong thing, and it's doing exactly what I told it to do, but what I'm telling

00:13:15   it is wrong."

00:13:17   And that can be very frustrating for you, or it can be very encouraging and kind of

00:13:22   stimulating to be like, "Can I do this better?

00:13:25   How could I make this faster?

00:13:26   How could I solve this problem in a newer or better way?"

00:13:30   And if you kind of have a mind that loves that, then programming is extraordinarily

00:13:36   satisfying because the core things that you need to start programming are, especially

00:13:43   especially in the modern world, are very straightforward. You can do basic programming on probably any

00:13:51   device if you wanted, on your phone, on your tablet, on a computer. There's a ubiquity

00:13:58   there that if this is something that works for you, you could probably just dive into

00:14:01   it and it won't even have to be. You or I discovering that we accidentally had QBasic

00:14:08   on our Windows 3.1 computers back in the day.

00:14:14   And whenever anyone asks me how they could get into programming, I always just say, "You

00:14:18   just need to start."

00:14:21   Whatever language, whatever platform, whatever it is that is most accessible to you, just

00:14:26   start it and see if that works for you.

00:14:29   See if you get a thrill out of the first time you ever do print line "Hello, world!"

00:14:35   Run your program and it says "Hello, world!"

00:14:37   that's exciting to you, then you're probably going to keep going. If you're like, "Huh,

00:14:41   that's kind of boring," maybe it's not for you. It doesn't have to be for everybody.

00:14:45   But there's something kind of thrilling about, like you said, starting with nothing. When

00:14:51   I go to open up Xcode and I say "File New Project," and then a few hours later, something

00:14:57   functional is appearing in the simulator.

00:14:59   Well, for you.

00:15:00   Okay, or a few hours, a few days, whatever.

00:15:03   You could finish an entire app in like three hours.

00:15:06   I don't know any other developer who works as fast as you do.

00:15:12   We all have our skills.

00:15:15   But however long it takes to get from filing a project to something working in the simulator,

00:15:20   that process is really, like, there's just something really fun about that, where it

00:15:24   didn't exist, and now it does.

00:15:25   And it's doing this thing that I had in my mind and now exists in the world.

00:15:30   I don't think there's that many other careers where you can have a professional desk job

00:15:35   that has quite that same sense of creation.

00:15:38   - As they're like, you know, you really,

00:15:40   you kind of make it from nothing except time

00:15:43   on your computer, and so you don't even need

00:15:45   like special materials, any additional equipment

00:15:49   that you didn't already have, like so many hobbies

00:15:51   and creative fields require stuff and possibly money

00:15:56   that, you know, to be spent on things,

00:15:58   supplies, equipment and everything.

00:16:01   And while programming does require a computer,

00:16:04   you probably already have one. And it doesn't require a great computer, it just requires

00:16:09   a computer. And almost all the software tools that are needed for programming, almost all

00:16:15   of them are free. And in fact, if you want to go entirely free stuff, you can. So it's

00:16:22   very pure in the sense that all you need is time and a will to do it. And if you have

00:16:29   time and a will to do it. And you know, I've heard a lot of people say, people who are

00:16:34   not programmers, a lot of people have said to me that they don't think they're smart

00:16:38   enough to be a programmer. And the fact is, you don't need to be a genius to do it,

00:16:43   you need to care. That's like, if you care about programming, you can be a programmer.

00:16:50   There are a lot of people working in the field who are not total geniuses, and they're

00:16:55   fine. I'm not even that good of a programmer. And you know, people who are listening to

00:16:59   the show might assume that because you know one of us and you know our work, you might

00:17:04   assume that we are great programmers. And I'm just a decent programmer, I would say.

00:17:10   I would not say I'm a great programmer. I've seen the code of great programmers. I've

00:17:15   seen what they make. I am not at that level. And it's fine. It doesn't really matter

00:17:20   for the purposes of what I'm doing, the kind of products I ship and what I do for

00:17:24   a living. It doesn't really matter that I'm not the great programmer level. It's

00:17:27   So it really is very accessible. It's the kind of thing where really all you need is

00:17:34   a will to do it and the time to do it. And those aren't necessarily easy for some people

00:17:38   to get, but if you have those things, you can do it.

00:17:41   Yeah, and the nice thing too, on that note, is that programming, I feel, you can tailor

00:17:48   what you're doing to your personality and your intellect and your aptitude. Like, there

00:17:54   There are many different types of programming that you can do that may appeal to you in

00:17:59   a very different way.

00:18:01   I know people—I remember when I went to college for computer science—some of the

00:18:05   people there were just the ridiculous academic geniuses.

00:18:10   The things that they were interested in were solving really complicated and nuanced algorithmic

00:18:15   problems.

00:18:16   Like, "How can I do these really crazy, sophisticated things in new and novel ways?"

00:18:23   never really worked for me. The academic side of computer science never really appealed

00:18:26   to me, like, "What's a faster way to sort a list?" That doesn't really appeal to me.

00:18:30   And so I just intend--instead, I focus on pragmatic programming. I just want to make

00:18:37   stuff, and how can I make it quickly? How can I make it simply? And that appealed to

00:18:42   me, and so that's where I went. But it's a very varied field that you can probably find

00:18:48   something that fits for you. Like, are you more graphically oriented in the design and

00:18:54   visual side of things or the backend side of things? There's a lot of breath in the

00:18:59   field to find something that sort of suits you. And the key is probably not pretending

00:19:05   that you're someone you're not. You're not thinking, "Oh, programmers need to be stuffy

00:19:10   and academic and worry about algorithms." Like, no, they could do whatever. I don't

00:19:16   about algorithms hardly at all. That's not my job. My job is making apps. And only every

00:19:22   now and then will involve inventing some kind of new algorithm to solve a problem.

00:19:26   Yeah, and that's a good point too, pointing out that it is just such a big field. Nobody

00:19:32   can keep up with all of the programming field because it's just too big. And it's bigger

00:19:37   than you think because almost everything uses software these days. Almost every field has

00:19:42   software. There's all the different levels at which you could work in software. It is

00:19:48   so large, it's such a massive field, that if you are at all interested in being in it,

00:19:53   there's probably a place where you fit very easily.

00:19:55   Anyway, this episode of Under the Radar is brought to you by NSScreencast. Go to NSScreencast.com/headphones

00:20:02   because I love their URLs. NSScreencast features short, focused screencasts on iOS development.

00:20:09   Every week you're gonna find a new,

00:20:10   fantastically produced episode that will help you

00:20:13   build and enhance your development skills.

00:20:15   Perfect sponsor for this episode.

00:20:17   Now, they have all sorts of videos up there

00:20:19   and these are great 'cause they're really like these

00:20:20   like kinda bite-sized videos so it's not like they're like

00:20:23   nine minutes, 10 minutes, 15 minutes, like it's not,

00:20:26   these aren't massive time commitments each time.

00:20:29   They're small chunks that teach you what you need to know

00:20:32   and can help you keep your skills updated,

00:20:34   can help you develop new skills.

00:20:36   They're recently doing a series on Apple TV development now

00:20:38   Now you can develop for Apple TV.

00:20:39   So they have these three new videos

00:20:41   about Apple TV development that I was looking at.

00:20:44   These are great videos, really great.

00:20:46   You can watch these videos on the web.

00:20:48   You can also watch them on the Apple TV

00:20:50   if you have the new Apple TV

00:20:51   because they made their own tvOS app

00:20:53   to kind of show off what they could do.

00:20:55   And of course, you can watch the web stuff anywhere.

00:20:58   So NS Screencast costs just $9 a month or $100 a year

00:21:03   with team plans available too.

00:21:04   And you can get 30% off your first month

00:21:06   by signing up using our link,

00:21:08   NSScreencast.com/headphones.

00:21:10   These are great videos to learn development

00:21:13   within the Apple world, you know, iOS, Mac, TV.

00:21:16   This is the great videos for this world.

00:21:18   NSScreencast.com/headphones.

00:21:21   Thank you so much to NSScreencast for supporting this show

00:21:23   and all of Relay FM.

00:21:24   So I guess for the last few minutes,

00:21:27   I wonder if maybe we can give specifics

00:21:29   of like kind of where new programmers should start.

00:21:32   If for some reason they're listening to this show

00:21:33   and they aren't programmers yet,

00:21:35   Where should they start?

00:21:37   Like languages, tools, apps, I don't know.

00:21:39   What do you think?

00:21:41   - Yeah, so I think the first place to start,

00:21:45   at least, it obviously depends a little bit on your age,

00:21:49   and I get a lot of questions too about teaching your kids,

00:21:51   and so I think I might start talking about

00:21:53   a good accessible place to see if you,

00:21:56   sort of programming is interesting to you.

00:21:59   Like I've been teaching my kids programming

00:22:01   using an app called Lightbot,

00:22:03   which I'm sure we can have a link to in the show notes,

00:22:05   which is all about, because programming at its core, like the first step that you have

00:22:11   to understand is it's about creating a recipe of commands that you then issues, that you

00:22:18   can then like you say run, and then something happens. And understanding the disconnect

00:22:23   between the creation part and the action part. And so like the Lightbot's one of these,

00:22:30   I mean, when I was a kid, it was Logo, I think it was, was sort of the app like this, we

00:22:36   had a little turtle that you made move around the screen.

00:22:38   But like this one, there's a little character who runs around and jumps, like you have to,

00:22:42   you know, you're solving little programming puzzles, which my kids love.

00:22:45   But like an app like that, it's something that will let you just understand that concept

00:22:50   of, you create a set of recipes, and then you do something.

00:22:53   And just like, programming at its core is about separating, like the direct input from

00:22:59   the output because you have to write a program, compile it, and then run it in a way that

00:23:04   the user will interact with your program, but the programming doesn't interact while

00:23:08   it's running in the same way.

00:23:10   That's a great place that I've found to start.

00:23:12   There's a lot of apps like this.

00:23:13   Things that you're going to think, I think Hopscotch is one I've heard about, a lot of

00:23:16   people have had success with.

00:23:18   Something like that is a great place to start for getting your head around that concept.

00:23:22   And then once you sort of get there, you just kind of have to pick a language, a platform,

00:23:30   something that makes sense to you. I recently had a friend who wanted to get into programming,

00:23:34   and she was asking me, "What's the right place?" And I was like, "I don't know, it just depends

00:23:39   on where you want to go." I think I ended up pointing her towards Ruby, which is a language

00:23:42   I have a lot of familiarity with and I think works well. It's a fairly accessible language,

00:23:48   And there's a great book called "How to Program, How to Code," which I'll have a link in the

00:23:53   show notes to, that I pointed her to.

00:23:55   It's a really nice methodical, just like, this is how control flow works, what an if

00:24:00   statement is, what a for loop is.

00:24:03   And the thing that you also have to understand when you're first learning out, or starting

00:24:07   out in learning, is the details of that language are only sort of important.

00:24:12   They're important for where you use a language.

00:24:15   Like you can't write apps for one platform in all languages, there's usually some kind

00:24:22   of specialization.

00:24:24   But generally speaking, once you understand the concepts, that's 90% of the battle.

00:24:32   And then the last 10% is just learning the nuances of each platform.

00:24:36   At this point, when one day I eventually learn Swift, I don't expect the difficulty to

00:24:43   understand Swift conceptually. It's just going to be understanding the

00:24:48   nuances and the approaches that it prefers. Once you wrap your head

00:24:52   around the basics, like the basics haven't changed since I was like 11

00:24:57   years old in writing apps in QBasic. At its core, programming is just having

00:25:02   variables that you put things into and then you have conditional statements to

00:25:07   determine which path to go down and then you have some kind of looping mechanism

00:25:10   to keep doing things over and over again.

00:25:13   And once you wrap your head around that,

00:25:15   like that's programming,

00:25:16   the rest is just all the details

00:25:19   that are actually relevant for your platform.

00:25:22   - Yeah, and I will say, to expand on one thing you just said,

00:25:25   not every language can be used to write every kind of app,

00:25:29   and I think people always ask,

00:25:31   what language should I start with?

00:25:33   And the answer is, because, as we talked about earlier,

00:25:35   because programming is so dependent on your own motivation

00:25:40   and interest to push through the hard stuff

00:25:43   and to get to something that you want,

00:25:45   I think you have to work backwards and say,

00:25:46   well, what kind of apps do I wanna make?

00:25:49   And so if you, or what do I wanna program?

00:25:52   So if you want to program something like an iPhone app,

00:25:55   then what language can you use to make iPhone apps?

00:25:58   Well, there's all sorts of weird tools you can use

00:26:00   to cross-compile different languages,

00:26:01   but the language you should be using

00:26:02   to write an iPhone app in today is probably Swift.

00:26:05   So I would say like, take whatever outcome

00:26:08   you want to have, work backwards from that

00:26:12   to determine what language would be

00:26:14   the most appropriate language for that.

00:26:16   And you might have to ask people like us if you don't know,

00:26:18   but for iOS apps, it's Swift.

00:26:21   Today, if you're gonna learn from scratch,

00:26:24   today you're learning Swift.

00:26:25   And so that's how you pick.

00:26:27   You don't pick a language first and then decide,

00:26:30   oh, I wanna actually make an iOS app out of this.

00:26:33   Because the easiest way to learn is to have

00:26:36   a specific, simple and achievable outcome that you want to make, like a specific kind

00:26:42   of app you want to make. Let's say, "Oh, I want to make a really simple game," or

00:26:48   something like that. Something specific that you want to construct that is doable for a

00:26:52   beginner programmer, that will keep you motivated to learn, to keep going. And so then work

00:26:58   backwards and learn whatever language and tools are required to make that happen in

00:27:03   the most straightforward way.

00:27:04   Yeah, because in my experience the only like the best way to learn is to start making something

00:27:09   It doesn't matter what it is. My first iOS app was a tip calculator

00:27:13   that was awful and it never shipped, but that's how I learned and

00:27:17   I don't think I would have been able to learn if I didn't have something tangible that I was trying to accomplish

00:27:23   When I was trying to be like, well, how would I display a number onto the screen?

00:27:28   How would I make a button? Like if you don't have something that's motivating you to ask those questions

00:27:33   You're never gonna get over that first hump of actually sitting down.

00:27:38   Reading a book is great, but sitting down in front of a text editor is where programming

00:27:44   really starts.

00:27:47   Every new technology or new language or new anything I've learned in programming has

00:27:52   been because there was something specific I wanted to achieve, and that was the way

00:27:56   to get it.

00:27:57   All right.

00:27:58   - All right, well I think that's it for today's show.

00:28:01   And you know, I hope if you don't already,

00:28:04   that you get out and try programming

00:28:06   and see if it's for you.

00:28:08   - Yeah, that would be very satisfying to us

00:28:10   if people actually tried it, that'd be awesome.

00:28:13   Anyway, thanks a lot for listening.

00:28:15   Please recommend us on Overcast, tell a friend.

00:28:18   Also our network, Real AFM, just launched memberships

00:28:21   where you can, if you'd like, you can optionally

00:28:23   give money directly to the shows that you enjoy

00:28:25   or to every show on the network.

00:28:27   So if you wanna do that, check it out.

00:28:28   And yeah, thanks a lot for listening

00:28:30   and we'll see you next week.

00:28:32   [ Silence ]