As a programmer, I learn way too many programming languages. I suppose one can never know too many languages, as they all have their pros and cons. The problem arises when I start to forget a language a month after I learn it. This happened to me way too many times over the past year to be a coincidence. Last winter I learned Flash and made a game to test my abilities. I really knew it well, but then I didn’t touch it in forever. In the Spring I learned Ruby on Rails in anticipation of my internship, and I also knew it pretty well, until I neglected it until the summer.

The thing I have learned is that you will forget a language unless you use it! I use C/C++ all the time, and used Java extensively throughout my first year at Stevens, so I doubt I will forget either any time soon. This summer, I’ve begun using Javascript and Rails quite often, so I’ve regained my footing in Ruby on Rails and gotten decent at the voodoo that is Javascript. The point is, I recognize that I desperately need to practice coding in many languages in order to remember them.

I have decided to do weekly programming exercises. My class schedule for the Fall is rather sparse compared to the 21 credits I took last semester, so I expect to have at least enough free time to fit in one small personal programming project per week. What I am going to do is, every week starting on August 24, come up with a programming project. It could be a simple program to solve a problem I’ve been having, or it could be a traditional exercise, like something out of a programming challenges book (I have a bunch of those!). Either way, the idea is to create a unique (read: I’ve never programmed a similar thing before) program every week to keep my general programming skills sharp. Also, I plan on implementing the project in three different programming environments, to force myself to learn various parts of all these languages. The languages I have chose to start off with are all fairly modern programming environments:

  1. Ruby – with Rails if the program is suited to a web application
  2. Adobe Flex 3 – using Flash instead where there would be a benefit
  3. UIKit aka iPhone – possibly using Cocoa if the program won’t work as a mobile app

I am already thinking about the various projects I’m going to do in the coming weeks, and I think it will be a fun exercise (at least for me). I’m hoping at least a few of the programs I create are of use to others, but this is primarily meant to help me gain some programming experience and keep my knowledge of these three particular languages at a good point. With any luck, I’ll use them all so much that I remember them for a long time.

The restriction I’m going to put on myself is that I’m only allowed to use one third party plug-in per language per project. This is to force myself to learn the built in features of the language and not just rely on plug-ins for absolutely everything.

I expect to change which languages I’m working with at some point in the school year, but for right now I think these three will keep me plenty busy. I am going to be getting tons of C and Assembly practice in my general course work, and my Web Programming class should help me review PHP and Javascript. With all of those taken care of, I think I will be in good shape as far as knowing a lot of good languages for many different tasks.