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

Ruby is not a bad language, but I would not invest in it unless:

1. I am Shopify or another huge Ruby shop with a lot of existing engineering knowledge, libraries, team members etc.

2. I am interested in building something with Rails

Otherwise I cannot think of a compelling reason to choose Ruby.

The red flag here is that you dislike Python and JS for personal reasons which makes me think that any reasonable advice will not be important to you.



Not sure it's a red flag- I bet they're just young. I'm sure they'll grow out of it. We all had unreasonably strong opinions about arbitrary things at one time or another.

If you really hated the way pencils smelled and you're trying to get into sketching, and everyone always says "use pencils", could get frustrating. It's the best tool for the job, but you can probably also get pretty far with a pen.

You can certainly be a successful engineer while never learning specific languages.

That being said, a specific language can be the best tool for the job, and there are many things for which python and js are the best tools.


My text editor is written in Ruby. My terminal is written in Ruby, including the truetype renderer and X library, and the syntax highlighting uses the Rouge Ruby-based highlighter, extended with some more Ruby to read GtkSourceView themes. My desktop manager is written in Ruby.

For me the compelling reason to choose Ruby is that I could hack those things together quickly on my own in a few thousand lines of code and have an enjoyable experience both writing those tools and using them (I've done all my editing in my own editor for the last 6+ years, including editing the editor itself). The rest is newer.

(The whole "stack" above takes up fewer lines of code than the "st" terminal emulator and less than 10% the size of xterm; the truetype renderer was a 1 day conversion from a small C renderer, and weighs in at about 500 lines of code - that is why I love Ruby)

I'm 48. I've been writing code for 43 of those. I have no intention of spending time on Python more than absolutely necessary, because where Ruby is enjoyable to me, Python is absolutely not. I frankly find the notion of talking about people "growing out of this" quite condescending. There's nothing unreasonable about having preferences and being prepared to prioritise happiness.

For my part I've easily been able to make my living in a mix of (mostly) Ruby and JS for the last 18 years without making any sacrifices for it (I've not avoided looking for jobs that requires other languages, including Python - I have experience with more than a dozen different languages so I'm not afraid of using far worse things than Python when I've had to).

I've been in my field long enough to have seen many languages vax and vane in popularity, and I stopped caring about whether a language was popular 20+ years ago. My happiness is far more important.

I'd say as a young developer being willing to at least pick up the basics may be worth putting aside the distaste. But soon enough you get to a career stage where it doesn't matter and where you have the flexibility to pick jobs where you can pick your tools.


You started writing code when you were five years old?


I started at age 6. My brother started at age 5. Lots of us started on Apples and IBM PCs and back in the day Amigas etc.

We didn’t have a lot of entertainment back then.


One of the greatest things of 80s micros were built-in BASIC interpreters. Turn it on and program immediately. Combined with source code listings to type in from magazines, you almost had to resist picking up some programming skills. Even the command to load a game was a form of programming already, even though 6-year old me didn't "get" it until a bit later.

We have easy access to so much amazing technology for free in today's day and age, but we IMHO really lost a lot from the glorious days of "38911 Basic Bytes Free - Ready."


Same for me on not immediately “getting it.” I started with an Atari 800XL and wrote some small stuff but didn’t realize I was programming until a few years later. It was fun tho. I miss that simplicity.


The shells on the Apple II and on Commodore PCs were BASIC interpreters. So it was really easy to get started programming even without knowing it.


I was 6 years old when I started with Apple Basic.


Same. I’m fact I suspect a large proportion of HN’s audience started around this age.


Yes. I started with BASIC on a VIC-20


I like both Python and Ruby and aesthetically Ruby is better and I can see why people are happier writing on Ruby.

But to me happiness comes from achieving the ends — eg training a model, deploying code that impacts millions of people. I’ve done that with Python and I can honestly say I couldn’t have done the same with Ruby because the Ruby ecosystem and tooling didn’t support such impact size in my (and many similar) domains.

I don’t think it’s wrong to tell younger folks to see th big picture and focus on impact before personal preference. Everyone can choose their own path of course but I’ve generally found that focusing on impact has led me to take on more meaningful projects.


Machine learning is one area where it takes a bit more imagination to do it in Ruby, but you can easily wrap both compiled code and Python for that matter and still do your own work in Ruby if that's what you want to do.

I'd strongly argue that irrespective of your preferred language (ok, almost, before someone brings up Intercal or something) if you in any domain think it doesn't support what you want to do, what it actually means is that you don't understand how to achieve it with that tool. That's fine, and maybe it's not the right tool for you, but it's not the fault of your tools

And if you're not happy with what you're working on, you're unlikely to stick with it long enough to have any impact. And even you do, if the result is being miserable it's not worth it.


It sounds like programming is a "means to an end" and you don't cate that much about the plumbing as you do about the outcome, so you use python out of convenience and not out of taste? If that's so, fine, but you don't seem to have much "stake" in the discussion.

