Self Taught Programming

Hold on, this is going to be a long one.

When I decided I was interested in making games and programs, I was in elementary school. I started in Scratch, a relatively new program at the time that my dad found for me and helped me pick up.

I started in Scratch by simply messing around with the various scripts available. I built a myriad of different projects from a drawing tool, my first project, to mouse maze games and short RPG games. All of them were very simple, but by the time I had finished them all, I had a basic understanding of basic programming principles such as how if statements worked and what they are used for, what variables are, and how various problems would be solved conceptually.

Scratch works well as a kind of pseudo-like code, and it works as a perfect stepping board to a real programming language. From Scratch I moved to Flash and Action Script 2 with the hopes of making a flash game and putting it online. I followed various tutorials and picked up things little by little, and at one point I was tutored by Mr McGowan after school. During this time I built one game and one weird project, hangman was the game and a collection of random mouse cursors was the project. I built hangman with Mr McGowan but the strange mouse cursor project was my first attempt at Flash and I did it solo, following an online tutorial instead.



I spent a long time in Flash, and at one point I also built a very rudimentary "Hit the Buddy" style game that was built for Android with the new Air for Android extension that was available at the time on the CS5.5 version of Flash, but I did not own this version and my trial ended shortly after I finished this project. The game was built off a Box 2D library for Action Script 3, a physics library that made the project relatively simple for me.

At a point I became more interested in 3D game development but programming seemed like a daunting task. I had dipped my toes into true programming with Flash, but nothing I did there was truly independent or really anything interesting. After a time of messing around in various programs, I settled on Unity3D when the Indie version first became free.

I spent a long time trying to teach myself Unity3D's weird version of JavaScript, UnityScript, a language I chose over C# due to its similarities in syntax to AS2 and AS3. I followed a large selection of tutorials over a few years, often not to their conclusion, but what proved to be the most useful method to learn was simply giving it a shot on my own.

I decided I wanted to build a RPG game and set up the framework for it. It got to a playable state on a very basic level, though it never got to a point where there was much to play. If I were to look back on that code now, it would be cringeworthy, but that makes sense. I learned by cobbling together bits of my own code, code from tutorials and assets, and code that I found by searching up my problem online and finding how others tackled it.

Unity Answers (basically Yahoo Answers for Unity, essentially a customized version of Stack Exchange for those who know what that is) and the Unity Forums quickly became the most valuable resource to me. Being able to use Google to its full potential by knowing what to search and how to search it was invaluable to learning, and most searches pointed me to those two resources where others already had and solved my problem, leaving up their solutions for others to learn from.

I kept using these resources and kept programming, starting small projects here and there but never taking one to its conclusion. This was both a virtue and a vice, on one side I was never completing a project and never had much to show for my work, but on the other I was learning more with each little project I picked up and never let a project become stagnant with nothing more to be learned.

Now I am teaching others how to program, in Scratch as I have been for the last few years after school at the Middle School and more recently in Unity3D, tutoring two middle school students after school at their homes. I have also begun the switch to C# for Unity, as it is the language that is generally more powerful and better supported in Unity and its community. During the school year with STAT, I also picked up Swift alongside Sarah, and we built a basic multiplication practice game for kids for iPhones in Xcode.

From Scratch to Flash to Unity and Xcode, I have learned that learning to program is a very slow but very rewarding process. I have also learned that the knowledge of others is invaluable, with forums becoming one of the most useful tools at a programmer's arsenal. Pick up a programming language, find a project, and cobble together some code, because the best way to learn programming is by programming, and having a motivation to finish your project makes the daunting task much easier to keep up with over a cookie cutter copy-paste tutorial.

Comments