Why Programming Isn’t About Programming
Note: this article is targeted towards people who are considering or starting to learn computer science, especially middle or high school students. From the perspective of a professional or a researcher, the title may seem absurd (and it is). Yet I believe it is crucial for people who are starting to learn computer science to broaden their perception of what they are truly trying to learn.
What does a computer scientist do? Actually, let’s narrow that down. What does a programmer do? Really, I’m asking you. Think about these questions. What does a programmer’s day look like? How do they do it? Why do they do it? If you’re like most people, you probably just imagined a hooded figure furiously typing unintelligible words and punctuation onto a monitor. And you wouldn’t be wrong. Programmers spend a lot of their time programming. That’s why they’re called programmers.
If you’re reading this article, you’re most likely a student studying or thinking about studying computer science. In your classes, you’re probably learning computational concepts like branches and loops using a programming language, maybe Python or Java or C. By the end of this article, I hope to convince you that computer science is more than just programming. In fact, I hope to convince you that programming is more than just programming. The skill that computer science and programming are really trying to teach you is thinking.
“Everybody in this country should learn to program a computer, because it teaches you how to think” — Steve Jobs
If you’re a middle or high school student, I will even go as far as saying that all the content you learn is useless, because once you go to university, they will teach you all the syntax and constructs that you need to know. So why are you bothering to learn what an if statement is or how to use a while loop? Well, I will argue that you shouldn’t bother, because you’re asking the wrong questions. You should be asking why should I use an if statement and why a while loop? In fact, why does a while loop even exist? Who thought to create such a construct in the first place?
Ask questions. A lot of them. If you don’t ask questions or dig beneath the content in your curriculum, you are not going to learn anything truly valuable from your course. Even if you never find the answer to your questions, get into the habit of asking interesting ones, because that’s one of the main skills a computer science education can give you: curiosity.
A curious mind questions why things are the way they are, and why they’re not something else. It questions whether things could be better if they were done a different way. They try it out. They evaluate. They learn. This mindset is not limited to computer science. In fact, it’s crucial for business, politics, economics… anything that requires you to understand a situation and use your understanding to your benefit. In other words, identifying a problem and solving it.
Once you see that programming is about solving a problem rather than writing words on a screen, you begin to realize that things like syntax or constructs don’t really matter. Programming isn’t about typing, it’s about thinking. It doesn’t matter whether you know how to use a for loop in C, you can just look that up when you need it. What matters is thinking about what problems you can solve with a for loop. Why not use a while loop? Why do you even need to iterate in the first place?
Questioning your assumptions, understanding what tools are available to you, using the right tool at the right time, or creating a new tool when the one you need doesn’t exist… This is the essence of programming.
So the next time you’re sitting in class and your teacher is explaining a new construct or concept, remember that what you’re trying to learn isn’t the actual content. Even though school exams tend to test your knowledge, that shouldn’t be your main priority. If you want to gain anything valuable out of your classes, engage with what your teacher is saying. Ask penetrating questions like “What is a computer really doing when you declare a variable?” and challenge them by suggesting an alternative implementation.
Naturally, there will be times when your teacher doesn’t know the answer to a question, or doesn’t give you a satisfying answer. That’s fine. That doesn’t mean they don’t know what they’re doing, it just means that they have other concerns on their mind or they don’t fully understand the perspective with which you’re asking your question. After all, teachers are human, and humans aren’t perfect.
But the truly amazing thing about learning computer science is that there are so many resources on the Internet to help you. Don’t think that your teacher is responsible for your learning; you’re responsible for your own learning. Take the initiative to explore the vast Internet and pursue answers to your burning questions. This type of independent enquiry will take you a long way in life, whatever you decide to do in the future. Use computer science as an opportunity to practice independent learning, which is the process of converting curiosity into knowledge and skills.
Let me conclude with a confession: the title was a clickbait. Yet I hope you appreciate the point of this article: learning computer science and programming is not about being able to define a peer-to-peer network or being able to code a for loop in C. It teaches you the much more important and interdisciplinary skills of curiosity, problem solving, and independent learning. But these are things that your school can’t teach you without your effort and participation.
The ball’s in your court.
Make sure to follow our publication to be the first one to read our future posts.