To the student
Studying computer science
There are many ways to approach the study of computer science.
In many ways, learning a programming language is like learning a natural language. You first need to understand the basic syntax and grammatical rules for constructs such as conditions or loops. Then you need to practice writing code regularly, working on and strugling with exercises.
Computer science also involves a lot of mathematical thinking: the rules of boolean logic, binary encoding of numbers, estimating time complexity of algorithms, and more. In some areas of computer science such as computer graphics or artificial intelligence, it is very helpful to have an understanding of linear algebra (vectors and matrices).
Building software is very much an engineering activity. A standard engineering practice is to follow a design-build-evaluate cycle, where you iteratively refine your solution. As software projects grow larger, you need to pay more attention to the design of the software, using modularization and abstraction to control the complexity of the project.
Coding can also be a creative activity, much like other artistic activities. Artists use code to create visual art, electronic music, video special effects, and interactive immersive experiences. Coding is a superpower that lets the artist create things she could not have created otherwise.
Coding is a skill that improves with practice, where practice means “writing and testing and debugging code”. Sometimes the practice will not be fun, just as strength conditioning is not always fun for athletes. You might be tempted to complete a coding exercise by copying a solution, or by using AI-generated code. But this would be like an athlete instructing a robot to lift their weights for them.
What is an expert?
Niels Bohr famously stated:
An expert is a person who has made all the mistakes that can be made in a very narrow field.
Here are two corollaries:
In order to become an expert, you need to make more mistakes, and go through the struggle to find solutions. This takes time and effort. There are no shortcuts.
You do not need to be intimidated by an expert: the only difference between you and the expert is that they have made more mistakes than you.
Learning through play
Babies (human or other animal) use play as a way of learning about the world. For example, when a baby first encounters a new object, what does she do? She pokes at it, prods it, turns it upside down, all to explore the properties of the new object.
This is a great way to explore a new coding concept. What happens if you change the value of this variable? What happens if you change the order of these statements? What happens if you omit a particular keyword? A lot of learning how your code relates to the behavior of your program is playing around, poking and prodding and changing things and observing the results.
Give yourself time and space to explore.