I haven't been programming for almost a decade. I used to be able to program in QBasic, Turbo Pascal, C, C++, Visual Basic and Assembly. I have no knowledge in any other programming language (other than HTML).

I want a project (in some programming language) to help me acquaint myself with the new environment (unix, python, perl, java, flash?) in a way that would give me the feeling that I've gained a mini-super-power. By that I mean something that give me the feeling of hacking (not actually learn about hacking, but just like learning C for the first time feels like hacking). Something that would put my programming skills to use in a way that the programming languages I do (did) know don't.

closed as off topic by Adam Lear Feb 8 '12 at 23:04

Questions on Software Engineering Stack Exchange are expected to relate to software engineering within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here. If this question can be reworded to fit the rules in the help center, please edit the question.

  • This question is about what "newer" language would you start with after being "out of the game" for a period of time. It's not too localized. – Josh K Oct 11 '10 at 17:56
  • Is it what language to use? Or what project to implement that would help you practice that newer language? – Ryan Hayes Oct 11 '10 at 18:06
  • It's what project is worthwhile in the sense that the things I would have to learn would be relevant for getting used to a new environment in such a way that the project would be fun. – Shannon Oct 11 '10 at 18:16
  • So in a sense it's both about the language and about the project. – Shannon Oct 11 '10 at 18:17

In my mind there are two mainstream lanaguages (and their associated class hierarchies) in which to learn - C# and Java. Depending on the enviornment you are targeting, I'd start with one of those. I'm not saying all these newer dynamic languages are not good to learn, but the classic C#/Java would be an easier transition for you coming from C/C++/QuickBasic

  • 1
    I also think that learning C#/Java would give you that mini-super power feeling you are looking for ! – bigtang Oct 11 '10 at 19:02

I would start with a blog engine in just about any modern language (C#, Java, etc).

A blog engine helps you learn new concepts by making you implement:

  • A web-based UI
  • CRUD operations to a database (blog posts, comments, etc)
  • Authentication (logging in/logging out and posting as a user)

These three things are the foundation of most applications that you'll write in the real world. Also, writing a blog gives you the freedom of design and future changes. You could go on to implement a module framework, or just add new functionality as you see fit. The best part is you have a solid idea of what a blog engine does, so you have specific and concrete requirements to practice toward. If you can write a blog engine, you'll be well on your way to learning your new language.


I would suggest Python.

Looking at your languages list you are sorely lacking a scripting language I think, and scripting is essential for development.

I myself delved in Python a year and a half after having begun to work and I really felt like Superman: suddenly there were plenty of repetitive/mind-numbing tasks that I could just automate.

Stupid example:

You have the following directory:


but your company policy requires that all include files begin with a lower case letter: how do you set about it ?

With any scripting language, it's a pretty trivial task, with a compiled language, it's usually a bit longer (need to create a file, compile it, etc...), and if you set to it manually, just pray there aren't too many to rename.

Furthermore, Python is also used to build applications (Mercurial) or web sites (using Django), so it's not restricted to throw away scripts either.


this is my standard answer

I've implemented either a betting pool or a Baccarat game in almost every language I've learned. This should wake up your dormant programmer neurons.

This type of software covers

  • Dates and times, with calculations
  • Currency types and things that can be converted to and from currency
  • A discrete set of rules that is easy to test
  • States, transition between states and multiple entities responsible for state transition
  • Multiple users with different views of the same model
  • Multiple end conditions

I like this project because it has tons of small parts that can be written interdependently but won't be done-done until all the parts are done.

Multiple player blackjack and poker would work also.

This is assuming you are looking to learn the following:

  • Modern strongly typed dynamic language
  • Web app programming
  • Modern dev workflow with unit testing, automated build & deploy, version control
  • Current trends in UI
  • Current IDE & VCS etc

I would recommend ruby or python as the language with either Django (python) or Sinatra (ruby) as the web tier. Sinatra apps look (and can act like) command line apps so there is that advantage.

Both Ruby and python have really nice unit testing options. With ruby you can start with the basic test:unit and then learn RSpec. With python, start with unittest then look at Pyramid or Cheese Shop.

Use subversion as the VCS. All the new DVCS borrow from svn for their syntax. Learn SVN (it should be very similar to the old VCS you used) and then look at git and mercurial.

Use Eclipse if you want and IDE. If you used to know vi really well, try VIM. if you're on a Mac, try textmate. On windows, notepad++ is pretty good.

One caveat is that in my day job I work on financial systems and there is a huge overlap between things to consider when writing a multiplayer game of chance and a trading system.