I’m sure you’ve seen many articles asking, “is Rails dead?” and “is Ruby dead?”… Indeed, you’ll see them for any technology old enough to have a real userbase, even technologies that are still growing.

I’m not here today to answer whether Ruby or Rails is dead. Instead, I’m here to explain why people ask this question. I’m explaining, not answering — much like my older post, Why Do They Say Rails Doesn’t Scale?

Oddly, ‘Dead’ Doesn’t Mean ‘No Code’ or ‘No Developers’

Ruby and Rails still have a lot of developers using them, and a large, strong core team working on them. There’s still lots of new Ruby and Rails code being written. New companies, especially small ones, are still founded frequently in Ruby and Rails. Big shops (e.g. GitHub, Shopify, Basecamp) are still using enormous amounts of Ruby and aren’t getting rid of it. New features are added constantly. New tutorials and libraries are written constantly. Boot camps churn out new Rails devs at high speed.

Nobody is saying “everybody has stopped using Rails” unless they have a very specific definition of ‘everybody.’

And the people who say “Rails is dead” already know this. You won’t convince them by pointing it out.

So they don’t mean any of that. What do they mean?

It’s About Who You’re Competing With

Back when Rails was first being declared “dead” everywhere, they’d say that Rails was “dead” in favour of Node.js. Node.js was what was going to eat Rails’ lunch.

That should seem kind of weird to you. Especially if you’ve used Node.js much.

Node.js is not bad. It’s really quite good. But it’s like saying “Test-Driven Development is dead. Everything is NoSQL these days.” These technologies aren’t in competition. They do completely different things.

Node.js is a single-process event-based environment that’s fabulous for lightweight shim servers (e.g. API servers and gateways to back-end services) and running snippets of code that can be the same on the server as in the browser. Rails is a heavyweight, server-rendered, multiprocess library designed for significant server-side logic. There are many other differences. But there are very few projects where it makes sense to say “I’ll use either Rails or Node.js for this,” just as there are very few projects where you should say “I’ll use either Postgres or Redis.” Your project should make it very obvious which of those is the right choice, even though they’re both great software.

(Reg Braithwaite said something like, “if a shark fights a bear, the terrain determines the winner.” If two very different kinds of software compete, it’s all about asking, “what are you trying to actually do?”)

So then, in what sense were Rails and Node.js competing? Not in a “this tool for this niche” sense, clearly. They’re very different tools designed for very different niches.

The answer, of course, is about hype.

Their Preferred Metric is Web Searches and Page Views

When people try to show that Ruby or Rails is dying, they tend to cite things like web searches, page views, and the TIOBE index (which also operates off things like web searches and page views.) So they’re trying to guage interest and hype. More specifically, they’re trying to guage interest and hype among developers who don’t already use the language (top-level searches over-represent devs who are trying the language out or just started.)

Which means they’re asking, “of the various developers who are switching languages, how many of them are thinking about switching to Ruby?”

That’s not a bad question. But it’s a very specific question.

It’s also the wrong question.

You could say, “but won’t ANY language die if it doesn’t get lots of new devs?” The thing is, “devs who are switching” aren’t the only new devs. Do you wonder if Ruby will get any new developers? Look at the many bootcamps that teach Ruby. There is a tidal wave of new Ruby programmers arriving. There has been for years. There will be for years to come.

We answer the wrong question because we can’t answer the ones we actually want to ask.

But This is All a Proxy…

The thing is, developers who go around saying things like “Ruby is dead” aren’t wringing their hands about it. Often they’re attemping to declare the dominance of their favourite language in the constant fashion-war that is language choice. Or else they’re trying to find a most-popular faction so once they join they won’t get made fun of for it. They want to join the “right” language.

A few are asking, “will I be able to get a job in this language?” Folks who mean that tend to ask it in those words, though.

And that’s all fine. I’m glad people are trying out new languages. If this is what it takes to get them to try out new languages, that’s fine.

If it was actually about “not dying,” Rails would be a massive, dominant contender. Rails has no serious competition for the “build a web site for your startup and see if people buy things from it” business niche. Nothing else comes close. This means there will be Rails jobs doing that for a long time, especially when you figure in legacy software.

But the people who say “Rails is dead” already know that. So that’s not what they mean.

Here’s What They Mean

These folks are checking popularity-based metrics (TIOBE, Google Trends) and ignoring technical, business and job metrics. They’re trying to join or bolster language factions. They consider tech like Rails to compete with Node.js.

Here’s where all that makes sense: they’re seeing who is the current “hot” tech to put on your resume. They’re aggressive because not everybody is allowed to win. For their favourite language to win, somebody has to lose. They’re looking at hype because hype is how that’s chosen. They don’t care if it’s totally different tech competing — NoSQL versus functional programming, for instance. Because in hype, they do compete. They also don’t care what boring tech business chooses to make money. They’re not trying to impress the kind of person who considers return-on-investment daily as part of the job.

And here’s my unpopular opinion: that’s important, and it’s fine that they’re doing it. Getting a job, especially if you’re new to coding, is a big deal. Figuring out the hot tech and learning it makes it easier to get a job. Once they have a job they can learn the daily stuff. Until then, they need to know what’s hot. (I talked about some of this with Mike Dominick on his podcast.)

Have some sympathy. It sucks that they have to figure this out, but they do.

Just don’t mistake that for what you care about.

So is Rails Dead?

Yup. As a doornail. When these specific people are asking, the answer is “yes, Rails is dead.”

Here’s why.

Rails will never again be the “new hotness.” It was for awhile. It won’t happen again. Rails jobs won’t go away. New Rails programmers will keep showing up. New businesses will keep adopting Rails.

But if you’re trying to impress a software developer with a resume or job interview and you say “I know Rails!” you’re not going to get the “wow reaction” that Rails got years ago, or GoLang got in 2018/2019. Not ever again.

Ruby and Rails are boring, established tech. They’re great for making software. That have a healthy business niche. They attract a surprising number of new engineers, and boot camps mean that there will be MANY new Ruby programmers.

But it’s worse than that: if Ruby does everything right, it will always be a laughing stock to snooty elite programmers because it’s a great prototyping language for quick market validation. And it’s even worse: snooty elite programmers hate beginner-friendly languages because the communities are full of fresh-faced n00bs. JavaScript has this problem too. That’s what happens when you’re beginner-friendly. You get a lot of beginners.

If somebody asks you, “is Ruby dead?” or “is Rails dead?”, you should say, “yes, dead and buried.” If you say anything else then you’re trying to justify how popular you are to people who are trying to call you unpopular. It’s not a fun hobby. Some day they may want to build something. When that day comes, you can always suggest Ruby again.