Under the Radar

Under the Radar 6: How to Become a Programmer

 

  welcome to under the radar a show about

  independent iOS development I'm Marco

  Arment and I'm David Smith under the

  radar is never longer than 30 minutes so

  let's get started so today as a little

  bit of a tie-in to the hour of code sort

  of I don't know what you call a

  organization program that sort of being

  celebrated this week about trying to get

  people into programming we thought it

  would be kind of an interesting episode

  to talk about our origin stories as

  developers where we learned how to wear

  how we learn to program both originally

  back whenever that was

  and then probably also more specifically

  on Apple's platforms on iOS and the like

  because it's a question that I get more

  often than I know if so fairly

  consistently I'll get a question from

  somebody who says I see that you're a

  developer I like your work how did you

  get there how would I you know where

  should I start and it's you know I get

  enough of those that I wanted to be

  interesting place it for us to just to

  talk about it and hopefully make it a

  little bit more accessible for you know

  coding isn't necessarily this big scary

  thing that you have to get into I've

  actually been working with my kids who

  are four and six years old on basic

  programming concepts and so it doesn't

  have to be particularly scary and so but

  it's something that it's you know I

  think you don't know where to start it

  can be kind of overwhelming and so if

  you know we can't tell you where you

  should start but this is where we

  started so Marco where did you first

  learn to program so I was soon as I

  learned of just the concept of

  programming and I don't I don't remember

  that when this was what I was always

  very into technology and computers even

  before I had a computer and I didn't get

  a computer until the sixth grade so I

  don't know what a excited is maybe

  they're 12 13 something like that yeah

  and so before that I I would only have

  experience with friends computers

  occasionally Lucchino you get for like

  two seconds and you want to play a game

  and you know occasionally computers at

  school but I went to a pretty poor

  elementary school that that only had one

  room that had a computers in it and it

  was old Apple twos and that had been

  donated and you could not do much on

  them except play Oregon Trail

  so I I knew of programming though and I

  would get books out of the library of

  that like that were you know also

  ancient donated books that were like how

  to program in basic and I used to like

  sketch out programs on paper that and

  you know just like ten lines it didn't

  do anything but I would like just write

  down programs like I was trying so hard

  to program and couldn't do it

  I didn't have a computer eventually i I

  got a computer and I didn't even know

  how to program on the computer because I

  got like a Windows 3.1 PC and I had it

  for about a year I think before I ever

  knew that it came with Q basic in the

  DOS prompt area I had no idea good I

  didn't I I wasn't an expert in computers

  I didn't even know how to find such

  things and and one day I had back when

  they used to print source code in

  children's magazines to be like he typed

  this into your computer and you can you

  know play a paper airplane game or

  something they there was a source code

  printout in I think it was three to one

  contact magazine and they would do this

  every month and won and I would just

  look at that man someday I hope I can

  try these but I had no idea how and in

  one month it said they had like a little

  like sidebar in that article that said

  here's how to do this on a Mac do

  whatever on a PC type in Q basic at the

  prompt and I tried it and it I'm like oh

  my god I have basic on my computer I've

  had it all this time and from that point

  forward I just I just started program I

  just taught myself through occasional

  ancient books in the library and mostly

  just trying stuff and looking into the Q

  basic help screens to like look up

  functions that were available and how to

  use them and stuff it basically went

  from there eventually we we had a friend

  of the family who was a programmer who

  had like who eventually handed me down

  what was comparably ancient at the time

  Visual Basic 1.0 for Windows came on I

  think to floppies it was two or three

  floppy and you know he had long this was

  like at the time when like 3.0 or for

  print it was actually available so

  version 1.0 was useless to a working

  programmer at that point so he just gave

  to me here to your kid you know try this

  I installed that on Windows of

  and learn visual basic and actually

  those same visual basic 1.0 discs I I

  took to upstate New York that somewhere

  where my family went every summer on

  vacation and I shared those discs with

  Casey Liz and Casey was this this other

  like you know young young teenager that

  I would play with up there and waste

  time with and his dad had had an IBM

  ThinkPad and so we would waste time on

  his dad's thing pad using Visual Basic

  1.0 and that's how I met Casey Liz there

  you go and now he's a programmer -

  exactly so anyway it just kind of built

  up from there I was really self-taught

  in the in like you know most concepts

  most fundamentals you know functions

  control flow things like that basic GUI

  construction through visual basic and it

  wasn't well I didn't experience anything

  like the low-level languages like C or

  even web languages like PHP really until

  college college kind of taught me see

  like through the Couric through the

  curriculum and make it a computer

  science and then I kind of picked up PHP

  on the side to do like you know kind of

  fooling around on the web and really

  just kind of became self-taught from

  there like I learned I learned more and

  more see through college and then my

  first job after school was entirely

  written in C so so I learned a lot more

  C there and then I always was kind of

  self-taught in web stuff and other stuff

  and eventually got the job at tumblr and

  became really had to become really good

  at web stuff but so it's basically like

  I basically started from scratch kind of

  just like messing around as a middle

  schooler I did it because I just kind of

  had to it's one of those things like

  like if you ask a writer like how did

  you learn to write and I think a lot of

  them would just say you know a I've been

  writing a lot but be like I just kind of

  have to write some people just have this

  inherent drive to do the thing they do

  and they just kind of have to do it

  that's how I am with programming I just

  have an inherent desire to do it because

  programming and I was I tell people this

  whenever they ask me like how to get

  started or what it's like or whatever

  programming is incredibly boring and

  frustrating and

  juice to most people and you have to

  really love it and I do really love it

  and when you really love it you see the

  good side of it which is the incredible

  feeling of joy and of pride when you

  build something from scratch like you

  create something out of nothing

  using nothing but time and the thing

  that you want to exist now exists and

  that's an incredible feeling it's

  incredibly satisfying it's incredibly

  intellectually satisfying and I just I

  cannot get enough of that feeling the

  problem is that most programming actual

  you know time spent is not doing things

  that are that satisfying most of it is

  like kind of you know grunt work or

  debugging or you know just kind of

  moving stuff around making making a

  boring screen you don't feel like you

  need to make any more like a login

  screen code monkey reference but you

  know it most of it it can be very

  tedious so you have to love it enough

  during those good times to get you

  through the tedious times and the

  frustrating times like if something's

  breaking and you can't figure out why

  and some people just have that internal

  drive and I definitely do and I bet you

  do but if you don't have that I can

  imagine it would be pretty frustrating

  because and the way you usually learn

  leap the way I have learned and the way

  I think most people I know have learned

  you basically come to a point where you

  want to achieve some some next thing in

  your programming experience or

  experiments you want to achieve

  something you have no idea how so you

  just kind of like try or maybe these

  days you search the internet and you hit

  a bunch of walls constantly and things

  don't work things crash things break and

  you kind of stumble through until you

  figure out how it actually works and

  then you do it and then it finally works

  you know eventually but that the process

  of stumbling through and figuring it out

  can be pretty frustrating to a lot of

  people so you you have to you have to

  feel that payoff at the end that has to

  really matter to you that has to really

  resonate with you if it's if this is

  gonna be the kind of thing that you do

  and if that's the case that can usually

  alone be the driver to push you through

  the bad times and to really make you

  keep coming back to this as an activity

  yeah I think my my back

  and started I think in in qbasic same as

  you but I think we had a slightly like I

  always growing up always had computers

  around me like that was I I don't

  exactly know how my dad did it but he

  was just something that I think he knew

  like this was going to be important and

  even perhaps at times that economically

  that was a pretty big ask it's like as

  long as I can remember we've always I've

  always had a computer in my life and

  it's like old Sinclair spectrums I think

  it was where you loaded the programs off

  audio cassette tapes like playing back

  from a like a tape deck

  nice and like it was a very different

  world but it was always something that I

  was around I think he knew that like

  that was something that was going to be

  important and like it said a similar

  sort of experience where it's like at

  some point I became aware of qbasic and

  I remember the thing that like the they

  have this very like wonder you know when

  you think back when your youth you'll

  often only have it like these few little

  like flashbulb memories and I remember

  when I first discovered in QBasic one of

  the liked programs that came with it was

  an app called gorillas I think it was oh

  yeah gorillas dot bass yeah and it was

  then it was just think this really silly

  sort of apt where you had these two

  gorillas that would throw bananas at

  each other and like that was that was

  the app but I remembered that this very

  distinct memory of this moment where I

  realized that this text file in front of

  me created that app that it would like

  and all the person who wrote it just sat

  down in a text editor just like I was at

  and put in all these commands in this

  order and like I didn't understand half

  of what it was going on but conceptually

  like they just wrote this thing and then

  this a make this game that I can play

  and have fun with appeared and I think

  for me like that was the spark that like

  this is not like programming isn't this

  sort of this this thing that is

  completely in like inscrutable that I've

  only had before that I had only ever

  really seen like the outside of it where

  I'm interacting with the software that

  other people had made and then it's like

  wait I can come in here and I can edit

  it and you know I've like I'd horribly

  break gorillas the gorillas game and you

  know it's like at some point all right

  well best they'd better go back to the

  original version but

  I had that feeling of like it's like

  sort of like when you get a toy and

  you're it's I think some people's

  instinct is to want to take it apart and

  see how it works and I think I

  eventually got that same kind of

  instinct around software where I would

  look at something and I'd start once I

  had sort of once the sort of the curtain

  had been pulled back and I was like wait

  this you know this piece of software is

  a behind the scenes just a series of

  text files I wonder what those text

  files would look like I wonder if I

  could write a set of text files that

  would create that same thing and it just

  sort of grew from there but it's there

  is definitely I think something to it

  where like in some ways I think anybody

  could learn to program you know like I

  went to a high school where it was

  mandatory that every student had it

  takes the computer science and it was

  like one of the like required courses

  that everyone had to do a basic computer

  science course and some people like

  myself like I mean that was like like

  one of my favorite courses that year

  like I took it freshman year I see early

  as I could so that I could open up all

  the advanced computer science classes

  later on in high school but for some

  kids it was like their dreaded thing

  that they had that's like well I got to

  do it or that like Ryan squeeze it in

  some you knows over the summer or all

  kinds of other ways to sort of just get

  through it and for some people though I

  knew people who would go and do that

  class and it was like wow this is

  awesome I love programming I didn't even

  think like I never thought of myself as

  a programmer but when I actually got

  into it like they do some people it was

  like the complete opposite like they

  just found it really frustrating and I

  think there is kind of this thing about

  programming because in programming you

  are you have no one to blame but

  yourself

  for a lot of things like the the program

  is other than like OS bugs and things

  like when you crew what you wrote down

  is exactly what the app is going to do

  and the number of times then that you

  the app does something that you don't

  want it to do or in an unexpected way

  and you look at it and you're like huh

  it's like you know huh I I guess I wrote

  the wrong thing and it's doing exactly

  what I told this do but what I'm telling

  it is wrong and that can be very

  frustrating for you or it can be very

  you know encouraging and

  kind of stimulating to be like can I do

  this better how could I make this faster

  how could I do solve this problem in a

  newer or a better way and if you kind of

  have a mind that loves that then

  programming is extraordinarily

  satisfying because the core things that

  you need to start programming are

  especially sort of in the modern world

  are very bit are very you know

  straightforward like yeah you can do

  basic programming on probably any device

  if you if you wanted you know on your

  phone on your tablet on your on a

  computer like there's a ubiquity there

  that if this is something that works for

  you you could probably just dive into it

  and they won't even have to be like you

  are you know you're I sort of

  discovering that we accidentally had

  QBasic lately lurking on our windows you

  know Windows 3.1 computers back in the

  day like and whenever I anyone asks me

  like how they could get into programming

  I always just say it's like you just

  need to start you just need to whatever

  it whatever language whatever platform

  whatever it is that you would be like is

  most accessible to you like just just

  start it and see if Oh see if that works

  for you like see if you get a thrill out

  of the first time you ever do you know

  print line hello world run your program

  and it says hello world like if that's

  exciting to you then you're probably

  going to keep going if you're like huh

  it's kind of boring maybe it's not for

  you it doesn't have to be for everybody

  but it's if there's something kind of

  thrilling about like you said taking

  like starting with nothing like when I

  go to open up Xcode and I say like file

  new project and then like a few hours

  later like something functional is

  appearing in the simulator well for you

  okay or a few hours a few days whatever

  you can finish an entire app in like

  three hours sure I don't know any other

  developer who works as fast you know we

  all have we all have we all have our we

  have our skills but however long it

  takes to get from foundry project to

  something working in this emulator that

  process is really like there's just

  something really fun about that where it

  didn't exist and now it does and it's

  doing this thing that I had in my mind

  and now exists in the world that I don't

  think there's that many other careers or

  you can have a professional desk

  job that has quite that same sense of

  creation as they like you know you

  really you kind of make it from nothing

  except time on your computer and so you

  don't even need like special materials

  any additional equipment that you didn't

  already have like so many hobbies and

  creative fields require stuff and and

  possibly money that you know to be spent

  on on things like supplies equipment and

  everything and while programming does

  require a computer you probably already

  have one and it doesn't require a great

  computer it just requires a computer and

  and you can get and almost all the

  software tools that are needed for

  programming almost all of them are free

  and and if you and in fact if you want

  to go entirely free stuff you can so

  it's it's very pure in the sense that

  like all you all you need is is time and

  and a will to do it and if you have time

  and a will to do and you know I've heard

  a lot of people say people who are not

  programmers a lot of people have said to

  me that they don't think they're smart

  enough to be a programmer and the fact

  is you don't need to be a genius to do

  it you need to care that's it like if

  you care about programming you can be a

  programmer there are a lot of people

  working in the field who are not total

  geniuses and they're fine I'm not even

  that good of a programmer and you know

  people who are listening to the show

  might assume that because you you know

  one of us and you know our work you

  might assume that we are great

  programmers and I'm just a decent

  programmer I would say I would not say

  I'm a great programmer I've seen the

  code of great programmers I've seen what

  they make I am NOT at that level and

  it's fine it doesn't really matter for

  the purposes of what I'm doing the kind

  of products I shipped and what I do for

  a living it doesn't really matter that

  I'm not like the great programmer level

  you know it's fine so it really is very

  accessible it's the kind of thing where

  really all you all you need is a will to

  do it and the time to do it and those

  you know those aren't necessarily easy

  for some people to get but if you have

  those things you can do it yeah and the

  nice thing too I'm on that note is that

  programming I feel

  you can tailor what you're doing to your

  personality and your intellect and your

  aptitude like there are many different

  types of programming that you can do

  that may appeal to you in a very

  different way like I know people made

  some that I remember going to have when

  I went to college for computer science

  like some of the people there were just

  the ridiculous academic geniuses that

  like the things that they were they were

  interested in we're like solving really

  complicated and nuanced algorithmic

  problems like how can I do these these

  really supply crazy sophisticated things

  in new and novel ways like that never

  really worked for me the academic side

  of computer science never really

  appealed to me like what's a faster way

  to sort a list like that doesn't really

  appeal to me and so I just intend I

  instead I just I focus on pragmatic

  programming like I just want to make

  stuff and how can I make it quickly how

  can I make it simply and that appealed

  to me and so that's where I went but

  then it's like it's a very varied field

  that you can probably find something

  that fits for you like are you more

  graphically oriented and like the design

  and visual side of things or the backend

  side of things like there's a lot of

  there's a lot of breadth in the field so

  you find something that sort of suits

  you and the key is probably not

  pretending that you're someone you're

  not

  you're not thinking oh I the programmers

  need to be like stuffy and academic and

  worried about algorithms like no they

  could do whatever like I don't think

  about algorithms hardly at all that's

  not my job my job is making apps and had

  very only rare only every now and then

  will involve like inventing some kind of

  new algorithm to solve a problem yeah I

  mean and that's a good point too like

  pointing out that it's it is just such a

  big field you know that nobody can keep

  up with all of the programming field

  because it's just too big and it's

  bigger than you think is almost

  everything uses software these days

  almost every field has software there's

  all the different levels at which you

  could work in software I mean it is so

  large it's such a massive field that if

  you are at all interested in being in it

  there is probably a place where you fit

  very easily anyway this episode of under

  the radar is brought to you by NS

  screencast go to NS screen

  calm slash headphones belie love their

  URLs and a screencast features short

  focused screencast on iOS development

  every week you're going to find a new

  fantastically produced episode that will

  help you build and enhance your

  development skills perfect sponsor for

  this episode now they have all sorts of

  videos up there and these are creeks is

  there really like these like kind of

  bite-sized videos so it's not like the

  early you know nine minutes 10 minutes

  15 minutes like it's not these aren't

  massive time commitments each time there

  are small chunks that teach you what you

  need to know and it can help you keep

  your skills up daily can help you

  develop new skills they have their

  recently doing a series on Apple TV's

  development now can that you can build

  for Apple TV they have all they have

  these three new videos about Apple TV

  development that I was I was looking at

  these are great videos really great you

  can watch these videos on the web you

  can also watch them on the Apple TV if

  you have the new Apple TV because they

  made their own TV iOS app to kind of

  show off what they could do and of

  course you know it's you can watch web

  stuff anywhere so in a screencast costs

  just 9 dollars a month or a hundred

  dollars a year with team fans available

  too and you can get 30% off your first

  month by signing up using our link and

  as screencast.com slash headphones these

  are great videos to learn development

  within the Apple world I you know iOS

  back TV this is the great videos for

  this world and as screencast calm

  headphones thank you so much to NS

  screencast for supporting this show and

  all of real afm so I guess for the last

  few minutes I want I wonder if maybe we

  can give specifics of I kind of where

  new programmers should start it for some

  reason that listening to the show and

  they aren't programmers yet where where

  should they start with like languages

  tools apps I don't know what do you

  think yeah so I think the first place

  start at least in its its it obviously

  depends a little bit on your age and I

  got I get a lot of questions too about

  teaching your kids and so I think I

  might start talking about a good way to

  a good accessible place to see if you

  sort of programming is interesting to

  you like I've been teaching my kids

  programming using an app called

  light-bot which I'm sure we can have a

  link to in the show notes which is all

  about cuz programming at its core like

  the first the first step like that you

  have to understand is this a bet it's

  about like

  creating a recipe of commands that you

  then issues that you can then like you

  say run and then something happens and

  understanding the disconnect between the

  creation part and the action part and so

  like the light light BOTS one of these

  there's I mean I mean when I was a kid

  it was logo I think it was was sort of

  the app like this we had a little turtle

  that you made move around the screen you

  like this one there's a little character

  who runs around and jumped like you have

  to you know you're solving little

  programming puzzles which my kids love

  but like an app like that it's something

  that will let you just understand that

  that concept of you create a set of

  recipes and then you do something and

  just like programming at its core is

  about separating like the direct input

  from the output because you have to

  write a program compile it and then run

  it in a way that like the user will

  input interact with your program but

  their programming doesn't interact while

  it's running in the same way that's a

  great place that I found to start like

  there's a lot of apps like this things

  that you're going I think hopscotch is

  when I've heard about had a lot of

  people have had success with like

  something like that is a great place to

  start for getting your head around that

  concept and then once you sort of get

  there you just kind of have to pick a

  language a platform something that makes

  sense to you I recently had a friend who

  wanted to get into programming and she

  was asking me like what's the right like

  what's the right place it's like I don't

  know it just depends on where you want

  to go I think I ended up pointing her

  towards Ruby which is a language I have

  a lot of familiarity with and I think

  works well it's a fairly accessible

  language and there's a great book called

  how to think it's how to program how to

  code this is a link in the show notes to

  that I pointed her to it's a really nice

  like methodical just like this is

  whatever Wow control flow works like

  what an if statement is what a for loop

  is and the thing that you also have to

  understand when you're first learning

  out or starting out and learning is the

  details of that language are only sort

  of important they're important for where

  you use a language like you can't write

  in what you know you can't write apps in

  for one platform in all languages

  there's usually some kind of

  specialization but generally speaking

  once you understand the context

  it's that's that's the crew that's

  like--that's 90% of the battle and then

  the ten good last 10% is just learning

  the nuances of each platform that at

  this point if I you know when one day I

  eventually learn Swift I don't expect

  the difficulty b2b understand like Swift

  conceptually it's just going to be

  understanding the nuances and the

  approaches that they it prefers once you

  get wrap your head around the basics

  like the basics haven't changed since I

  was like 11 years old in writing apps

  and QBasic like at its core programming

  is just having variables that you put

  things into and then you have

  conditional statements to determine

  which path to go down and then you have

  some kind of looping mechanism to keep

  doing things over and over again and

  once you wrap your head around that like

  that's programming the rest is just all

  the details that are actually do you

  know relevant for your platform yeah and

  and I will say you know to expand on one

  thing you said not every language can be

  used to write every kind of app and I

  think people always ask you know what

  language should I start with and the

  answer is you know because as we talked

  about earlier because programming is so

  so dependent on your own motivation and

  an interest to push through the hard

  stuff and to get to something that you

  want I think you have to work backwards

  and say well what kind of apps do I want

  to make and so if you or what are on a

  program so if you want to program

  something like an iPhone app then what

  language can you use to make iphone apps

  well there's all sorts of weird tools

  you can do so cross-compile different

  languages but the language you should be

  using right on iphone app in today is

  probably Swift so I would say like you

  know take whatever whatever outcome you

  want to do you want to have work

  backwards from that to determine what

  language would be the most appropriate

  language for that and you know you might

  have to ask people like us if you don't

  know but like for iOS apps it's Swift

  you know that's that today if you're

  know if you're gonna learn from scratch

  today you're learning Swift and so

  that's how you pick it you don't you

  know you don't pick a language first and

  then decide oh I want to actually make

  an iOS app out of this you know yeah

  because the easiest way to learn is to

  have a specific simple and achievable

  outcome that you want to me

  like a specific kind of app you want to

  make let's say oh I want to make a

  really simple like you know game or like

  it's something something like that like

  something specific that you want to

  construct that is doable for beginner

  programmer that will keep you motivated

  to to learn to keep going and so then

  work backwards and learn whatever

  language and tools are required to make

  that happen and in in the the most

  straightforward way yeah because in my

  experience the only like the best way to

  learn is to start making something it

  doesn't matter what it is my first iOS

  app was a tip calculator that was awful

  and it never shipped but that's how I

  learned and I don't think I would have

  been able to learn if I didn't have

  something tangible that I was trying to

  accomplish when I was trying to be like

  well how would I display a number onto

  the screen how would I make a button

  like if you don't have something that's

  motivating you to ask those questions

  you're never going to get over that

  first hump of actually sitting down like

  reading a book is great but sitting down

  in front of a you know in in front in

  front of a text editor is where

  programming really starts yeah and that

  I have every every new technology or new

  language or new anything I've learned in

  programming has been because there was

  something specific I wanted to achieve

  and that was the way to get it all right

  well I think that's it for today's show

  and you know I hope you look if you

  don't already that's you know you get

  out and try programming and see if it's

  for you yeah that would be very

  satisfying to us if people actually

  tried it that'd be awesome anyway thanks

  a lot for listening please recommend us

  on over cast tell a friend also our our

  network relay FM just launched

  memberships where you can if you'd like

  you couldn't optionally give money

  directly to the shows that you enjoy or

  to every show on the network so if you

  want to do that check it out and yeah

  thanks a lot for listening and we'll see

  you next week