logoalt Hacker News

Response to "Ruby Is Not a Serious Programming Language"

128 pointsby robbyrussellyesterday at 6:16 PM138 commentsview on HN

Related: Ruby is not a serious programming language - https://news.ycombinator.com/item?id=46106596


Comments

zemptimeyesterday at 7:56 PM

The reason I dislike the twitter argument is, even if ruby was the root cause, the choice of ruby still launched the business and got them to that first success disaster.

The deeper reason I think it's a bad argument is because twitter ran into a problem native and new to them - massive fan out (celebrity tweet -> millions of followers). that's not the kind of thing any language typically does while responding to a web request.

Lastly - heavy survivorship bias here. We will never hear about all the startups which were "scalable from day 1" on java or whatever and fizzled out.

Looking at https://www.wired.com/author/sheon-han/, this author's whole strategy seems to be bear poking. The writer is skilled but at least in this ruby one they are definitely hate-farming. I'm a little sad to see content of this quality in Wired.

Anyway, I'm off. Returning to be part of the usually silent majority who is happily using ruby to ship useful software!

show 1 reply
mekokayesterday at 8:15 PM

In the original article, author never actually went into why they disliked their experience with Ruby. They listed some historical shortcomings which we can only presume they were experiencing on the code base they found themself working on. I think the best point out of that first article was don't pick Ruby as a development language in 2025, there are better options for any advantage you might think it will give you.

I think that should've been the main point to attack.

In the present article, the author went for pathos instead and in some ironic sense confirmed the previous article's notion that Ruby is powered by sentimentality.

Many people that adore Elixir also think Ruby is a no go, despite the latter being a strong influence. Arguments against Elixir tend to revolve around its lack of traction, not its lack of seriousness.

show 3 replies
ashishbyesterday at 7:45 PM

Here is my single way of deciding what your favorite language is.

It is not "I like to write code in this language" but "If I am handed down a production ready system, I would prefer it to be written in this language".

A lot of people won't say the same answer to the first and the second question.

show 4 replies
Ataraxicyesterday at 7:12 PM

I love ruby. It's certainly not sentimental; I enjoy writing it and working in it, certainly a lot more than javascript.

I do feel like these sorts of attacks on ruby are quite weird. It's totally ok not to enjoy working in any particular programming language, but I wonder what the angle is to write about it is.

Arguments regarding ruby's successes are always so weird to me. Github, Twitter, Coinbase, and Shopify are all examples of great success. Challenges with scaling are successful problems.

It's a great tool and if you read this, consider and evaluate if ruby is appropriate for your next project. :)

aeturnumyesterday at 7:36 PM

This is a weird response to a weird article. The original article doesn't define its terms and, as Robby points out, that makes it hard to critique. If a language is only "serious" if it can scale infinitely for all use cases then sure Ruby isn't serious - most languages aren't.

That said - this response and the critique seem to basically agree. The critique can be summed up as "Ruby doesn't work forever" (and so it should never be used) and this is saying "Ruby doesn't work forever" (which is fine). I could almost understand this post as saying: 'Ruby isn't serious and that's not a problem for anyone who uses it.'

I will say that I found it funny that the original article attacked Ruby for being all the way down at "18th place" (This is inaccurate - it's 14th in 2024) on the SO dev survey - while talking up Scala which is 9 places further down on the survey[1].

[1] https://survey.stackoverflow.co/2024/technology#most-popular...

show 2 replies
taylorallredyesterday at 7:37 PM

I see people waxing poetic over Ruby a lot saying that it's a language "built for the human". The thing is, every language is built for humans (or at least should be) but we tend to have different definitions for what "built for humans" means. Ruby certainly has some clean and expressive syntax, but I personally find it difficult to use because of its dynamic typing (which makes it hard to know what the types are while I'm writing it) and the heavy use of macros and other magic (which does unknown operations without my knowledge and introduces symbols into the scope mysteriously). That said, it clearly works great for some humans, just not for this human (me).

show 1 reply
teleforcetoday at 12:41 AM

