Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I tried to like ruby and rails, but when I tried to grok the language, I found it more difficult to follow than python + js (my daily drivers).

Did anyone else feel the same way? I kind of want to give it another chance bc I have some side projects that I want to try out, but I find django/python and next/react easier to grok. Maybe I should try harder?

FWIW, I also want to pick up good practices when it comes to engineering a back end, and the good ex-rails engineers I know tend to be really good in general.



Interestingly, for me it is the exact opposite, I tried Django/Python and it's more difficult for me to grok. Somehow I just find Rails easier and more straightforward.


I've worked more in Python, but rails was way more intuitive for me than Django. I knew just how I should do everything, and if I needed to alter some functionality, I knew just where to look. I loved its consistency.

I like ruby quite a lot, too.

rails made me very fast.


I think its bc I just know python better. When I look at ruby code, especially with symbols, I can't really tell what's going on the same way I can with python. I get the impression python is more simple while ruby is more powerful (featurefull) + more object oriented.


Yeah, probably. I just moved from Ruby to Python and I'm not exactly loving Python. But, I'm quite sure it's just that I'm not used to Python yet.

I think one thing is true -- Ruby gives you lots of different ways to do things. And it can be really terse sometimes, if you want it to be. Some Ruby devs IMO should learn to favor readability over terseness.

Overall though, Ruby is my favorite language and IMO can be very beautiful. I don't think anybody would call Python beautiful. (Lots of great things about it though, nice language and ecosystem... no hate)


Ruby is much more straightforward than Python or JS IMO. But Ruby devs tend to love metaprogramming a lot more (IMO) which can seem obtuse.


When I first started with Rails on a project I took over in 2012 I really disliked it.

Today it’s something I repeatedly try to tell everybody about. It’s just so productive.


This was (is) me.

Love Rails, but found it very difficult to learn Ruby. It's very hard for me to read, but that may be because I come from a C# background.

If you're looking for something like Rails, I'd recommend trying out Laravel.

It's on par with Rails as far as features, ease of use, etc. And PHP was a lot easier to learn for me versus Ruby.


Look at https://dry-rb.org/, some of the patterns there may seem more familiar.


Honestly, if you only are familiar with Python, it’s gonna be pretty tough to learn anything else. I would recommend spending some time learning literally any other language (Ruby is fine). Otherwise, if you just know Python, I think it will hold you back.

For example, ending an if statement with semicolon and then having the if block indented below is just not the normal way to do things. I’m not knocking Python, I use it all the time and it’s great, but it’s not a language you can carry over to learning other languages. It’s like if you know English, it’s pretty easy to learn Spanish. But if you only know Chinese, it’s going to be tougher to learn an “English-ish” language. Hope that makes sense.


FWIW, I have experience in TS/JS, Python, Java, and Scala. I would say TS/JS is my strongest stack.

Its not the minor syntax differences that I have trouble with, its that ruby does not "fit my brain like a glove."


I can appreciate that. There's a few revelations I've had over the years of learning Ruby that highlighted "why things are as they are". Decisions that feel arbitrary and against the grain, but actually make a lot of sense when you understand the design as a whole. And I don't mean to imply "You just need to understand the roots, man!". It's probably the reason people who like Ruby are zealous about it, and many aren't. It's all about that Ruby brain glove.

Two great examples that everyone comes into right away are "Why are parenthesis optional? Why do you not have to `return`? Why do you allow such chaos to run abound willy nilly?!".

It isn't because "We just like being different!" or "We are allergic to parenthesis!". It turns out that one of the fundamental designs of the language makes it such that they don't really _mean_ anything.

I think being able to understand some of that context is really valuable to "ruby making sense" vs not. You often see people proclaim "In Ruby, everything is an object!" And it doesn't make much sense why that's a big deal. But the ramifications are actually amazing: Everything (basically) is an object -- even stuff that feels deep in the guts of the core of the language (defining a class for example). It turns out, this creates an amazing amount of _consistency_ where every single thing in Ruby from my app code, down to the low level parts of the language follow the same rules. This then makes it easy to anticipate how something works, or find out more about it.

I don't expect to single handedly fit your Ruby gloves to your brain, but here are some notes that define Ruby that I find enlightening:

- (Pretty much) Everything is an object. A `thing` is an object. A literal `1` is an object. A `class Mom; ... ; end` is an object. They all follow the same rules. If you want to learn what you can do with an object, you just need to learn what kind of object it is, and then you can find out what it knows. There aren't top-level functions to act on your objects. Ruby is all about "passing messages to objects". Your object knows how to handle itself.

- Things that look like operators are just methods on those objects. `thing > other` is calling the `.>(other)` method on `thing`. Accessing data from an object always happens via a method. There's no such thing as "accessing a property vs calling a method". It's all calling a method, always. This adds to the consistency.

- (Pretty much) Everything is an expression. A value is already created and stored in memory somewhere; might as well make it available to the next fellow. This enhances the ability to ... _express_ (sorry) things. You can expect to be able to chain things together, or leverage values as they are created.

- The whole motif surrounds having a conversation with your objects. It's less about making statements to your computer, and more about having a conversation with the context you are working in.

Honestly, these are all common bullet points that people bring up, but to me they didn't make much sense until I really held a strong grasp of the language as a whole. At some point, those bullet points became my "woah" moment of _why_ Ruby is how it is. This understanding in how Ruby was different from other languages I've used helped me understand why Ruby fits my brain like a glove. This style of creating makes a lot of sense to me.

Well anyway, thanks for staying for dinner.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: