When I was 8 or so, I began to use the computer quite frequently. Not only at home, but at school as well. Of course, I played games and did some word processing. Learning to touch type was a big enhancement to my overall user experience. One day when I was playing a game, I realized that I didn’t know how games were made. I figured something had to make all the little shapes move on the screen at the press of a button, so I opened up Google and researched a bit…
After my initial search, which didn’t really turn much up besides these “quick-and-easy” game makers, I refined my search a little bit. I googled “How a video game keeps score” and found a wonderful tutorial on a Python game (that kept score). Skimming through the tutorial, I saw how you they used MS Paint to draw a little character and a background to move him on. Then I reached the section where the code was introduced.
From then on I was perplexed by computer programming–as it was called. I went to a library and found a book on Python Programming. After installing Python on my home computer a little text editor popped up. From there it was just time and learning. Quickly I progressed from making sums and products appear in a console window to processing user input and entire text files. Even some rudimentary GUI’s at some point.
Then it hit me… what next? Don’t get me wrong, I was really pleased that I could write all the factorials up to 32 bit limits in a text file, read those back in, and print them to the screen with a GUI… but I looked at the programs I used everyday. Microsoft Office, Firefox, even Windows Vista. So, you know what comes next–more Google!
First, I looked up “How is Windows Vista Coded”, and I got a mix between all these different programming languages I had never heard of. C, C++, Assembly… what were all these mystical languages? Being 8 at the time, of course I googled C++, as it sounded the coolest.
Being 8 at the time, of course I googled C++, as it sounded the coolest.
It took me considerably longer to learn C++. I had to download something called an IDE and a compiler! After experimenting with pointers (and corrupting the heap several times in the process… okay, bad pun), I wrote something that could actually be useful–a networked chat program using Winsock and a whole bunch of other win32 API that I regret being exposed to so early on…
After several years of win32 and C++, I came across Qt, which I now use everyday and absolutely love. Compared to win32, it made so much sense (later I learned win32 is C, which is why it never quite matched up with my C++ code). My programs went from OpenGL windows with message boxes to fully featured user interfaces that did more than one thing!
My programs went from OpenGL windows with message boxes to fully featured user interfaces that did more than one thing!
After spending some time with Qt and C++, I actually took a dramatic fork (bad pun to you git users, which I also learned around that time). I learned C#. There was one reason I learned C#–Unity 3D. Let me back up a bit, when a long time favorite game of mine–LEGO Universe–closed down for good, a friend of mine invited me to a team where we would make our own LEGO game.
Going back to the actual programming, I had never really gotten into much graphics programming. OpenGL or DirectX–neither was really what I felt I wanted to do. In Unity, however, I could focus less on making squares move around and more on 3D games that were actually enjoyable to play. After a year of work and a couple more developers, we are making progress and as we speak and I’m working on the algorithms to make brick building a reality, in addition to the server the game will use.
You might ask, “But what does this have to do with teaching kids to code?” Let me answer that for you all, as it’s rather simple. Coding has taught me numerous things I probably would have never thought to learn. I learned the very ins-and-outs of what makes a computer a computer and more importantly–critical thinking that ushered in a new way of looking at problems.
Not only more education, programming also gives me a prospective job market for the future. Software Engineers are at such a high demand that some make more than the average doctor (yes, doctors are supposed to have that king salary, right?). Also, unlike medicine programming has a much lower bar of entry. You don’t even need a degree to get most jobs, since experience and knowledge are at a higher demand (a degree won’t teach you everything).
Software Engineers are at such a high demand that some make more than the average doctor (yes, doctors are supposed to have that king salary, right?).
By the time I reach college, I’ll have had almost 10 years of experience programming. If you put that into perspective, it takes roughly 10 years to become an independent, licensed surgeon. Will I even bother going to school for computer science? Probably not. More than likely I will pursue something more interesting at the time (I’ve already been eyeing theoretical physics and M Theory).
If all that isn’t enough, I’ve already written a number of libraries and applications being used out there, including mobile apps, algorithms, and servers (soon-to-be). And if you’re an educator wanting to teach other kids to code, please stop teaching them how to print out numbers, and start teaching them how to be the next generation of problem solvers–it will save them the hassle of having to relearn everything they know later.
First, solve the problem. Then, write the code.
— John Johnson