Hi community,
Let me share my experience with you. I'm a hardcore Rails guy and I've been advocating and teaching Rails to the community for years.<p>My workflow for trying out a new language involves using the language for a small side project and gradually would try to scale it up. So, here's my summary, my experience of all the languages so far:<p>Scala - It's a vast academic language (official book is with ~700 pages) with multiple ways of doing things and it's attractiveness for me was the JVM. It's proven, robust and highly scalable. However, the language was not quite easy to understand and the frameworks that I've tried (Play 2, Lift) weren't as easy to transition to, for a Rails developer like me.<p>Nevertheless, I did build a simple calendar application, but it took me 2 months to learn the language and build it.<p>GoLang - This was my next bet, although I didn't give up on Scala completely (I know it has its uses), I wanted something simple. I used Go and had the same experience as I had when I used C++. It's a fine language, but, for a simple language, I had to fight a lot with configuration to get it working for me - (For example, it has this crazy concept of GOPATH where your project should reside and if your project isn't there it'll keep complaining).
Nevertheless, I build my own (simple) Rails clone in GO and realized this isn't what I was looking for. It took my about a month to conquer the language and build my (simple) side project.<p>Elixir - Finally, I heard of Elixir on multiple HN Rails release threads and decided to give it a go. I started off with Phoenix. The transition was definitely wayy smoother from Rails, especially considering the founding member of this language was a Rails dev. himself (the author of "devise" gem).
At first some concepts seemed different (like piping), but once I got used to it, for me there was no looking back.<p>All was fine until they released Phoenix 1.3, where they introduced the concept of contexts and (re) introduced Umbrella applications. Basically they encourage you to break your application into smaller applications by business function (similar to microservices) except that you can do this however you like (unopinionated).
For example, I broke down my application by business units (Finance, Marketing, etc.). This forced me to re-think my application in a way I never would have thought and by this time I had finished reading all 3 popular books on this topic (Domain Driven Design). I loved how the fact that Elixir's design choices are really well suited for DDD. If you're new to DDD I suggest you try giving it a shot, it really can force you to re-think the way you develop software.<p>By the end of two weeks after being introduced to Elixir, I picked up the language. In a month and a half, I built a complete Salesforce clone just working on the weekends. And this includes even the UI. And I love how my application is always blazing fast, picks up errors even before it compiles and warns me if I'm no using a variable I defined somewhere.<p>P.S there IS a small learning curve involved if you're starting out fresh:<p>1) IF you're used to the Rails asset pipeline, you'll need to learn some new tools like Brunch / Webpack / etc.
2) Understand about contexts & DDD (optional) if you want to better architect your application.
3) There is no return statement in Elixir!<p>As a Ruby developer, here are my thoughts:<p>1. So, will I be developing with Rails again? Probably yes, for simpler applications / API servers.
2. Is Ruby dying? No. In fact, I can't wait for Ruby 3.<p>Some drawbacks of Elixir:
1. Relatively new, so sometimes you'll be on your own and that's okay.
2. Fewer libraries as compared to the Ruby eco-system. But you can easily write your own.
3. Fewer developers, but should be fairly to onboard Ruby developers.<p>Cheers.