Maintaining Ruby is a nightmare. Trying to escape that hell now.
I do like Ruby for my own projects. But I hate working on Ruby with others. It becomes more messy faster and then all that supposed “getting out of your way” goes out the window and you have to know about 9 objects, one of which is an iceberg which will need to quack at some point.
Overall, it obliterates a programmers ability at local reasoning in code, which is where I really want speed.
Is that due to Ruby the language or the developers and/or their culture?
I mean I personally believe maintainability is a combination of the language itself and the culture around it; Go is a great example of a language and culture aimed for readability and maintainability, eschewing cleverness. That is, the language is limited in how much cleverness you can write, and the culture is opposed to people trying.
It's both, really. Even if we limit this to dynamically-typed, interpreted languages, Python is far more maintainable that Ruby both because the language and the culture take a stance of "there is one correct way to do something." In many cases, you can do things multiple ways in Python, but the language design is intended to make one approach preferable for a specific problem.
Ruby is heavily influenced by Perl, with a focus on being enjoyable to write. And let me be clear: I loved writing Perl, back in the day. If I still used Perl, I'd still love writing it. But part of why Perl is so fun -- and why Ruby is fun! -- is that it's expressive and flexible, and you can do a lot of things you really shouldn't. This leads to people writing code that was fun to write, but will be difficult to maintain -- and the language's foundation rests on this concept, so the culture is (subtly?) encouraged to embrace it.
I do like Ruby for my own projects. But I hate working on Ruby with others. It becomes more messy faster and then all that supposed “getting out of your way” goes out the window and you have to know about 9 objects, one of which is an iceberg which will need to quack at some point.
Overall, it obliterates a programmers ability at local reasoning in code, which is where I really want speed.