I’m teaching myself how to program and plan on using this blog as a means of tracking my progress. As my journey began a long time ago and I’m only now beginning to document it, let me go back to the beginning.
I’ve been interested in programming computers ever since I set up my first website on some free, ad-laden hosting service back when I was about ten or twelve years-old. It was simple and pointless, made up of a few pages of information about myself and jokes I thought were funny. I didn’t know anything about HTML at the time, but because of Frontpage and then Dreamweaver, that didn’t really matter. It was cool to put something together on a computer and make it available to the world.
In college I started a few WordPress blogs which quickly fizzled, but in the process developed a taste for fiddling with the backend to make everything look and behave just so. It wasn’t programming, of course, and even hacking seems like a generous term. I’d just copy and paste little bits of code and see what happened. I started an online book called PHP 101 but only made it a few chapters before giving up. I wanted to know how to code, but I didn’t really want to go through the trouble of learning.
When I moved to Qatar in 2013 to teach at an international school I was given an unexpected gift: free time. While Qatar is a tremendously interesting place to live, there isn’t a lot (I want) to do. I initially devoted a lot of this free time to playing video games, but grew tired of having nothing to show for the time spent. So I started another book: Learn Python the Hard Way. It didn’t take me long to finish, and soon I was looking for applications for my newfound skills. Unfortunately I hit a bit of a dead end here since everything I’d done with Python was based on the command line and GUIs for Python were still over my head.
My momentum died down and I found other things to think about, at least until the spring, when I decided that I wanted to build things that average people might find useful. Average people don’t use the command line, so I started to think about mobile programming. I’d always owned Android phones, so I made a plan for teaching myself how to make apps for them. Since Java is the native language of Android, I started a Java-based version of my old Python book called Learn Java the Hard Way, which was written by a well-goateed computer science teacher named Graham Mitchell. I finished the book in two weeks and, after a few emails back and forth with Graham, decided on my next source of material: Head First Java.
I’d read in the introduction to a book on Android that one should know how to use things like anonymous inner classes, listeners, interfaces, and generic classes in Java before jumping into Android development, so I read as far as I needed to in the Head First Java book to cover those topics (about two-thirds, if I remember correctly) before moving onto the Android book I’d picked out: Android Programming: The Big Nerd Ranch Guide. I got a few chapters in and then the same thing that had happened many times before happened again: I lost interest, and all of my momentum along with it.
For the past eight years or so, my relationship with programming has been two steps forward, one step back, one step forward, two steps back, and so on. That is, until this past September, when things finally got real. More on that soon.