> I can honestly say I couldn’t have done the same with Ruby because the Ruby ecosystem and tooling didn’t support such impact size in my (and many similar) domains.

But did you give it an honest try, or is that an assumption? While no ecosystem I at python's level in the ML space, Ruby's contributions are not necessarily non-existent, and you'll find a few options when you actually look for it (sidenote: the pgvector extension for postgresql has been created by a prominent ruby ML developer)


I’m advocating for seeing the big picture. It’s not that I don’t care about programming, but I try to care for it in proportion to achieving impact, which I feel is the more important thing (most seniors and higher would agree).

I did give Ruby an honest shot, the maturity of the ecosystem around numerical computation and machine learning (my field) is nowhere near Python’s. That is to say, it’s not that Ruby was bad, but that Python was so far ahead of everything else that to deviate from that would mean spending an inordinate amount of time reinventing the wheel. I’ve certain fallen into this trap in the past (which caused to me extend my graduate school tenure by a year because I wanted to use a niche language which was cool but ended up having to spend time working around corner cases, which were solved problems in more popular and meticulously maintained libraries in other languages). Sometimes going with the mainstream means you get a lot solutions for free and can focus on your problem.

Programming language choice is partly aesthetic —- some languages are more elegant than others —- but if you want to be employed and want to create real impact in the world, it has to be tempered with hard nosed pragmatism as well. You’re paid to deliver solutions to problems, not to optimize your preferences. Sometimes you can do both, but when you can’t, solving the problem must take precedence.


I hear you there. I actually used to be an out of control Ruby hater - until I read Eloquent Ruby (fantastic book, my all time fav programming book) and started to understand it from first principles and all the beauty of message passing. I was Ruby-only for a few solid years of my career.

The quicker a young engineer can table that kind of unsubstantiated bias the better. Then again that could go for all aspects of life!


I haven't been a Ruby programmer for 10 years but I totally agree on Eloquent Ruby. I sure did love that book. I still pick it up sometimes and thumb through it. I did a reading group for Getting Clojure (another book by Russ Olsen) just because I knew he wrote it.

I totally agree. I have to remind myself often, I may not like the tool, but if I allow myself to get competent with it, I can complete any job. The more I sit around and hate it, the less effective I am.


wow TIL there is a book by the same author for clojure - gonna pick that up!


That's how I felt about Python for the longest time, hated it. I am currently learning Python.


Yeah. I avoided Typescript for the longest time because years prior, I'd had a hell of a time converting a bunch of Coffeescript back into JS. When that project was done I thought "never again will I use a language that tries to 'fix' JS." It was unreasonable and emotional, but also understandable.


Completely agreed. Personally I hated JavaScript too a long time ago, until one afternoon I decided to read JavaScript the Good Parts by Douglas Crockford. That one book alone was able to completely change my mind.


Same here, and also well worth the effort of getting gpt4 to only produce js that passes jslint.com without a single warning.


I’ve written Python for 18 years now and I’m certainly not unaware of its warts but its sheer usefulness and productivity makes it worth it. I see languages as a means to an end — some means fit people’s brains better — but at the end of the day you gotta get the work done. Python is definitely a tool that I’ve treasured.

I used to be infatuated with Lisp and Haskell and their sheer elegance. But now that I’m more experienced I’ve learned that picking a language comes down to practicality and maintainability as well as interoperability with other humans (library ecosystem, labor pool, stack overflow solution searchability).


You don't need personal reasons to dislike JS.


I use ruby for System scripts along SystemD.

You can insert direct linux command inside `` and they are executed inside.

For me this simplicity and power is hard to beat.


Maybe a python killed their dad.


In the island of Java?


ngl that is pretty metal


It could be more positive than despise for another language. The preference for a language might be out of emotional attachment at the specific workflows in which that toolchain allowed creativity to flow. And if you have an AI coder LLM that gave you good output with one training and performed poorly with another, would you say that the one with good output is worthless because was good at {{insertYourLeastFavouriteTechHere}}?


> It could be more positive than despise for another language. The preference for a language might be out of emotional attachment at the specific workflows in which that toolchain allowed creativity to flow.

For sure. Ruby gives me warm fuzzies a lot more than Python simply because I first started "seriously" programming in the era when Ruby, Rails, and TextMate dominated back end web development and was on board the RoR train.

Preference of this sort can also be driven by little things that some might consider inconsequential… those bits and pieces can be what makes the difference for someone in determining if a language is enjoyable to write or not.


And out of curiosity what are you using more these days that isn't Ruby?


Well I moved away from web development to native mobile, so these days Swift and Kotlin.

If I were to pick web dev back up though, there's a good chance it'd be with Ruby+Rails or Elixir+Phoenix.


I saw a Phoenix demo recently and yeah, looks productive.




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

Search: