The 5 year programming plan

I’ve been trying to learn programming for a number of years and I really haven’t gotten too far. My first brush with programming was with BASIC and I never learnt much beyond FOR. My first real programming language was Java. I learnt some more, but nothing beyond simple inheritance. On the way I tried twiddling with C++ and failed miserably (I won’t go into details). The reasons for my failures were numerous, including bad teachers, bad syllabi and my own inability to settle down with a good text-editor rather than IDE-hopping. But enough is enough. I’m finishing school in a few months and then I hope to get a Computer Science degree in college. So I’m starting a 5 year plan to really learn programming starting now and going upto 2011 when I graduate.

Before I outline the plan, here are the basic premises on which the plan is based: I should learn at least one programming language and one programmig tool each year. By “learn” I don’t mean knowing everything that there is to know about the language, or learning all the available extensions and toolkits that are available. By the end of the year, I should be able to write significantly large program without having to lookup documentation too regularly. I should also be able to read other people’s code and understand what is going on without much difficulty. As part of my project, I’ll also be implementing at least one large project. As you may have realized by now, all this leaves room for a certain amount of ambiguity and interpretation, but that’s ok for me, because I think that it’s good to have some amount of flexibility in one’s plans. Without any delay, here goes:


  • Languages: Python/Perl/Shell Script
  • Tools: Emacs
  • Project: A PIM with internet backup and synchronization


  • Language: Java
  • Tools: Eclipse
  • Project: Undecided


  • Language: C/C++
  • Tools: Undecided
  • Project: Perhaps some sort of Databsse application


  • Language: Ruby
  • Tools: Rails
  • Project: Perhaps a reimplementation of my previous apps to a web framework.


  • Language: LISP
  • Tools: SLIME
  • Project: Undecided

As you can see, there is a fair amount of stuff that is currently undecided. I intend to fill in the blanks as I learn more abouot the langaguages and programming in general and where to use what. Another thing that i should mention is that since I’m going to be using Emacs, I suppose I will have to dabble in Elisp a bit, but I’d like to keep it to a minimum until I actually start learning LISP. If you’re a programmer and have had experience with anything listed above, any advice would be welcome.

One thought on “The 5 year programming plan

  1. Having taught myself how to program, I agree with your idea to do projects–the best way to learn is to do it. While books are nice, the best way I’ve found to learn a language is to start using it. It will probably take a couple of attempts (projects) for you to feel comfortable.
    Python is a good choice. Look at the schools you are applying to and see what language they use for their intro courses, you can even follow along in their weekly assignments (, for example).

    Honestly, once you understand one language well, learning the others will be pretty easy.

Leave a Reply to John Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s