When I got interested in programming around age 14 I had a hard time. In retrospect, it’s easy to see why. I was only focussing on one of the three pillars of programming.
I wish Udemy and YouTube existed because it would’ve helped me skip many years of crashing and burning. At the time I only focussed on learning the language from books but not how to apply and build projects. There was no structured course (that I knew of) that would take you from A to Z. But learning the language is only the first step…
Programming is like writing a book in a foreign language
Let’s imagine you want to write a book in German. There’s a small problem. You don’t know any German. So you first have to learn the language.
1. The Words
You get a dictionary, buy some courses, practice your words on Duo Lingo.
It’s the same with programming. You learn about If Statements, Loops, Functions, Classes, Scope. Without the basic rules, you can’t do anything.
Using only the basics can go a long way. But you will run into problems and waste time because you don’t know why your code does what it’s doing. This means it’s easier to get stuck, harder to debug, and your programming mostly on luck. A good grasp of the fundamentals will take you further than knowing a little bit of all the frameworks and advanced concepts.
2. The Grammar
You know the words of the new language. But you also need the rules and the structure. What are common ways sentences are created, why, and using which format?
With programming, you have algorithms and design patterns. You learn best practices. What’s the right way to do things. You can learn them doing challenges on websites such as CodeWars and Leetcode. These solidify your knowledge of the language. With a good understanding of grammar, you have a diverse toolset to solve problems.
3. The Writing
Knowing the theory is helpful, it will give you a great head start. But all the grammar and dictionaries in the world won’t learn you how to write a good story. If you want to write a book you need to practice, practice, practice. There are no real rules for a story, only best practices.
It’s the same with programming. A big part of programming is practical, like connecting libraries together, reading docs, setting up projects, researching. You’ll run into all kinds of problems never mentioned in courses.
You often think you know something because you’ve read articles about it, watched a couple of YouTube video’s and did a course. But once you try to create anything you notice you have no idea what you are doing. Knowledge is not the same as skill. Programming is a skill, you are programming a solution to a problem. You don’t get points for knowing theory if you don’t use it to build something. If you are not building you are not learning.
Learn, Build, Repeat
I wish I realized earlier that I needed the “words, grammar and writing” to learn a new skill. Instead of getting stuck one of them and blaming everything as a whole. I think an expert is someone who masters the fundamentals, thereby freeing mental energy for thinking about the best way and tools to solve the problem.