

Ask HN: Is ruby/rails still a good bet? What else should I learn? - elvis635

I&#x27;ve worked with ruby and rails (and other ruby frameworks) for many years now, mostly for backend works, and I love them. It&#x27;s the only language I&#x27;m really fluent with and I&#x27;m thinking about looking to some more languages to deeply learn and experiment, to avoid that one day ruby won&#x27;t be needed anymore and . I&#x27;d still like to be on the web development<p>Which languages and frameworks do think are good bets? Javascript (nodejs, angular&#x2F;ember, and many more)? Go? Which others?<p>With all the client javascript frameworks I&#x27;m also starting to wonder if we&#x27;ll ever need backend anymore or if it&#x27;ll be just built as &quot;premade blocks&quot; and bringing all the focus to the frontend
======
hackerboos
There's always going to be a backend, for security reasons if anything.

I've shied away from front-end (read Javascript) development because of it's
fragmented ecosystem. Although I've taken an interest in Clojurescript
recently...

As for a new language I'd recommend Elixir. It's functional which will
introduce a new way of thinking and similar enough to syntax to Ruby.

Dave Thomas who wrote the original PickAxe book has recently released a book
on Elixir.

~~~
rubiquity
Your experiences are nearly identical to mine. I've also moved away from
keeping with the latest JavaScript tools/frameworks and have really taken to
Elixir. I still write a ton of Ruby but having Elixir in my tool set has been
awesome. Elixir is great for the things Ruby isn't, namely SSE/WebSockets and
background processing flows beyond just fire and forget.

~~~
hackerboos
The thing that did it for me was watching Benjamin Tan Wei Hao talk on
speeding up background jobs, which was a problem for me at the time:

[https://www.youtube.com/watch?v=2X1J1lVzRuQ](https://www.youtube.com/watch?v=2X1J1lVzRuQ)

[http://www.neo.com/2014/08/11/ruby-elixir-polyglottin-
ftw](http://www.neo.com/2014/08/11/ruby-elixir-polyglottin-ftw)

------
pjungwir
In my opinion Rails is the fastest way to build web applications, and the best
framework for iterating as you react to new business knowledge. I don't see
that changing soon.

Investing in a JS framework seems like a natural complement to your existing
skills. Angular & Ember are great fits with Rails. I also like Knockout, which
has an easier learning curve.

Another great fit would be Chef, which would leverage your Ruby skills and let
you improve how you're deploying the Rails apps you're building.

If you don't have a lot of experience in low-level languages, I'd explore
those for the learning. C is a lot of fun and very different than Ruby. iOS
would be a practical choice, and apps make very rewarding side projects,
although it might be a big change of focus for you. If you want to stay on the
server side, I'd find something you can optimize with C or Rust: some critical
code, or maybe a Postgres stored procedure.

~~~
markuz
This is a great advice if you want to be a generalist. I'm a specialist.

Take a look in this article, it illustrates pretty well the differences.
[http://www.nczonline.net/blog/2014/07/15/generalists-and-
spe...](http://www.nczonline.net/blog/2014/07/15/generalists-and-specialists-
thoughts-on-hiring/)

------
zzzcpan
I think many people will jump to Golang from interpreted languages for
performance and memory consumption reasons, which in conjunction with lowest
learning curve among modern languages and easiest way to deploy will give
Golang an advantage.

------
marketingadvice
Ruby/Rails is quick to learn so it's a good intro. I learned this way and then
expanded out into JavaScript then Angular/Node and now PHP and iOS.

Once you've got down the concepts of OOP then just experiment with different
languages, see what you like and run with it!

------
meesterdude
I'm a ruby & rails developer, and I love them both as well. They're good for a
lot of things and are generally enjoyable to work with. My side project is a
rails app and I wouldn't have it any other way. I think you'll find the day
that ruby isn't needed or used anymore is far, far away. php is still around,
as is java and perl. As long as developers go to it and use it, it'll still be
used. And rails is still one of the top web frameworks out there.

Javascript would be a good bet. that's what I have been meaning to focus on as
well. It compliments rails development, and opens the door to other JS
frameworks that you may or may not use, and other things like node or even
unity.

And by extension, learning those front-end frameworks (like angular) would be
good too. Some shops that run rails have something like that in the front end.
But knowing JS makes those frameworks more approachable regardless.

JS frameworks, single page apps... they're a way to go, but they aren't
replacing rails by any measure. Just more options for implementation, which is
whats great about the web. But in the end it's just another way to build a
site. Worth mentioning is that there have been some high profile shops that
tried to go fully embrace that idea (everything in the front end) but ended up
reverting back to server rendering and sprinkling with JS.

Go is great if you've got google level problems, but I wouldn't want to write
code in that unless I had an actual need that played to Go's strengths. If i
can do it with ruby, i totally will.

So, I'd say ruby and ruby on rails are still good bets, especially if you're
trying to build something yourself. But it's really up to you and your
priorities and what you're willing to bend on. You could learn .net and php
and do work for shops that use them in their codebase, and that's a way to go.
You could learn objective-c and write apps for iOS. It's really a matter of
what you want to do, what tools exist for doing that, and which one you
prefer.

Coming from perl and php, i have never loved anything the way i love ruby and
ruby on rails. It was well worth the years it took me to understand and master
them both, and the associated knowledge (testing,html5,css3,etc). It's hard
for me to see myself using anything else.

~~~
markuz
I don't want to start a flame war here. But why do I ever need to hit the
backend? If not to save state. Logic must run only on the frontend

I don't see any need for a Rails controller. In the age of unhosted apps
[https://unhosted.org/](https://unhosted.org/), any backend based app will
lose in terms of performace (the network latency will always be there)

Ruby has awful performance characteristic. But it so cute. (seriously, someone
have told me this, and sure enough, they love coffescript)

Let's assume if your project works. You get $500.000 in funding and 7 months
later you realize that you need to ditch Rails because of the performance.

Just one example of the perf issues I have with Ruby. Try to compile a super
simple SASS file. One time it takes 0.3 sec, the next 2 sec, then the
following 1.5 sec. Like WTF is happening. And it is cached !!!!

------
MalcolmDiggs
It really depends on the context you see yourself working in.

Who do you want your skillset to be attractive _to_? And what exact jobs do
you want to be doing?

A startup that expects you to be full-stack is a very different role than a
backend engineer at an enterprise company (so your mileage with something like
Angular, for example, would vary widely).

------
markuz
I see people complaining about JS fragmentation. While it is a problem, it is
just a consequence of how hard it is to create a complex webapp this days.

The thing is this.

Things in tech are always changing, and in this web dev of ours, things change
faster than anything else. It's crazy. And it is hard. SUPER HARD. And we got
to deal with it. So, deal with it.

Things like Exilir, closurescript or any other non-javascript thing are not
the answer. Simply because they don't provide a solution on how to
architecture your app (front and back end). There is a reason why the JS world
is fragmented today. If someday closurescript becomes popular, I guarantee it
will be fragmented with frameworks. Simple because WE STILL DON’T KNOW how to
create webapps. Sure it would be more functional, pure or whatever. But who
cares ?

Now let me tell you what is the situation in the JS community today.

There is the frontend and the backend JS ecosystems, and they have different
approaches on how to architecture an app. While the frontend folks used (past
tense here) to subscribe to a monolithic approach (angular/ember) the backend
folks always subscribed to the unix way (single purpose tools doing one thing
well).

I've being coding exclusively js for 3 years now. And trust me when I say that
since last October (ng-conf), there is a trend in the frontend community to
move away from these monolithic solutions ([http://www.breck-
mckye.com/blog/2014/12/the-state-of-javascr...](http://www.breck-
mckye.com/blog/2014/12/the-state-of-javascript-in-2015/)). This article really
illustrate the feeling we have this days. (and here is the HN:
[https://news.ycombinator.com/item?id=8679245](https://news.ycombinator.com/item?id=8679245))

Now think about the backend folks, The unix way have around for over 40 years,
and the nodejs folks have embraced it. I guess they got something right. Just
a though here. (Compare this with convention over configuration)

Nodejs tools like npm, browserify and gulp are the way to go for building your
app and they completely replace rails asset pipeline and rvm (and much more
flexible). And there will be no replacement for them anytime soon. They are
around for about 5, 3 years and 2 years (an eternity) and they get things
right.

JavaScript 1.6 (ES6) feels like a complete different language. Things like
Map, modules and generators are game changers. And 6to5 is the best way to
translate ES6 into ES5. So you should learn them ASAP if you wanna be ahead of
the curve.

Now let me tell you this about Ruby versus JS world. While the former offers
lots of magic with the goal of making the programmer job easier, the later
offers the right primitives without any sugar at the cost of convenience. It
seems crazy at first (I came from python world, and I used to love their
battery included approach) but there is wisdom in the JS approach.

My conclusion, JS and its community has many flaws, but learn to see beyond
the trees. The jungle is beautiful and vibrant. And thats be best we got.

PERIOD. and move on. PLS