If people want to know the main reasons why Ruby or by extension RoR, is popular, please check this excellent article by the author of a non-popular programming language Stanza [1].

From the cited article [1]:

"Casual website designers can safely completely ignore the concepts of types and memory deallocation because Ruby is dynamically-typed and garbage-collected. These features are simply not available in all other languages. Java's meta-programming features, for example, are just not powerful enough to implement a system like ActiveRecords. Rails is only possible because of Ruby."

But I'd argue that you can still have types and still have a very powerful meta-programming features and abilities of compiled language for example D to implement a system like ActiveRecords [2].

[1] Stop Designing Languages. Write Libraries Instead:

https://lbstanza.org/purpose_of_programming_languages.html

[2] D Language: Features Overview:

https://dlang.org/comparison.html

pmarreckyesterday at 9:00 PM

I switched from Ruby to Elixir about 10 years ago for a number of reasons. 10x performance on various algorithms I translated into Elixir was one. Another one was 100% immutability, ruling out an entire class of bugs. A third was excellent concurrency support, which was of course aided by the immutability. A fourth was that they tried to retain the friendliness of Ruby.

At least a few emerged later. Pattern-matching + guards are godlike and eliminate tons of boilerplate argument-checking logic. Per-process GC, no GIL, etc. etc.

A small learning curve to master functional-language semantics and I haven't looked back.

Elixir simply scales better in every way- long-term maintenance, load, etc.

The Ruby community is/was amazing, though.

The only thing I wish it could do was compile down to a native executable or run in the browser.

epguiyesterday at 6:59 PM

This article feels like someone is defending their language. And that doesn’t bother me, but I don’t value that.

I don’t care about what’s popular or what feels most familiar. What I want is a dispassionate discussion of how different language features impact code quality, and I think you can only find that in more abstract discussions. The kind that turns people off with its talk of monads and applicatives.

show 4 replies
tptacekyesterday at 8:57 PM

I'm not a fan of Ruby, but the original Wired article is pure, distilled rage-clickbait, and nobody should be dignifying it. An interesting case where there'd be a more generous reading had the piece run solely on a blog, rather than on Wired.com.

