Hacker News new | ask | show | jobs
by stevebmark 3128 days ago
Much of what you learn in Ruby and Rails is not portable to other languages. Ruby and Rails are deeply flawed and much of what you learn is dealing with those flaws. Similar to learning PHP for example (but differently flawed than PHP). Ruby is also showing its age and is lagging behind modern languages.

Rails is probably fine and fast and good for small projects. It is probably not good for professional large projects.

3 comments

There should be a Hacker News MadLibs form:

UserOne: Don't use [insert language] and [insert framework] because [bad design flaw] and doesn't scale.

UserTwo: But [BigCo with millions of users].

What web dev languages/frameworks aren’t deeply flawed and teach you more portable skills?
Unfortunately I would say Javascript. Unlike Ruby, you will learn about compilers, static analysis, linting (eslint is more useful than rubocop), type systems, function composition, and have a good alternative to OO based programing built into the language (as opposed to your `UnboundMethod` lambda block proc whateverthehell design flaw Ruby has now). Javascript also gives you decent jumping off points into languages you will learn more from (Elm, Purescript).
Many of the popular web frameworks like Django and Elixir have a lot in common with Rails with regards to typing and compilation or lack thereof.

Function composition and partial function application is totally supported in Ruby so not sure what your complaint is there. Here is one rather forced example: http://genua.github.io/ruby/2015/03/17/ruby-function-composi...

I don’t know anything about Elm and Purescript but I’ll look into them. They aren’t hugely popular (as far as I know, feel free to correct me) so I’m not sure that’s a major win for portable skills versus Ruby engineers learning Scala or Python. If you don’t get too wild with the symbols, Scala can actually look quite familiar to Ruby programmers. Twitter had people use a subset of Scala when they transitioned many services from Ruby to Scala so that it would be an extra easy transition.

JavaScript has come a long way though and is certainly the lingua franca of the Internet.

    pp_proc = self.method("pretty_print_me").to_proc
Exactly :(
I did say it was a forced example ;)

Even assuming you implemented it their way, their code isn't very concise. In the snippet you pasted, "self.method" could be replaced with "method" for example without changing anything

You should let AirBnb and GitHub know.
Oh, believe me, they know
Hahaha