Quoting:
- Why did you want to start programming? (What was your motivation?)
Like many others I was amazed by Minecraft. And seeing all those 2D Minecraft-remakes and even more important: Terraria I wanted to create my own 2D Minecraft / Terraria… Yes I began writing a clone. I called it “Terraria clone” back then. Now it’s WorldOfCube. But I somehow abandoned that project, sadly, I guess, but sometimes you just stumble upon Problems with your current design of code, making it - almost - impossible to add, for example, multiplayer support… Fixed now in my new Project! Ruins of Revenge.
- How long ago did you get started? And where are you at now?
2 years ago I started creating games using Game Maker. 1.5 years ago I started learning java. Since then I learned several programming languages, like C/C++, scheme, lisp and scala. I advise you to learn some other languages after learning java, too, especially ‘functional’ languages.
- What learning methods did you employ personally to help you develop your skills in programming?
Mentioned in the above question, learn different languages with different paradigms. Especially functionally languages.
Read code from others. Github is awesome! Look for projects of your kind (I guess games?). Minicraft and Notch’s Ludum dare entries were nice to begin with. Bigger projects are harder to get a head around, but Terasology is still ‘an intresting read’. 
Other than that I could only think of practice.
- What advice could you give to other programmers who might be feeling a little lost in what direction to take?
I expect ‘what direction to take’ to be of terms like “What to do now? What game should I write?”. If you have no Idea, start looking around, play games, and If you found something with a nice game concept, which you think you could recreate, try to make a clone
at least that’s how I started (somehow).
- Is there anything you believe should be a “Rite of Passage” for programmers (such as the need to create hello world, or a snake program, etc etc)
Oh. No. Definitely not in my opinion. People start in different ways. I created a platformer, other people created little music players, even other created a vocabular learning program. Just write what you feel like you are able to write, and do it!
A “Rite of Passage” might be writing a realtime networked game. But that comes pretty late. I’ve found that it’s needed to structure your code a lot differently, when I tried to network physics… MVC patterns then start to make sense… :persecutioncomplex:
- Why did you choose to begin with the language you begun with? And if applicable, why are you using the language you are using now?
Oh this is a nice story.
It began a long long time ago… maybe not too long ago ^^ 2 years and 31 weeks ago (bam! the exact time!
). Back then I got a game: World of Goo (yeah WorldOfCube is inspired by that game’s name. I felt it somehow deserved that tribute, since Its what made me start game developing).
Back then I was so amazed by that game I started visiting the modding community 6 days after I got the game. They provided an Editor to make levels for World of Goo and even made possible to publish them on their website. Take a look!, they’re probably the best community I’ve ever seen (except for you guys, of course
). These are my creations from back then.
Someday one guy from that forum posted a game made with game maker. I was amazed by that. “What? I can make games with that? This doesn’t look more complicated than WooGLE!” (the World of goo editor). So I downloaded the Lite version of Game maker and began learning how to use it with Youtube videos. (So great times if I think back… even though it’s only ‘bout 2 years ago…’)
For about half a year I learned Game Maker so fast, that I feeled like ‘A SUPER BADASS’ coder, not using the drag-n’-drop features anymore, but actually writing ‘ULTRA ABSTRACTED SCRIPTS LIKE A BOSS’ now. Back then I was productive… I also learned the first basics of creating a Platformer (the physics n’ stuff), which came in quite handy when starting with WorldOfCube.
Coming to WorldOfCube, this was the time I started with WorldOfCube. Back then it was ‘Terraria’ in Game Maker. Using advanced techneques like "grid"s and runtime-tile-generation (I had a terrain generator!) instead of Objects. I was trying to get it work fast. It didn’t fulfill my needs. It was slow, and I was sure it wasn’t my fault (the problem was, that rendering time was map-size dependent, even though it shouldn’t be! It’s always drawing the same section of the screen, always the same number of objects. Usually it shouldn’t slow down…), additionally I had a rather intresting problem: In Game Maker you can’t really hold references to certain objects. Acessing objects is done statically, though you’re somehow still only accessing a single instance… strange somehow… Didn’t understand it back then, not understanding it yet, since I didn’t take a look again ^^.
That’s why I moved on to Java. It was a rather easy process for me to learn java, since I already knew GML (Game Maker Language). In java I then created another version of WorldOfCube. This is where it got it’s name. I worked out the basics of Chunks, did optimization again… Using VolatileImages in rather strange ways. Yes. It was Java2D back then, but it isn’t anymore, I promise! 
I lost interest in WorldOfCube about 2 months after that. I had lots of learning projects aside in that time and WorldOfCube was 5k lines big. I wrote while the other children were playing games, and even much, much longer.
Seeking for even more performance I started learning C++ in my winter break. (I argued with my brother (who is programming, too) about GC’s. I said “GC’s create irregular pauses in my games, doing the garbage collection manually is much better!”, well… I stand corrected ^^) I even know the night where I started… It was 4 am when I finally got C++ with Eclipse CDT working, tough it didn’t want to run… I had to run it in the CMD… 10 minutes later I had it working in Linux with Eclipse CDT… Btw, it was the same night I switched to Using Linux almost only, as long as I was having a programming period.
Now, the 3rd version of WorldOfCube was written. This time in C++. (First time Github and Git for me back then =) ). Shortly after that I understood that I should take a look at OpenGL (still trying to optimize stuff). I started writing a simple 3D OpenGL demo in the beginning using immediate mode, later display lists. When I tried using VBO’s I come across some weird errors. After finding out I need to ‘enable’ OpenGL version from beyond 1.1 somehow, I struggled setting up libraries so they make this available. I didn’t know GLEW and EGL back then…
That’s the reason why I switched back to java. Frustrated I did some fun projects which finally let me strand here, in JGO. Good, but somehow embarrassing first experience (I had a lot major problems with my new program back then) 
But after some time I found out about LWJGL. An OpenGL wrapper for java. Awesome! I started writing my 4th version of WorldOfCube. I just couldn’t stop it
So that one is the last one. As I said I’ve already abandoned it. But my fingers tickle! I will probably start a new version in Scala this time… seriously…
Here in my story is a big black hole. I didn’t program for a couple of months. I know those times when I stop programming for a week or some days, because I didn’t want to… but this time it was different. There is not much to say about it than that you should know those exist. Some people even don’t program for years and then start doing it again. You shouldn’t worry about it. It’s up to you how to handle such situations.
Continuing in the long, long story, after getting back I continued writing WorldOfCube. It was a rather … not so fun time. I just had to refactor it. And It was very very hard to get rid of all those errors. And I couldn’t even playtest my game, because it wasn’t compiling. Of course the errors itself weren’t really a problem, but if you just rip your building apart you need some time recreating it, so it doesn’t rain inside. And sometimes - when you think you’ve finished - there is still water coming from somewhere. I had really major bugs in WorldOfCube. In the beginning it didn’t even draw anything, and it didn’t get better quickly. But I got over that time and got everything working. Though I now still have abandoned it.
Now a story of programming languages follows:
My brother was always a language engineer. He didn’t like Java at all… a point for friendly bro-arguing with my brother there, but now… arg I even agree him in some points.
He had a look at almost any language I know (or knew back then). He jumped from one language to another. Beginning at Java or C/C++ ending up with Haskell now. Everything you need to know about haskell is: Haskell is f*cking different from Java and (in comparison) is from another world.
He tried to explain me languages like Scheme, especially racket scheme and guile scheme, which he used himself. They already differ a lot from Java simply by their lisp-y syntax. I didn’t come around learning it.
Now - we’re only about a couple of months away from today - my brother gifted me “Land of Lisp”. I really took a look and read half trough the book, but I started taking a look at scala aside instead. I already knew the libraries so scala was easier. I took a look at scala before, but back then all I did was translating Java code into scala (this is an incredible mistake! You need to think functional, not imperative. It’s another way of thinking, a new way of programming. It’s the reason why there is such a big difference between Haskell and Java). But this time I was really starting to think in scala.
This is where I am. The long story is over. By the way I created Ruins of Revenge (see signature) a couple of weeks ago as a major project in java before I switched to scala. I didn’t find it necessary to be mentioned.
Reading through this whole story again it feels like being impossible to have experienced so many things in only 2 and a half years. There is even much, much more. Wow, I'm happy that I've written that down. Programming life is awesome!
This turned out to be more of a biography than an answer, but I think that’s okay. This might not help you out at all, but I think it’s quite an entertaining read. I could have written it shorter, but whatever… Now stand up and create your own story! 
[Biggest wall of text from me so far]