Harry,You're A Wizard
- 1 day ago
- 6 min read
(Or why I learned to code and why you should too)
"Harry — yer a wizard." (Hagrid, Harry Potter & The Sorcerer's Stone)
"The computer programmer is a creator of universes for which he alone is responsible. Universes of virtually unlimited complexity can be created in the form of computer programs." (Joseph Weizenbaum)
I've always had a fascination with computers starting at an early age, as I've mentioned in a previous post. While it all started off with a childhood fascination with computer games, it evolved into a fascination with figuring out how computers worked, and how I could make them do whatever I wanted them to do. One fun fact about me is that I've always been an avid reader. I remember staying up many late nights reading fantasy novels (still one of my favorite genres, btw) when I was a kid. I always enjoyed novels with wizards, dragons, and other magic users. The wizard — the powerful magic user that could bend reality with their spells — was never the most physically powerful character, but what they lacked in physical strength they made up for in raw intellect and power. They had an avid curiosity for how the universe worked, and the ability to control powerful and seemingly invisible forces that many people did not understand. To me, programming or coding growing up was like magic, and it kind of still is.
My first experience with computer programming was way back in elementary school using a programming language called LOGO. At the time I didn't realize that I was actually writing a real program on a computer. Basically, LOGO allowed someone to input commands. The program would then process each of those commands and move a small turtle around the screen accordingly, leaving a line in its wake. You could use this "turtle" (I use the quotes because the turtle was basically a small triangle) to make simple art on the screen. This is how an algorithm works at a basic level. An algorithm is essentially a "recipe" that makes up a computer program — it tells the computer what to do using a set of instructions. At the time it was fun and novel, but something that I wrote off. It wasn't a computer game, and games were king to me at that time. Only later would I realize just how powerful and useful being able to move that tiny little turtle around a screen would become.
In my late teens, I decided to take a certification course (sounds fancy, doesn't it?) for a now mostly defunct object-oriented and event-driven programming language called Visual Basic. (I'll talk more about different programming types, such as object-oriented, in a future post.) Visual Basic is just what it sounds like — visual and basic. However, when I took the certification course in the early-to-mid '90s, it was a somewhat popular programming language, especially for GUIs (Graphical User Interfaces) for Windows. I remember only using it for that one course, then just tinkering around with it a bit afterward. I would read a few books on Visual Basic, but in the end I never really found a personal use for it. It was a language I liked to describe as one that made things look pretty. It was like paint on a car — it sure makes the car look good, but it doesn't add anything to the performance, nor is it required to make the car run. Visual Basic does a little bit more than that, but you get the gist of it.
Jump to a few years later. I discovered a programming language that was included with early versions of the Windows operating system — QBasic. It was first introduced in Windows 95 and retired after Windows 2000. This would be when I first started taking coding more seriously. My first project while learning QBasic was for the chess tournaments that we ran at my high school. The goal was to write a program that would display a tournament bracket that could be easily filled out and updated by the tournament coordinator as needed, with the ability to print and save results for later perusal. Seems easy, right? Oh, how wrong I was.
You see, in college, when you take an introduction to programming course, they teach you how to design a program. You first need to break the problem down into smaller pieces, then plan the program — write the "recipe" for what you want it to do — on paper or in a word processor before you even think about opening an editor and writing any code. This is called pseudocode. This is where I went wrong with the chess bracket program. For the longest time I would jump in with both feet and just start writing code on the fly — skip the design phase entirely. This would bite me over and over again until I finally forced myself to design my programs first before typing a single line of code, which paid off greatly in the long run. As for that chess project? It was left unfinished. I did, however, leave it with a much deeper understanding of QBasic.
In college (my first attempt at getting a bachelor's in computer science) I learned a programming language known as C++. Almost anyone who has written a program in C++ will tell you that learning it as one of your first languages is like getting thrown in the deep end of the pool. Looking back, I'm glad I learned C++ early on — it made picking up other languages much easier. With C++ you encounter some pretty difficult concepts, such as pointers, memory allocation, and scope. While not as difficult as assembly language, it still took a lot of time reading, highlighting, and bookmarking pages of thick tomes — not unlike a wizard poring over an arcane magical tome. I have yet to fully master C++, but I know enough to get by. The next language I would invest a substantial amount of time in was Python, during my second stint in college. Python should have been the first language I was introduced to — it is easy to learn, versatile, and these days is the go-to language for most introductory programming courses at the college level. It's probably the first language I would suggest to anyone curious about getting into programming. (I'll explain the difference between a scripting language and a compiled language in a later post.)
Here's the thing about computers and software. Most people who use a computer use one that runs one of three operating systems, or OS. If you're working with a PC, it's Windows or Linux. If you own a Mac, it's macOS. Software is the brains of the computer — it tells the computer what to do and turns it into a useful tool. That OS on your computer? That's an elaborate piece of software called system software. Without an OS, a computer is basically an overpriced paperweight with flashing lights.
Everyone knows — or should — that the world is run by computers. Everything from your car to streetlights to your smart washing machine falls under what is known as the Internet of Things, or "IoT," and all of these things have one thing in common: they all run on code.
As you may have noticed from the hobbies I mentioned in my first post, Jiu Jitsu, Chess, and Ethical Hacking — which involves programming — are all complex systems. I seek mastery over complex systems as a way of regaining a sense of control. Programming in this day and age is a very versatile and powerful skill to have.
The world is digitally connected, and programming gives you a lens through which to understand it that not a lot of people have. Knowing that you can alter the world around you and create tools that can greatly impact how things run is empowering. To a non-technical individual, it all seems like magic.
Having the ability to read and write code means you can build your own tools when existing software isn't sufficient for what you need. It also means you can examine a program's source code and sometimes modify it directly, so you don't have to start from scratch. After all — if you want something done right, then you do it yourself.
Programming requires both creativity and scientific thinking. Some call it art; some call it science. In my humble opinion, it's a combination of both — it's where science meets art. As Joseph Weizenbaum once said, the programmer is a creator of universes. It often feels that way. Whether you draw inspiration from Harry Potter or the pages of a fantasy novel, the analogy holds: a skilled programmer, like a powerful wizard, can bend the world around them through knowledge, curiosity, and craft.
THAT'S why I chose to learn to code.

Comments