When I was in Grade 8 I created a video game in BASIC called "Car Chase." The words "Car Chase!" would flicker on the screen for about 10 seconds, then you'd have to roll the dice to see what vehicle you'd wind up with - roll a one get a horse and buggy, roll a six and get an F1 car. Acceleration was fixed depending on the type of vehicle you rolled, and then you'd race the other six vehicles up a mostly straight track lined with obstacles. Collisions were explosions, and you'd have to start over. The game itself lasted maybe 30 seconds.
Over the next year I dabbled over the creation of a role-playing fantasy game in DOS, basically trying to bring a Dungeons & Dragons module to life. We didn't get much further than character designs, and the project fell by the wayside.
I didn't get back into any kind of programming until university when HTML was part of my journalism course. From there I dabbled in a bit of web design and editing for a few years, but it came up so rarely that my skills are extremely rusty.
I've always enjoyed programming, and sometimes I wonder why I didn't try and make a career out of it. I like computers and I like puzzles, which is all coding really is - putting pieces in their proper place. I also have a high threshold for tedious jobs.
Not that it's a stable or secure career by any means. Literally tens of thousands of programming jobs have been off-shored to India and China in recent years, where programmers assemble code with the same efficiency, and the same low salaries as for those who assemble toys and sneakers.
But a lot of important programming work is still available in Canada and the U.S. You could work for NASA, video game companies, movie studios churning out CGI films and 3D releases, software companies like Microsoft and Apple, companies developing apps and web applications - the list is long and if you're good at what you do you can still make a good living doing it.
But where to start? What do you need to know?
There are a lot of different theories on this. Some would suggest going all the way back to the basics of binary and the "C" programming language (which is the root of the C++ and C# languages that pretty much every game and serious application is developed in, including Windows and Unix, Apple and Linux).
If you like that idea - the theory as much as the practice - then I recommend going to Reddit.com, signing up for an account and then navigating to www.reddit.com/r/carlhprgramming.
Carl Herold has been leading an online programming class for months now and is up to around 130 different lessons. All are short and well-written. If there's something you don't understand you can generally ask assistance in the comments section - if the answer isn't there already. You'll start off with a tutorial on binary, write a simple program to familiarize yourself with the syntax of "C" and the tools you'll need, and then progress. CarlH even has a test after every 10 lessons to see how you're doing.
Another approach is to start with the simplest form of programming and then progress from there. That would be learning HTML, in which case I recommend starting with the latest build of it called HTML 5. There are numerous tutorials online to get you started, but everything you need to know is posted at http://dev.w3.org/html5/. From HTML 5 it's a short jump to Java and Flash, and from there to other programs like PHP, Python, Ruby, C, etc. until you get to C++.
And here's the thing. Pretty much every operating system out there, whether it's for smart phones, computers or touch-screen tablets, offers developers a free SDK (software development kit). This is basically a programming environment that includes an API (application program interface), programming tools, function libraries (pre-written pieces of code that you can insert anywhere to accomplish tasks), and documentation.
While you'll need to know your ass from your elbow - you don't just download an SDK and start cranking out software - every SDK comes with its own developer community where you can go for support, examples of code and application and additional libraries.
"Hello World" might be the extent of your first ever program, but everybody has to start somewhere. 0100 1100 : 0100 0001 : 0101 0100 : 0100 0101 : 0101 0010.