But even if it had been written in good faith, this species of article (specifically: harsh critiques of popular programming languages written by people who aren't ongoing practitioners in that language) are a toxin to HN, the resulting language fights they gin up one of our closest equivalents to a cytokine storm. Don't feed into them.

wisp558today at 1:23 AM

This really resonated with the way I feel about Ruby. I haven't had the opportunity to seriously write Ruby in years, but I measure every development environment against the classic ruby/rails/rake/gem/bundler experience and I always find myself missing how productive Ruby was to work with, inside and outside of Rails. I think Ruby particularly excels in its ability to mold itself structurally to match its problem domain. Rspec and ActiveRecord and to a lesser extent Bundler and Rake are still the most ergonomic versions of tools in their class that I have used to date, and they all expose some sort of powerful DSL that feels magical in just the right way.

These days I mostly use more "serious" languages (python, Java, C#, C++), but it's because I want to work on a domain within those languages and I don't have the time to commit to bringing the domain to Ruby. I should call her...

jmorenoamoryesterday at 6:51 PM

As a Python enthusiast for 20 years, just ignore and enjoy.

jurgenkeskeryesterday at 6:37 PM

I indeed really liked Ruby because of it's expresiveness, it being totally OO, the lovely readable and writeable syntax.

But yeah, that was 20 years ago. These days I find Kotlin to be the perfect fit for my projects, because of the static typing and its ergonomic syntax. I just don't feel confident about Ruby projects when they start growing. But, I still love the language, although mostly for small things.

show 2 replies
lemonwaterlimeyesterday at 6:23 PM

Ruby is a joy to program in. I started exploring it after using Haskell and Smalltalk and was pleasantly surprised when the language would do things like both of them.

maxverseyesterday at 7:19 PM

So glad someone already spoke up about this -- I love Wired, and I think that piece is really poor (not because I love Ruby or think it's without fault, but because the argument it makes is essentially "it's not Ruby or Python, which have static typing tools.")

show 2 replies
cloudfudgeyesterday at 8:42 PM

I enjoyed ruby as a language for a while, but the one truly maddening aspect of it is that (as of 10 years ago anyway) nobody actually wrote threadsafe gems (because everyone was writing for Rails, which was single-threaded). That and the rampant monkeypatching that made the standard library hard to count on. These are the things that make it feel really "unserious" to me. I have no idea if these complaints are still current, though. I assume thread safety has been tackled at the very least.

show 2 replies
DoctorOWtoday at 1:25 AM

My response is a lot more terse: none of the complaints in the article actually impact usability, if it was actually less useful than other languages people wouldn't be using it. I wish Shopify was the primary example, because its the exact kind of high scale, data-rich kind of apps that Wired alleges to be near impossible.

mkl95yesterday at 7:23 PM

Ruby is one of the most fun programming languages out of the 6+ languages I've worked with, and I was very productive with it. Unfortunately, due to my experience working at a Ruby shop where Rails misuse and abuse crippled the company, I don't enjoy using Ruby anymore, and will never recommend using Rails for production-grade software. Hopefully you've had a better experience with Ruby and still enjoy writing beautiful software with it - hopefully not with Rails.

show 2 replies
jrochkind1yesterday at 8:53 PM

From the article OP is responding to:

> Critically, Ruby’s performance profile consistently ranks near the bottom (read: slowest) among major languages.

Without a cite, perhaps because it's not really true. Ruby's performance is similar to python's. Granted, neither one is going to win any competitions, although I'm not sure what the field of "major languages" is.

show 1 reply
robbyrussellyesterday at 6:16 PM

Ruby’s biggest flaw is that it insists humans matter. Some people hate that.

show 5 replies
mrinterwebyesterday at 8:43 PM

There are many good comments here about why the "Ruby is not a serious programming language" article is trash, and it is. What bothers me is that this article is on wired.com. I would expect more from Wired, and unfortunately, the article will get many views.

kindufftoday at 12:04 AM

The Wired article was pure bait and it worked. At least we are talking about Ruby <3

wcfrobertyesterday at 7:45 PM

> I’ve never seen a team fail because they chose Ruby. I have seen them fail because they chose complexity. Because they chose indecision. Because they chose “seriousness” over momentum. Ruby just needed to stay out of the way so people could focus on the real work.

I am entirely indifferent to the topic of Ruby, but this sentence really resonated with me. I'll take momentum over premature optimization for scale any day of the week.

tanintoday at 12:31 AM

I wish there would be a language like Ruby but strong type or statically typed.

I like its rich standard library style and encapsulation style (e.g. .map with lambda).

I've moved to Scala purely because Ruby is not typed. In a large codebase, it becomes really difficult to refactor. Even renaming stuff is convoluted.

show 1 reply
waffletoweryesterday at 7:30 PM

Seriously, I think it is a petty mistake to characterize Ruby as unserious. I am not drawn to the language myself, and my previous interest in it waned after debugging dependency rot in a cloud deployed Rails app more than 10 years ago. However, to label it as unserious would be nearly as unserious as labelling python unserious.

yomismoaquiyesterday at 9:46 PM

Let's be honest, if it weren't for Rails Ruby would be forgotten nowadays.

Right now Ruby is a language used to maintain legacy Rails systems.

show 1 reply
paulbjensenyesterday at 7:53 PM

If Ruby pays your bills, then I think calling it a not serious language is a bit of a stretch. Just look at Mike Perham's Sidekiq - he made a living out of selling a RubyGem.

ajsharpyesterday at 9:35 PM

The original wired piece is effectively a lot of words that swirl around one poorly argued point: ruby is falling behind because of it's lack of static typing support. "Seriousness" is an ironically unserious way to evaluate, well, anything, but if you were trying to force a definition based on the rest of the poorly formed narrative, it must be "static typing". Performance doesn't work as serious critique, because...python, and it probably shouldn't anyway (within some semi-reasonable range).

Except for static typing and ruby's particular style of metaprogramming (one could argue python enables decorator-based "meta" programming, but whatever), ruby and python are basically the same language, with some obvious semantic differences. Of course there is much about ruby and python that is very different -- adoption, library support, community, vibe, whatever. And you could say that python is at it's core functional with OOP layered on top, while ruby is the opposite, it's all sort of irrelevant, they are basically the same, in the fundamental daily experience of using the two languages, in that ruby/python and go (or java, or elixir, whatever) are very much NOT the same. Minus static typing support.

I'm optimistic ruby will figure this out soon, because the sort of static typing support that has propelled javascript and python is the kind that ruby can and should support. By that I mean neither really have static types. Typescript is another language that compiles to javascript, and python's typing support remains and probably always will be optional, and like javascript, is enabled by external tools (mypy, pyright, etc). Neither python nor javascript have a type-centric/aware runtime, or even one in which types are considered at all. They are still both very much dynamic languages that basically have nice developer tooling to help developers write "type-safe" code, but really, in production, we're just pretending that the types we work with in development exist at all in the runtime.

This is not so much a critique of the approach, but the mass pretending we do when we critique a language like ruby for "not having types" and praising javascript or python for "having types" which they clearly do not. But the approach is good, at least if you agree that optional typing is better than java/go style static typing.

I don't know what's holding ruby back from better supporting optional typing, but i hope they fix it soon. My sense is, to over-simplify, sorbet got too popular, but it's fundamentally an approach you would take if you had to build a type system around the language rather than in the language.

show 1 reply
puppycodesyesterday at 8:35 PM

I'm certain the users of the ruby app don't care how "serious" your programming language is.

show 1 reply
pmontrayesterday at 6:53 PM

> Culture doesn’t reliably reward the serious. Neither does business. It rewards the resonant. The clear. The human. The work that connects.

Culture maybe, but business rewards what make business going on. Only that and Ruby proved that it can make businesses start and keep them going on. The few ones that exceed the capabilities of the runtime had to pivot to something else, in part or completely, but would we had a Twitter if they started coding in pick-your-favorite-serious-language? Maybe a competitor would have overrun them. We'll never know.

What I know for sure is that Ruby has been paying my bills for nearly 20 years. That's more than any other language I used, serious or not serious. It worked for me.

jrm4yesterday at 7:34 PM

Anyone else feeling like discussions like this feel archaic? due to Generative AI?

For all its problems, the presence of AI feels like it should solve some of these quibbles for the vast majority of people who program. I can't quite put my finger on why just yet, though.

show 5 replies
mono442yesterday at 7:22 PM

RoR was a breath of fresh air when it was released, things could be done quicker and with much fewer lines of code but nowadays I don't think I would choose to use it again. Other languages has caught up.

show 1 reply
UnknownUser1234yesterday at 8:14 PM

Ruby is a tool, it’s fine. I don’t buy into all the emotional nonsense about it. Seems more like creative marketing.

Puzzled_Cheetahyesterday at 7:08 PM

> Culture doesn’t reliably reward the serious. Neither does business. > It rewards the resonant. The clear. The human. The work that connects.

Enshitification is a very rewarding strategy, depending on which side of it you're on, and I think you'd struggle to argue that's, 'The resonant. The clear. The human. The work that connects.'

The fact of that matter is that business and culture reward a vast range of different approaches in different contexts, and this holds over multiple levels of abstraction. From the sort of staff you want in particular jobs, all the way through to your position as a company relative to the market. Do you want your payroll admin to be playful? Really getting down, feeling that vibe - pay them whatever man - it's all in the vibe dude? Or do you want them to do their job to a standard? Do you want your impression as a company producing finance software to be that you're all about the resonant, the clear, the human, the work that connects? Or do you want it to be that you help the organisation meet its audit burden?

And just as business rewards different things in different contexts - so does programming. I'm not going to do low level systems programming in Ruby. I'm not going to go and do graphics programming in Rust. I'm not going to engage in banging out a CRUD app in C. You choose the best tool for the job given what's reasonably accessible to you at the time the problem occurs. Sometimes it's because a particular language gives you good access and support to a set of libraries - sometimes it's because the code you're working with was already written in that language. Sometimes the features of the language are well suited to particular tasks.

It's not a matter of the tool being serious or not. People are serious or not. Languages are just things and what makes the language serious when you pick it up is whether you're approaching your work seriously or not.

dzongayesterday at 6:40 PM

Ruby is a fine language that puts humans over machine.

however the success of rails was also its biggest albatross. Ruby though fine for system tasks (such as system automation etc, chef existed yeah - but we haven't seen new gen tools built after) - people forgot it could do those.

the other is failure of certain sjws to separate say dhh the programmer vs the person. & not being aware to how money (velocity & gravity) move the world e.g shopify involvement in the ruby ecosystem.

failure to understand that beginners are the lifeblood of an ecosystem - till this date don't know if ruby can be effectively used on windows. most people have windows machines not mac's or linux boxes.

it didn't fail cz it was too slow (its fast enough)

show 2 replies
Jake8978yesterday at 9:08 PM

Well, robbyonrails mentioned that he is an atheist. From my own experience in general, I have found that most people are not atheists. They just replaced God with their ego. In software engineering I have seen so many egos and self-rightousness, I just think I made a mistake of following the craft.

josefritzishereyesterday at 6:50 PM

I read this whoel article and I still do not understand what criteria make a programming language serious. Obviously it's very different from Python but I don't understand "serious" or "non-serious" as a way to describe this.

_dwtyesterday at 7:12 PM

I have the strangest feeling that at some point this received a 's/—/...' pass.

That aside, while I'm "old" enough to remember this kind of cultural/vibe-based rivalry between programming language communities, and read enough to know it predates the greyest of living greybeards (TIMTOWTDI vs the Zen of Python, "Real Programmers Don't Write Pascal", "BASIC considered harmful"), I am not sure that this works any more as an argument.

It's a bit tone-deaf to suggest that the difference between Ruby and other communities is that Rubyists are the (only?) ones who care about "how code feels"; that's a pretty core part of the sales pitch for every PL I've ever seen promoted. I am actually nervously awaiting the first big PL that advertises on the basis of "you may not like it, but LLMs love it".

I suspect the real problem is that data science + ML/AI drove (roughly) a bajillion people to Python and LLM training corpus makeup will keep them there. Meanwhile all the Rubyists (ok, I'm being a little inflammatory) that cared about performance or correctness went to Rust (or had already left for Erlang or Haskell or Elm or... whatever). Who's left over there in the dynamic-types-or-bust Ruby world? DHH? (Not an uncontroversial figure these days.)

pessimizeryesterday at 8:55 PM

> if a tool feels good to use… that must mean it isn’t “serious.”

Good structure. Always put the strawman up front.

Stay tuned for my article about soda pop which starts: "I missed the memo that said that just because something tastes great it's 'unhealthy.'"

markarooyesterday at 6:37 PM

Ruby is a little silly, but given its pedigree of generational internet projects, Rails is indisputably a serious framework.

xpeyesterday at 7:15 PM

A nicely done article by Robby, given that arguing definitions is too often a thankless waste of time. Some selections from [1] ...

> Arguing about definitions is a garden path; people wouldn’t go down the path if they saw at the outset where it led.

See [1] for some tips on moving past the fruitless arguments:

> Personally I’d say that if the issue arises, both sides should switch to describing the event in unambiguous lower-level constituents ...

> ... Or each side could designate a new word, like ‘alberzle’ and ‘bargulum,’

> ... and then both sides could use the new words consistently. That way neither side has to back down or lose face, but they can still communicate.

> And of course you should try to keep track, at all times, of some testable proposition that the argument is actually about.

> Does that sound right to you?

[1]: https://www.readthesequences.com/Disputing-Definitions

andrewstuartyesterday at 7:56 PM

The reason people attack Ruby is because Ruby users are vocally conceited, claiming “their language” holds some set of special place, uniquely created for developer joy and developer happiness.

It’s this ridiculous conceit and arrogance that in some way (never quantified mind you), that makes people want to bring the Ruby conceit back to earth.

That’s why Ruby gets attacked - because it’s nothing special but the Ruby lovers club all claim it is.

show 1 reply
bluerooibosyesterday at 10:38 PM

Frankly I don't think the article even deserves a response. One of the worst pieces of journalism I've read in a long time, which makes me think it's AI slop.

mberningyesterday at 6:39 PM

It’s as serious as you want/need it to be.

BuckRogerstoday at 12:12 AM

I agree with the author that in the era of AI generated code and dev burnout that languages like Ruby will maintain the joy of programming. But programming is increasingly going to become like picking seeds from cotton yourself, instead of using a gin.

Ruby is indeed a cotton pickin good time. I use C# every day and find it the balance between a fun and serious language. But I've always preferred Ruby over Python and all the others outside of my C# bubble. I do love working in C#, to be clear. It's a shame Ruby hasn't been on the rise.

tovejyesterday at 7:32 PM

This reads as if it was written with ChatGPT, find-replacing all the em-dashes with elllipses. Nearly every paragraph ends in a "That's not X, that's Y" -type statement.

If this isn't AI slop it's certainly badly written.

ErroneousBoshyesterday at 8:56 PM

Back in the olden days, maybe about 20 years ago, two web frameworks were really starting to change the way a lot of people thought about web development. Not the people at the company I worked for, sadly, which is why I went to work for someone else, but there you go.

These were Django, and Ruby on Rails. I already knew Python, and Django was really well-written, and had great documentation, and I could get going with it really quickly. If the docs didn't explain it, I could read the source code. Super.

The place worked at hired a guy who was big into Ruby on Rails, and I really wanted to like it. I liked the stuff the guy was doing, he seemed like a decent sort, and all, and I'm not egotistical enough to go "No we will use my thing" if someone has a perfectly good alternative. Well, okay, I am that egotistical, but not in this case. The point is, I didn't really care which framework we used although I was already able to write Python, because anything was better than the hideous ball of unstructured PHP4 intermingled with HTML that the company's sites were written in at the time.

I really really wanted to like Ruby on Rails, but the documentation kind of assumed you already knew a lot about Ruby and indeed Rails. Okay, let's learn some Ruby.

The IRC channel pointed me at some video tutorials you had to pay for because "that's the future, everyone watches videos to learn stuff now", and why's (Poignant) Guide to Ruby.

I did not like w(P)GtR, at all. I didn't like the "I'm so wackywackywacky" humour on every page. I didn't particularly care about the dog story, which put me off the rest of the whole chapter. I've tried reading it again, maybe about five times since, and I just do not get on with that American Gibberish Poem style of writing.

(I don't much like Alan Ginsberg either, FWIW).

Then the whole Basecamp thing blew up, and DHH was widely known as a total shithead from the motor racing scene so it's not surprising that he turned out to basically be the sort of person my grandfather would have shot if he'd been around in the 1940s.

So, that's kind of why I've never got on with Ruby, much as I'd like to.

bee_rideryesterday at 6:48 PM

> Ruby attracts a particular kind of person. Not better. Not smarter. Just… different. People who care how code feels to write and read. People who see programming as a craft that can be expressive. People who understand that most of our careers are spent living inside someone else’s decisions, so joy isn’t a luxury… it’s the only way this work stays humane.

The idea that caring about how your programs feel to write or read is somehow “different” seems weird to me. I don’t write Ruby so maybe I just don’t appreciate this difference.

But I mean, I write fun-to-write, silly little experiments in Octave, Fortran, and Python… I don’t know if anyone would enjoy reading them, but I don’t really see how a language could prevent you from finding joy in programming (other than Java of course /s).

show 2 replies

🔗 View 3 more comments