Video Coming Soon...

Created by Zed A. Shaw Updated 2024-10-28 08:02:26

00: Introduction

"Heed these words, all who enter this place. Do not think. Just set one foot in front of the other and by the Maker's love, keep swinging."

Dragon's Dogma: Dark Arisen

This is a quote from a game I love called Dragon's Dogma: Dark Arisen, but more specifically, an expansion added later called Bitterblack Isle. Bitterblack Isle is a dungeon full of horrific monsters, but tremendous loot. Every creature on the isle can easily kill a low level player, and many creatures can one-shot a max level character with top tier weapons. It's a deadly, haunting, and hellish place...and I love it. This quote, this one quote, is the most accurate description of what you must do to survive.

Just put one foot in front of the other, and keep swinging. I feel this describes this course as well. C++ isn't nearly as horrific as Bitterblack Isle. Maybe Java is, but C++ is fairly tame these days, despite what some people would say. Programming though can be a frustrating tragic experience for the uninitiated. You'll feel like an idiot most of the time in the beginning. You'll run into some problems that will "one-shot" you for weeks. Other problems will have simple solutions that you didn't see because you're overthinking things and frustrated.

Yet, programming has great rewards. The loot is of the most epic kind. The feeling you get when you finally find that bug that's been evading you for weeks is unmatched. It doesn't matter that the bug was cause by spelling "SPESIAL" instead of "SPECIAL" in a random config file. You found it, and you won. Not even beating the hardest Elden Ring boss at Rune Level 1, Weapon Level 0 can compare to the feeling of finally "getting it" in programming. And unlike a video game, you'll experience this feeling over and over because software is constantly broken, and constantly expanding, leaving more and more chances for you to defeat it. All you have to do, is keep swinging.

The Gift of Qualia

This is why I write code. I don't write code because it might get me a job at some company. I wrote code when it paid peanuts, I wrote my own code when I was being paid by a company, and I'll keep writing code even after AI has completely wiped out the profession. I love programming, even though many times I also hate programming. It's this drama, and the experience of solving complicated problems or seeing your ideas turn into reality that I want to gift to you. I want to give you the Qualia of Programming.

Qualia are experiences that you can't explain, you know exactly what they are, but they're also different between different people. Qualia are something that I can't transmit to you through words, drawings, or video. You have to experience them on your own to actually know them. Qualia can be anything from tasting a Durian fruit for the first time, to having your first child. It's something only you experience and perceive in your own way, even if many billions of other people experience it too.

Programming is a Qualia practice. This means that I could write down all of the information needed to understand code, transmit to you every aspect of how a computer works, and when you're done memorizing all these facts...you still won't know how to code. To really truly know how to code you have to experience the Qualia of programming, and I can't actually really explain what that is. The only thing I can do is take you on a journey through the information, pointing you at experiences to perceive, and if you keep putting one foot in front of the other eventually you'll know just know how to code.

This also means that, during this journey, you'll probably be very confused most of the time. You don't have the experience and knowledge necessary yet to understand what's going on. The tragedy of learning to code is that you need to know how to code to learn how to code, and the only way to learn how to code is to repeatedly fail at it until one day it makes sense. If you keep trying that day will come, but you have to accept your fate. You have to keep studying, trying to make little programs, fix your own bugs, and after hundreds of awful little pieces of code you'll get it. I promise.

You Have 500 Terrible Programs Inside You

When I started to learn to paint one of my teachers--actually many of my teachers--told me that everyone has 500 terrible paintings inside them. Your job as a beginning artist is to get those paintings out into the world so you can start to make less, and less, terrible paintings until you start to make some good ones. Maybe even some great ones.

I really like this idea because so many beginners worry that their code is terrible, but you're a beginner. Your code is supposed to be terrible. I know top level professionals who's code is terrible. If I went through all the code I've written I'd probably think about 25% of it is terrible too. Programming is hard--a lot harder than painting--and that alone makes it difficult to create something truly elegant.

As you work through this course, keep this in mind. The only way to get better at something is to do it as much as possible and understand that you're going to suck at it for a while. Just keep trying and it'll come eventually.

Proving to Yourself

Are you the kind of person who thinks you'll get caught as a fraud one day? People call that Impostor Syndrome and I have a simple fix for you to try:

Do everything twice. The first time could have been dumb luck. The second time had to be skill.

I believe a lot of Impostor Syndrome comes from a combination of a fear of failure and not confirming to yourself that you are actually competent. Fear of failure is overcome by simply failing a lot in private so you get used to the feeling. Proving that you're competent is a little harder. I find the easiest fix for both of these problems is to repeat everything you do. If you can do it again then obviously you're not incompetent or a fraud. If you can't, then you know there's work to do and what you need to work on.

The best way to do this is when you complete an exercise delete what you did and do it again, but try to use your memory. If you get stuck then look at the exercise for clues, but try your best to recreate what you just did from memory. At first you'll be constantly referring to the exercise and the code, but eventually you'll get to where you can do it on your own. This will also improve your ability to remember more code, your ability to summarize how something works, and generally improve your skills faster than if you did it once and moved on.

Then again, you could also...just put one foot in front of the other and keep swinging.

Back to Module Next Lesson

Register for Learn C++ the Hard Way

Register to gain access to additional videos which demonstrate each exercise. Videos are priced to cover the cost of hosting.