There are two important things to know about learning to code:
- Most people don’t actually want to “learn to code”
- Learning to code doesn’t mean one thing anymore
It’s important to know these two things because otherwise the way we teach people about coding is wrong, and people won’t learn.
The first point I’ve seen over and over again. People who tell me they’re going to learn how to code, then they start learning, and they think it’s boring as hell.
I call it the coding fallacy. People think they want to learn to code but what they really want to do is build a product.
When we think about it, this should be fairly obvious. Knowledge of code in and of itself is not valuable if you can’t do anything with it. So for most people, the biggest motivation for learning to code is building something (although a close second is getting a higher paying job).
That brings me to point number two. Learning to code doesn’t mean the same thing anymore.
It used to be that in order to code you had to know almost everything about computers (hence the term “Computer Science”). Then things were abstracted to the point where you didn’t really have to dive into certain topics unless you really needed to. For example, as a web application developer at this point, I need to know very little about system administration because it’s mostly done for me by tools like Heroku and Amazon Web Services.
So when people say they want to learn how to code, most teachers start where they assume they should (where they always have), with data types, the various structures of a language, and help students develop a deeper understanding of computers.
The problem is that’s not what people want. They want to build something. And we should no longer take for granted that in order to build something you have to learn everything about computers or even coding in general.
For example, if someone is already working with a great back-end developer, it would make sense to just teach them the front-end, because that’s going to be the most useful thing for them. They will actually get what they want to be done faster, and they will be able to learn the back-end at a later point in time. By doing so we reduce the cognitive load on the student and enable him or her to learn faster.
When you’re developing for the web you specifically have to deal with:
There’s a lot here to learn. And most of it is pretty irrelevant to non-web development (except databases and application structure obviously).
The way I see it, most coding education involves a bait and switch. It goes like this:
Student: “I want to learn how to code.” (But what they really — but don’t know enough to ask — is I want to build a web or mobile application.)
Teacher: “Okay let’s start with data types.”
(2 weeks later)
Teacher: “Now we can design efficient algorithms.”
Student: “But I just wanted to make a cool-looking website!”
As teachers, we need to recognize that when people say they want to learn how to code, they often really mean that they want to build a web or mobile application.
That’s because to them, that’s what coding IS. It’s all they’ve ever been exposed to about coding. The problem is that they don’t know how to ask for it! So we shouldn’t just be taking everything they say at face value. It’s our job as educators to read between the lines.
I remember watching a play a few years ago in which a priest says that you have to tell the truth even in difficult circumstances. The person he’s talking to asks: “but what if someone asks you a question and you know the truth will hurt them?” The priest responds: “When someone asks you a question, answer the question they are REALLY asking.”
In education as well, you have to read between the lines to figure out what people really want. If they’re asking some specific thing, you have to guide the person towards what’s going to lead them towards their ideal learning experience.
So it’s up to us as educators and as experts to guide people in the right direction and not just let them flounder. If we can do this, then we can empower a lot more people to do amazing things.
As a student: learn what you want to learn.
One of the best things you can do in your own learning adventures is to learn a little bit about a lot of things — so you know what you want to dive deeper into later.
So how long does it take to learn to code?
We’re called “One Month,” so does that mean that after 30 days of coding our students are done learning? Not at all! I’ve been coding for over 15 years now and there are still so many things I don’t know — but that’s not the point. “Learning to code” isn’t about knowing every single thing in the language, it’s about knowing enough to be conversational and to make a mark on the world using your mind, and your creative skills.