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