The title is not a coincidence with some books quotes. Like the very cool advice written in the book The Pragmatic Programmer (I cited this book some time ago in this post as a excellent book to read but I haven't started to discuss any thing about its content yet). The main point I would like to share is answering a question some peers asked me "Does it worth to learn a new language? Why I would do that?".
It is very complex topic =) I will try to give my suggestion which is very similar to the one in the book. For most of cases/people, I think is pretty good effort studying a new language after mastering already some language of platform (e.g. frameworks or all the specifications of Java EE). I think the main idea behind is basically "keep learning", like in Continual Improvement (Kaizen) concept, but here the focus is to improve your solving problem skill.
For a simple analogy, let's say that you know how to draw very well, but only used pencil. The first time you use a pen you can accidentally blur the drawing due you are not used to draw with a pen. But after you get more attention, you will not only know how to draw using the pen, but also how to make a different effects that only the pen can give and now, if you need to learn to use another tool to draw, you will have a very different perspective (I hope to be a better one =D ).
In our world, if we look to the past, we will see many programming languages arising and falling (like Assembly, Basic, Pascal, Cobol, Java and etc) and also platforms/OS (DOS, BSD, Unix, Linux, Windows, iOS, Android and etc). I don't want to say all those languages/OS are dead, but the main point is things change. So be used to the change, have the habit of be adaptive. With your mind open to new things you will always be ready to the future, whatever it would be. So be brave: master the subjects that you currently work and then go ahead and learn more about other non-related to your current projects. Technical posts can help to get good references to some news and books =)
In my case, I'm studying Erlang and Elixir (in summary: the language and platform are HIPER different of what I was used to). In the WhatsApp post I cited both, where the WhatsApp uses the Erlang to create their custom XMPP system. You can take a quick and nice overview to Erlang in this link and for Elixir look here. I think you will prefer the Elixir syntax over the Erlang. You can install it using the documentation. Well, for those in Mac, here how to install Elixir with more step-by-step:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
brew tap homebrew/versions
brew install erlang-r16
brew uninstall erlang
brew link erlang-r16
brew install elixir
Note you can have fun using the commands below to try it the languages:
- type "erl" for Erlang
- type "irb" for Ruby
- type "iex" for Elixir
I hope you enjoyed the post =) I will be very happy to keep the discussion in the comments if you like =D I will be very glad too if you visit us and our other posts and give your opinion about it \o/ Yay!