I'm a a typescript/java engineer. I would say my lifetime code stats are probably around 40% JS / 35% Typescript / 15% Java / 8% Python / 2% other. That is to say, I've barely ever written any Ruby outside of the occasional little script. And yet it's secretly my favorite language.
I wish I wasn't afraid that demand for it would vanish over time, which makes me reluctant to invest skills in its ecosystem. It seems so small and uncommon today compared to others.
I am an active member of the ruby community so am definitely biased, but I'd love to know. Sorry if that's combative, but I always wonder how folks choose languages based on popularity. If there's anything folks can point at, or if it is more of a gut feel. (Unless it is javascript or C, which are always going to be around because of their huge deployed base.)
Edit: added place in the redmonk ratings. Changed to be less combative.
It didn't come across as combative at all, no worries. I find it pretty convincing to be honest. If anything I think the biggest hold-up is that I can get jobs as a senior front-end engineer but if I looked for Ruby jobs I'd kind of be taking 2 steps back down in terms of what I can contribute.
Frankly I'm not a fast learner, unfortunately. Although it's possible that I've convinced myself of that because I hate the Java ecosystem so much that my brain just doesn't want to absorb information about gradle and intellij configuration and java dependency management and so on.
I went from being mostly frontend focused to working almost exclusively on backend and while I was able to get a generous pay bump, I found that I was generally much happier to just be working with Ruby/Rails almost full-time. Even though I was not as proficient right away.
I guess what I’m trying to say is if you end up focusing on working only with what you’re proficient at, you may be missing out on other opportunities that you may end up enjoying more long-term.
We're hiring for Ruby/Rails. We're also hiring JS. I've used Ruby/Rails my entire career and don't plan on switching. Pay seems good. Definitely more JS jobs of course but I'm happy with what I'm doing and making. I bet you can pick it up in no time.
The usual reason given is lack of libraries compared to python. I started a project a while ago with the idea that you could create a ruby library that would implement the C python extension API using the ruby C extension library... I got some basic stuff working, so you could "import" a basic python C extension in ruby (after recompiling it against my headers/library). Then you can use a python -> ruby transpiler (which does exist) to convert the python parts of the code to ruby and maybe have stuff "just work". The more I got into it though, it seemed pretty daunting to get something like numpy working... so I have stopped for now.
I'm not sure what Python library you couldn't find an equivalent for in rubygems. I never had a problem finding what I needed. (Maybe some ML or related fields?)
Depending on the size of the library it might make sense to rewrite it.
Using C extensions is more popular than Python or other languages
Ah, good point. Domain does matter. But that didn't seem to be what the original poster was pointing to.
Based on my ambient knowledge, I wouldn't want to write anything in the machine learning space in ruby. Or for that matter in any language other than python (or maybe scala/java, if you are using spark).
Or are you suggesting that python has more/superior libraries compared to ruby across the board?
That is not to say that you can't get a job and you might win the market by doing something increasingly rare in relatively high demand. Or you might not. Or you might do ruby for a multitude of other reasons but relative popularity better not be one.
As you said everyone and his sister knows javascript, JS devs are a commodity. I don't think anyone can expect to secure his future by picking up something like JS or Python since there are tens of millions of people learning it right now. So the popularity of the language means just that - everyone knows it. There are more jobs but way more people applying.
Nor is Ruby a secure bet, nothing is really. Ruby is niche but it still has a very strong community, there is almost nothing web related Rails and the community haven't solved. I think people overrate the importance of community size. Does it matter if JS has 10 million devs or 20 million? Not really imo. Maybe even 10 is better than 20, less decision fatigue.
I made a switch from .NET to Ruby. Initially it's surely a downgrade in terms of salary and whatnot. In a long term - just about everything seems bit more sane over here. Ruby is my fav, don't mind Javascript (although I find its quirks annoying), secret crush on C (you clog it up w/ billions of calculations and it just goes: "yeah, here you go...").
What you say means it's worth learning if you can land in the right company which is quite risky.
Besides, unless a language has a strong point compared to others, it's a hard sell, like PHP is good on web, JS is known by everyone and ecosystem is huge and python is good for ML and scientific stuff but what's the selling point of ruby besides rails?
With that said I do like the language itself (but not the typing system in 3) and would like to use if there's a place for it.
I'd say it is custom webapp development (with rails) and scripting on the command line (anything bash can do, ruby can do better).
PHP is good on the web with the huge installed base of wordpress, but when it comes to custom web app development, ruby (well, rails, really) holds its own with laravel, symfony and the other MVC frameworks.
As someone with years (oh god, so many years) of experience in Laraval and Symfony, I think Rails is superior to both. They're all excellent mind you, I just think Rails is even nicer in usage.
> scripting on the command line (anything bash can do, ruby can do better)
That's true but you could say that about zsh too, and any number of other languages. Usually, the important reason that shell programming is used is the lack of need to install anything to run a script, which makes it easy and portable, and hence, reliable.
I can't write a script in Ruby and share it safe in the knowledge it will work on another system, especially if it relies on a gem or two. I'd much rather go with something that compiles and move a binary around if I'm dropping dash/bash/zsh. If I was forced to choose an interpreter to do that kind of work, perl would be much safer than Ruby, Python or Javascript.
> scripting on the command line (anything bash can do, ruby can do better)
completely agreed. on a linux system, most of my shell scripts are written in ruby at this point, simply because it is much better to work with than bash.
Whatever you want. A small selection of things I've personally written in Ruby to give an idea of breadth:
* The text editor I use day to day.
* A messaging middleware server
* A private cloud orchestrator (running ~1000 VMs across on-prem, a couple of colo's, managed servers and
* Many web application backends for various sites; e.g. e-commerce, CRM systems.
* Forecasting and simulation framework for a VC.
* Framework for statistical analysis of error rates for OCR engines, and models to attempt to reduce the error rates by applying various clustering methods (for my MSc; "dipped down" to C for kmeans a couple of other things via FFI; 95%+ of the lines of code was Ruby)
* Map-tile renderer (we rendered custom maps based on hundreds of layers of proprietary map data for customers) and the webapp to go with it (document managed linked to map data)
* FUSE filesystem doing on demand rendering and caching of the map tiles mentioned above for newly uploaded layers.
* Code to generate terraform files to deploy infrastructure.
And when I have time I play with writing game code using DragonRuby.
I can do all of this in a dozen other languages too. I've done in Ruby because Ruby is pleasant to use and feels most productive to me.
I think these 2 quotes by matz describe best ruby's philosophy.
> I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language
> Often people, especially computer engineers, focus on the machines. They think, "By doing this, the machine will run fast. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.
> I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language
That's why I wish ruby to succeed but after 20+ years of the language being around and python is taking all the scripting needs outside of web, I'm not sure what area is left for ruby.
I've been doing Ruby development for about 12 years now.
I can honestly say I've had more job offers this last year that ever before and the money is honestly pretty great. With the release of Ruby3, Rails7, and many people having JS fatigue it seems like the ruby community has had quite a bit of growth within the last year or two. (not HUGE growth like 10 years ago, but enough that it's still pretty noticeable throughout the community)
Give it a go. Ruby (and Rails) aren't going anywhere. There are far too many companies that are perfectly happy and successful with rails-based apps.
Name a tech unicorn from the last 15 years, they probably have some ruby/rails code that is foundational to the company. Many have adopted microservices and newer languages like Go, but the core Ruby codebases aren't going away any time soon.
Even outside of the rails ecosystem, ruby is a wonderful scripting language for writing small tools with. I prefer it to Python when I need something more powerful than bash/sh.
I understand job security and demand is important.
But for me the most important has always been to enjoy myself as much as possible. That's also how I can do my best every day.
If that means having a 10% lower salary or half the number of job postings I'm fine with it.
If I really needed to find a non Ruby job I'm sure I still could, there's enough demand in general.
This is similar to my take, only I never ever want to work with Ruby, since it just rubs me the wrong way. This is a throwaway comment unless you care about the following question.
What is the the fundamental difference between Ruby and Lisp enthusiasts? The easy answer is OOP vs FP, but as soon as you dive into the details the distinction becomes more difficult. A thread [vs] between Alan Kay and Rich Hickey is perhaps informative, but not illustrative.
I know that I lean towards lisp, but I cannot articulate why lisp usage fits my mental model more readily than smalltalk/ruby does. Is the gulf between Lisp- and Smalltalk-inspired languages that meaningful?
Before embarking on my programming career, I went through HtDP while I still had time to do stuff like that. So I got a bit of grounding in Scheme. Regardless, when I discovered Ruby, I jumped on it and to this day I prefer to use it over any flavor of Lisp. In the end, I really think it comes down to syntax. I much prefer a normal, imperative kind of workflow. You lose a little bit of power and flexibility over Lisp but the friendliness of having verbs, nouns and diverse semantics wins out over what feels like a monotonous landscape. As you say, the underlying language semantics are largely similar, expressivity is just very similar. So the only thing left is syntax, and when you talk about syntax, you're talking about the most aesthetic part of the language, the part that's hardest to describe and reason about.
When I was contracting full time, a _very_ large portion of my time was paid for in Rails work. Something like 90%. I market myself as a true generalist, basically a CTO-for-hire, and still the contracts I landed almost always involved Rails in some way.
That wasnt it at all. It was a lack of available talent. So many rails devs have "moved on" and theres a real supply/demand problem in the market in terms of running software vs available devs.
Unlike other languages, ruby is mainly driven by one application - Rails. As newer web FWs come, it's hard to see Rails keep up. The trends for Rails does not look good for the past 5 years [1]. I am hopeful that natalie [2] will work. If it does, it will remove the biggest downside to ruby.
I'll be honest, I'm worried too. I'm a fullstack dev, but I consider myself a decent rubyist. I've been writing it for about 10 years and have spoken at rubyconf a few times. All else being equal, I just like the language itself.
The points others make here are true, there are a ton of ruby shops, and demand for someone with a couple years of rails experience is still quite high.
But the issue is not where ruby is now, but where we see it in the long term. My predicted timeline is something like:
1. Right now, plenty of companies are still being founded on rails. The demand for ruby devs well outstrips the supply. I don't think it's the clear favorite anymore, though, even among trendy SF startups.
2. 5 years from now, far fewer companies will be being founded on ruby. It'll be rare, and mostly just when the founder happens to be a seasoned rubyist.
3. 10 years from now, the supply of rails devs will continue to trend upward, but the demand will have been trending downward for a few years and the good jobs will start to be harder to come by (relative to other tool chains)
4. 15 years from now, Ruby will still be going strong at large companies, but few or no early-stage startups will be using it. It will be seen as stagnant and enterprisy.
5. 20-30 years from now, Ruby will be kind of archaic. The demand for seasoned devs will still be there, but it'll be specialized roles to manage a legacy codebases that drives a lot of revenue and isn't worth replacing in a modern language. There will be few jobs, but also few senior rubyists so the jobs will pay well.
So, honestly, you could pick up ruby today and make a whole career out of it. If you're 25 years old, it might be getting a little tough as you approach retirement, but otherwise you'd be fine.
That said, a lot of people don't really want to work in a language that occupies stage 5. I know I don't want to be limited to only working on ancient codebases. And so I, like a lot of people, am hesitant to go all-in on ruby right now. It seems like it's a little too far down the hype curve to base the next 25 or so years of my career on.
On the other hand, it's certainly possible I'm wrong here. One thesis is that JS fatigue will drive a new wave of developers to Rails. Rails has been betting on that with a bunch of features that, theoretically, allow you to skip a lot of what you'd otherwise need JS for.
Personally, I'm unconvinced. I think the future lies in JS-native tech. Specifically Typescript and an all-in-one Rails-like tool like RedwoodJS or something similar. But then, few of us can really guess how these trends will turn out over the course of long decades. ¯\_(ツ)_/¯
You haven’t really said why you think people will suddenly stop founding companies with Ruby on Rails.
People have been saying Ruby on Rails will go no where since it launched. So far their 5 year predictions have always been wrong.
Personally, I think startups are exciting. I think Rails will still be a favourite with startups in 5 years time because it lets you build MVPs fast. It gives you sensible defaults for things that don’t matter that much but doesn’t enforce them.
The latest updates to to Ruby 3.1 and Rails 7 let you build even faster.
As you mention Ruby on Rails now has a compelling answer to writing frontend JavaScript in Hotwire and Stimulus.
It will soon have a compelling answer to mobile apps too.
Ruby is finally improving it’s static analysis, async and threading weaknesses.
I don’t mind if it’s boring, I’d still bet that Ruby on Rails will be even better for it’s niche in 5 years time.
It’s a safe bet when everything else in startup land is risky.
The problem for Ruby & Rails long term is that it's lost the battle in a lot of different areas. Education will use Python or Javascript if they want an interpreted & loosely typed languages. Numpy dominates the scientific/computational space if you don't want to use Matlab/R/Julia/etc. pyTorch is the way into Machine Learning.
Ruby is starting at a knowledge/awareness deficit and long term it's going to be hard to keep a quality edge to make up for that.
No language ever dies, so talking about Rails disappearing is nonsense.
On the other hand, the interest in it is simply declining, and consistently so (check out the Google trends post above).
> Ruby is finally improving it’s static analysis, async and threading weaknesses.
They're great things (not sure if with "static analysis" you refer to static typing), although threading will never be realistically adopted, giving the 25+ years long history of thread-unsafety (both in terms of library and culture).
I think the crucial factor is async/concurrency. With the explosion of mobile sudden growth is a bigger possibility and the microservice architetcure caters for that. Languages like Node and Go have an advantage over Ruby here. Ruby 3 has addressed the async concerns to some extent but it's unlikely that Rails will ever be based entirely on async Ruby and the MVC model doesn't lend itself to micro services so well.
Why would startups stop using it? Thats going to be the bread-and-butter for as long as I can imagine. It is one of the _most_ productive frameworks for a small/solo team, and makes way too much sense for a POC or anything CRUD oriented.
> I've barely ever written any Ruby outside of the occasional little script. And yet it's secretly my favorite language.
I'm in a similar boat, with the caveat that on linux, I use ruby as my main scripting language rather than bash, mostly because I find bash to to be a terrible language for anything remotely complex. Ruby has great integration for running shell commands, while also allowing you to write your scripts as an actual program, which is great.
For me, the language I have written almost nothing in, while it is secretly my favorite, is Elixir/Erlang.
10-year Rails dev here, there's still plenty of work to be found if you want it. (Full disclosure- I am currently not employed and working on a project not involving SWE.)
Last year Ruby Together, which primarily supported Ruby packages & infrastructure, merged into Ruby Central, which runs the main Ruby & Rails conferences as well as key Ruby infrastructure (Rubygems)
Last week I compared RubyOnRails (RoR) and Python Django.
For rapid prototyping, I think RoR has still something to say.
I like Django but I see little use (correct me, if I am wrong) from big Startups.
I was able to setup a tiny custom status page with RoR picking a module found on the web, and starting customizing the app for my own goals.
AngularJS and React are the king on the frontend in this years, so the Django/RoR approach seems a bit "old"; nerveless on RoR guides you find a way to use RoR only as an "API" Layer, so integrating it with an Angular frontend, for instance.
And with K8s and microservices, scaling is not a big issue if you code a share-nothing stack.
My take is that Django is stronger for websites: leaning slighly more towards a selfbuilt CMS. Whereas Rails is stronger for webapps. With a large overlap, and only slightly so.
But that both lack severely for complex business flows, -logic and integrations. Both are strong for CRUD cases, with accidental workflows attached to those operations. But that both lack tooling, and have the wrong architecture, to support complex, intermingled, businesslogic over time.
I personally see a lot more for Django than Rails, but then again I know Django and don't know Rails (been meaning to learn it for a long time) so that could be biasing me
Yes. Indeed.co.uk has had more Django than Rails jobs for a long time now but recently the gap has dropped from 70% to 30% so maybe Ruby 3/Rails 7/Hotwire has generated more interest.
I'm making a large pull request on rubygems.org (adding Webauthn) and the people are very helpful and friendly. I would encourage everybody to contribute, rubygems.org is just a regular rails app.
I think a major holdback for Ruby, is how tightly it is coupled to Rails.
Comments like this show how the community, unconscious, ties them together too.
I think for Ruby to truly thrive again, it must become more than 'the language rails was once written in'.
I'm a Ruby developer. I don't particularly like Rails (but don't hate or avoid it either) and I'm more and more convinced that Rails is doing Ruby more harm than good in the long run.
On the contrary, I think Rails continues to sustain the Ruby ecosystem. It's not like there aren't alternatives such as Sinatra and Grape for microservices. There are also plenty of non-Rails Ruby jobs. If you search for `ruby -rails` on Indeed.co.uk there are 1879 results so 1503 when you factor-out 10% for unrelated results.
The alternatives are certainly there. I'm using Sinatra almost exclusively when I'm not running on Rack directly.
There are really neat complete frameworks like hanami, padrino and grape (not sure how active they are, though) too.
My point was not that "its impossible" just that compared to other languages, the Rails framework is an Elephant In The Room.
Python is much larger than Pytorch, Pandas, Django or whatnot. Typescript was built for React mostly, but outgrew that rapidly. Javascript is no longer focused around on framework (like it was in jQuery times, if you consider jQuery a framework). Java-for-web often boils down to Spring, but Java is much, much more versatile than that.
With Ruby? There's chef, puppet, some sinatra, capistrano and then there is ... RAILS!
Ruby is so wonderful. For me and the type of software I write it makes developing a lot less miserable. I think there will be a serious renaissance of Ruby in the coming years as people get fatigued with the constant churn of languages and frameworks.
I have my personal grudge with the people from Ruby Central. They organise RailsConf and this year they CANCELLED DHH form the Keynote because he is not woke enough in the eyes of the new governance there...
It's a shame that they try to divide the community with this move.
Actually the same people that are advertising acceptance of others in every form somehow came into a position where they can cancel everyone that has a different opinion with regards to political topics or if they just don't like the fact you're a male white rich guy that likes fast cars and has a wife with two kids. The fact that he created Rails and pushes it forward every year? It doesn't matter to them because hey: wokey wokey wokey.
Pretty sure "start sharing the opening keynote stage with other contributors" doesn't mean "DHH cannot contribute any keynote at RailsConf" and he's blowing it out of proportion for drama's sake because he doesn't have a filter. (Not that that's historically been a problem, he's always been very outspoken and non-PC.)
Oh please. DHH was not cancelled. He was simply asked to share the keynote with other speakers.
> It's a shame that they try to divide the community with this move.
Yeah the guy who has managed to have 1/3 of his company walk out and several key rails core developers leaving after his blog post, but it is the organisers of a conference who wants to have different people doing a keynote who is dividing the community. Good logic.
> they just don't like the fact you're a male white rich guy that likes fast cars and has a wife with two kids.
Oh yes he was. In the most awkward and cowardish way.
> He was simply asked to share the keynote with other speakers.
You know that's BS but wokey-pokey will always try to reinterpret.
> Please go hang out on 4chan instead.
I don't take advise from crybabies that are easily offended by everything. You cloak under the cover of being tolerant though in fact you are only tolerant as long as the opinion is their own.
I bet you are crying now that you are not admin on this site so you can cancel every post you don't like.
I wish I wasn't afraid that demand for it would vanish over time, which makes me reluctant to invest skills in its ecosystem. It seems so small and uncommon today compared to others.