There are two important things to know about coding education:
- 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 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.
There’s so much that could possibly be taught about coding that we need to start identifying at least semi-complete subsets that someone could learn. At the very least I want to pose the following important distinction I’ve learned:
- Web development
- Non-web development
When you’re developing for the web you specifically have to deal with:
- HTML — CSS
- Application structure
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!”
Learning to code will never make you this happy.
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 learn a little bit about a lot of things — so you know what you want to dive deeper into later.
Here at One Month, we’re launching a Learning Library in the new year, a free resource of videos, essays, and information on topics related to coding, design, and entrepreneurship. It is your first 1 minute, 1 day and 1 week of content for any subject. If you want to learn more start exploring what you can learn next — and then begin.
We start with a one-minute overview of topics like HTML & CSS, building an MVP, and learning about WordPress. If you’re curious about the Web Development Process, want to know what people mean when they say “Rails” or have heard of the term “Agile Development,” my co-founder Chris takes you through the beginning steps of what everything is, so you can learn what you want to learn next.
We want to make learning fun again.