I rarely hear the question "How should I learn programming?" from individuals who are just beginning to write code. Instead I hear way more specific variants like:
- What are the best sites for learning programming?
- What's a good free online course...?
- What's a good textbook...?
These are not very helpful questions to ask! Programming is not a subject in which you can just take a class or read a book and then "get it".
Tutorials Are Boring
Tutorials/books/online classes are good for learning the basics of a language (syntax, control flow like for-loops and if-statements, data types like strings, arrays, etc). You want to use tutorials to give you enough of a framework to know what problems can be solved through programming and what to google when you run into an issue or a bug.
At some point when you're taking an online class or going through a tutorial, you'll probably find that you no longer find it intellectually stimulating. This is okay! Tutorials are basically monkey-see, monkey-do. They aren't intellectually stimulating (at least usually). When you get to this point, it is okay to quit the tutorial! Instead you should work on something that will satisfy your curiousity. You should write your own programs!
I only really started learning how to program, i.e. how to solve a problem by myself from start to finish by writing code, when I strayed from tutorials. Instead I would think of interesting problems to solve (or find some online) and then struggle through creating solutions. This approach is similar to actual coding in the wild! However, it can be very scary for new programmers!
Communities Are Inspiring
Being surrounded by other humans who are learning programming and working on really interesting projects is an essential part of becoming a better programmer! I am extremely fortunate to be a part of the epitome of this type of community at Hacker School. Being part of a group of programmers dedicated to learning and making cool things is quite inspiring, and you can probably find a group like this in your city, too! Many cities have Meetup groups related to programming. Join those! Go to hackathons! Meet friends that are better programmers than you! Get real humans to read your code and give you suggestions on how to improve! Pair program! These things, however, are terrifying! They are not easy! You will be exposing your weaknesses and lack of knowledge to other human beings! Oh dear!
The Fear, You Will Let It Pass Through You
This fear is totally reasonable! And there are so many more reasons to be afraid! Most of us are quite accustomed to learning in a very sequential way, in which we start with Chapter 1, and then once we finish Chapter 12, everyone assumes we know what we're talking about. Learning to code is very different from this, and foreign things can be scary! Also, working on solving problems on our own can be scary because maybe you aren't smart enough! And working on solving problems with others is scary because you might not be good at communicating your ideas! Or you might not be as good at programming as they are! Or maybe you picked the wrong programming language! Or maybe you're afraid of not putting in enough effort to really get anywhere! Or of working so much you get burnt out! There are many things to be afraid of. In fact, on the first day of Hacker School we made a list of these things:
See! Other people are afraid! Fear is normal!
It is essential to become aware of your fears. List them. Have someone read the list. You will probably giggle together. They are probably afraid, too.
Fuck tutorials. Write a program. Send it to another human.
You can send it to me! Here's my email: firstname.lastname@example.org <3
A huge shoutout to the fabulous Mel Chua for talking through this post with me and giving me a better vocabulary and framework for understanding learning.