Dec 04, 2012
As a programmer few times we are given the task of picking a programming language to work on, but most of the times this is not the case, as someone or somehow we are told to use a specific language by request.
The selection of a programming language can be perceived as a simple decision, but it's not at all. Choosing a programming language at free will or because that language pays the bills, impact the future of our career.
It is more likely that once that you feel confident/comfortable with a language, you will never look around for a different one. There are exceptions to this rule.
Going on this path and after years of working with the same language, will - probably - turn you into a specialist on that language, you will reach a point where you will know every caveat to bend your language to do whatever you want or need the code to do.
But still, if you are at this point, I'll urge you to learn another language.
Why learn another language?
There are many reasons on why you should learn a new language, even if you don't have the need to really use it.
If you enjoy the language that you use day by day, maybe you are thinking right now that this is non sense.
Back at MagmaRails 2012, Blake Mizerany gave a talk called "Go simple", it was a talk about Go for rubyists. And actually in the talk he used Ruby to explain Go.
Blake explained a nice couple of features of Go implemented on Ruby for Ruby!, knowing Ruby and going to Go made him discover features that Ruby can borrow, because they do not exist on Ruby, or just because Go implement those a in way that makes more sense.
That is the kind of insight that we gain when we start looking around other languages; gives us the opportunity to learn about nice features, also gives us a way to learn how problems are being solved in a different ways.
Basically it is a way to renew how we use our current language and refresh and challenge our development knowledge and skills.
How should I pick which other language to learn?
The simple response to this could be to just pick whatever is the popular language of the moment; this is somehow easy because we can be pretty sure that we will find a lot of resources from where to start.
If we want to take a different approach, maybe something a bit more challenging we could pick a language that differs from what we use everyday; for example, most of us use an Object Oriented language, so a good pick could be to choose a Functional Language. If this feels like a lot, well if we use a static typed language then we can try a dynamic one. There is really no rule for this.
How deep do I need to learn the new language?
It will depend on how much attraction at the end that language provokes on you. Knowing the basis of the language, like philosophy, syntax, data structures, programing model and what are the features that makes it useful or special; for certain uses that can be enough.
But most important again, is how we do relate this information with our current day basis language, and how can we improve our programming skills is the most important thing to consider.
Again, how can I start?
Internet is you friend, there are so many resources to learn well known languages and also obscure ones.
Also there is a book called "Seven Languages in Seven Weeks" by Bruce Tate. I read this book a few months ago, almost after Blake's talk; the title could sound cumbersome, but the book doesn't go in too deep on any of the 7 languages, it's more like an overview on the very basis of each of the languages and the nice features that each has to offer.
Finally there is a presentation from Matt Aimonetti which goes on the direction of this post, in it he asks you to be open mind about languages an understand the minimum of each language before making any judgment.