Why you should learn another programming language


When I wanted to learn programming, I was lucky enough to get exposure to three different programming languages... well, if you can call "exposure" the kind of exposure a 10-years old kid can get! My first computer was BASIC based, and I played with C and Pascal for a while. Regrettably I have to admin that, until I've got to school, I've had no idea what a pointer was...

My university studies were more theoretical and less based on programming languages, although I had the luck to learn something about C++ by some projects and some personal studies. I discovered Java in my early 20s, and that became my main (and favourite, at that time) language. I started working on personal projects using Java, and all my jobs to date have been mainly Java based.

As I've got more experienced in Java, I've found myself often thinking in terms of programming constructs rather than abstractions that should be agnostic to the language. This is not a good thing - tying yourself to the language narrows the solutions you can think about. If you know only a programming language, or let's say only a paradigm, there are significant chances that you can implement the same solution with a simpler approach, in another language.

The limits of my language mean the limits of my world.

Ludwig Wittgenstein

The Pragmatic Programmer (a book I'm reading at the moment, and I really recommend it!) suggests you to learn at least one language per year. And, while you probably won't be able to pursue this goal at work (it's not a smart move to experiment a new language for a risky project, i.e.), learning this in your time will allow you not only to broaden your views, but also to expand your portfolio and then to be able to advise solutions using the language you've learnt. This is one of the most relevant asset you can offer as a software craftsman.

P.S. I'm currently learning Scala, as I think some exposure to a functional programming language (although Scala is not purely functional) will broaden my views. Probably I'll blog something about it in the future!