Back in time, after I learned some Ruby, I liked it a lot. I continued to learn it more and more deeply. Nice syntax. Metaprogramming. Tons of awesome gems. Every aspect of it was awesome. I thought, “OMG, Ruby is the best programming language, I will always use it for everything!” I really loved it.
Time passed, I was still using Ruby. I heard about plenty of other languages. I didn’t give a fuck, because, well, “Ruby is the best language. Period.” Some time later, however, I have seen the thing from other perspective: being locked into one stack is not only non-fun, it also prevents me from developing as a developer.
Then I decided to try something. I picked Node.js, read a few articles on it, played around doing different kinds of things with it. In fact, I pretty enjoyed experimenting with a technology that’s new to me. I’ve got to know that there are situations when I would prefer Node over Ruby. And it’s not a bad thing — “If in this given situation Node is better, why would I use Ruby?”
But there is more. I wanted to experiment more. With lots of other different technologies. And I did it. Scala, Clojure, Erlang, Elixir, Go, etc — they all rock. By playing with them, I got to know about good parts of them. And I don’t pick some “best” of them, I don’t even try. Each of them is awesome, in different situations. (Honestly, I know neither of them on “average” level, even.)
I don’t want to be labelled as a “rubyist” (though Ruby development is the thing I do most often). I am an application developer. I mean it, I develop applications and I’m free to employ any technology that seems appropriate for solving some set of problems. Moreover, there are many sets of problems in each application. For some applications, one technology can perform well for all those sets, while for another it would be better to use two different technologies. Or three. Or even more. And you know what, I’m not afraid to use a few technologies for one app. I think this is nice.
So, start doing it right now. Play around one new technology. Repeat.