What do you care about: learning programming as a hobby, or a trade? Do you want to learn to think? Do you want to get into a tech business and do project management, working with developers? Do you want to learn real computer science? Should everyone?
What does it even mean to “learn to code”?
There are a lot of opinions out there. And some disagreements too! Here’s a sampling:
Now it’s true that many people think you should learn to code for the wrong reasons. Here’s a sampling of some dumb (or just off-the-mark) reasons, together with one from will.i.am that’s not half bad!
How’s this for a reason?
We teach math and natural sciences so that children have a sense of agency in the world. We need to teach computing for the same reason.
Simon Peyton-Jones #strangelooppic.twitter.com/XlKqRO6z2xmdash; Jessica Kerr (@jessitron) September 27, 2018
If you do decide to “learn to code,” there are a couple points from Mark Guzdial’s article Anyone Can Learn Programming worth noting:
Keep in mind, too, that learning programming is hard and takes time and effort. You will run into other people that are way ahead of you but who’s to say you won’t get there? It might seem daunting, right? You might have hear about those folks that appear to ten times more productive than everyone else (the so-called 10x developers). Should you be in awe of them? Wellllllll, Jessica Kerr says, correctly, that most of the time, the reason for hyperproductivity is not what you think.
Also, watch out for Impostor Syndrome.
Imposter Syndrome: be honest with yourself about what you know and have accomplished & focus less on the difference. pic.twitter.com/VTjS5KdR6Y— 🅳🅰🆅🅸🅳 🆆🅷🅸🆃🆃🅰🅺🅴🆁 (@rundavidrun) April 13, 2015
And watch out for Stereotype Threat as well. These things can get in the way of learning.
There are many tutorials, walkthroughs, academies, and online universities out on the web that aim to teach you the basics of programming. A few have gotten quite popular:
Or try a class from Coursera, Udacity, Udemy, or edX.
Or a traditional university. Or friends and mentors.
Here’s a good one: Dan Shiffman’s video series Code!. Here’s the trailer:
Check out the entire video series (as a YouTube Playlist).
There are quite a few good things:
But there are some pretty big drawbacks:
But what makes a good learning enviroment, in general? What should learners be aware of? Bret Victor has some thoughs. Please read (and interact with) his excellent essay. (To be fair, it addresses Khan Academy’s approach back in 2012, but the thrust of the essay remains timeless, and it’s not really just about KA anyway.) It is a long read, but powerful.
We didn’t forget to define the word “programming”; we just wanted to make sure we’ve seen enough code before attempting to do so. When studying programming, it’s a good idea to know what cetain words are referring to. These are pretty useful to know:
Don’t get too hung up on definitions
Language is fluid, of course, and a lot of people often misuse technical termninology. But it’s helpful to keep in mind the intent behind these terms. Don’t be a jerk when
correctingreminding people of subtle differences in wording.
Actually, there’s more to study that boring definitions. We need quotes! Browse the Wikiquote page on programming for some good and bad and sometimes humorous takes.
Remember that programming is not an end in itself. Computers should be used to amplify human thinking. Simply programming does not make you a better thinker.
...children can learn to program and that learning to program can affect the way they learn everything else. I had in mind something like the process of re-empowerment of probability: the ability to program would allow a student to learn and use powerful forms of probabilistic ideas. It did not occur to me that anyone could possibly take my statement to mean that learning to program would in itself have consequences for how children learn and think.
— Seymour Papert