However, I see some attractive features in Ruby 3, do you think that's enough to get a comeback?
My main concern is jobs availability, as an employer I find it harder and harder to find good RoR developers and they become super expensive. As a startup you're start to think if you made a big mistake choosing Ruby , even if it's easier to build something, being so hard to find affordable developers offsets every advantage you had.
The ecosystem changed a lot, as it always did. Many youngsters learn that single language works everywhere, learn that server and frontend may share their code. If they end up using Rails they likely spend more time in their react files than anywhere else.
The reason why I don't find nice RoR jobs anymore is because most of them are looking for a react/Vue developer with rails skills and not the other way around.
Also I am not sure why you think there should be cheaper Devs. Cheap Devs means unskilled labor, which means a less optimal code base. The situations I built RoR apps for always had a high testing, optimization, quality standard and liquid development process, essentially using all the strengths rails has to offer. why they choose rails in the first place.
I honestly think that a good and modern Ruby team would have somebody like you, somebody like me and two people that want to switch to Ruby because they like the language better.
When it comes to the react/vue dev with some rails skills. Yes I get you, but a lot of those jobs are for people like me. I’ve been doing Ruby (and Rails) about 5 to 6 years of the last 10 years and JavaScript every step of the way for 13 years now (frontend and backend). I fit the full stack role but I honestly don’t believe that you need more than one of us in a Rails team. I would rather split the rest up between ruby/rails devs and javascript/react/vue devs.
I think that is also the general idea. You only need one or two expensive rails guys and some other people who don't find MVC weird, willing to learn, to setup a proper efficient team for any project.
The performance problems were 99% invalid database usage, poor or overly aggressive pre-emptive indexing, or bad active record usage.
Developers lacked education in basic database design, and given rails made it do easy, yes that resulted in a lot of slow code and overloaded RDS instances.
But it was entirely possible to build highly scaling rails apps back in 2012. When I ran Wanelo's engineering team we squeezed 300K+ rpm's on a relatively small cloud foot print. It has since been migrated to Heroku.
You can follow along Shopify's progress with the JIT https://speed.yjit.org/. Seems promising.
I had the fortune to be part of new startups that chose RoR for all the good reasons, but also because at the time it was trendy.
Nowadays I keep finding RoR jobs but I see more and more legacy applications that need to be maintained in order to move to a new technology.
I've had some discussions with founders and they always mention the same problem: there are not a lot of Ruby developers or they are expensive. So they choose to go with another technology, aka Javascript.
I like the language but I like others more, but Ruby brings bread to my table and I'm sure it will keep providing as long as Ruby engineers become founders or companies keep mantaining legacy projects built with the tecnology.
This is exactly the situation with a number of long-standing, formerly popular languages. ColdFusion and PHP jump to mind. They're fine languages and people love them, but if no one's paying, why bother sticking to them? Loving a programming language doesn't pay the bills.
"I'm sure it will keep providing as long as Ruby engineers become founders or companies keep maintaining legacy projects built with the technology."
My previous employer was maintaining over 30 acquired company's worth of legacy code bases. They replaced common functionality via new microservices and would sometimes replace an entire product via a new acquisition. It's sometimes a better ROI to replace instead of maintaining or building.
This is also not new. I've replaced a number of "legacy" apps because, basically, it was too hard to find devs for the current language. This was happening with perl in the early 2000s, PHP in the 2010s, Ruby now. Java has gone through surges and waning of support over the years. When I was a fresh devs, the old timers told me about this thing called serverside javascript.
This kind of thing is inevitable. It is something that businesses just need to plan for, because it can happen with established languages (PHP) just as easily as it can for trendy ones. And you can't predict future generation's attitudes towards tech.
Probably not anytime soon, depending on your definition of "comeback", though ruby is still chugging along just fine IMO. There are more IPO'd ruby-based companies out there now than there ever have been before. (edit: and many non-ipo successful exits where ruby usage is maintained)
> However, I see some attractive features in Ruby 3, do you think that's enough to get a comeback?
No, just a few nice additions to the language won't create any pop in popularity in any language.
> My main concern is jobs availability, as an employer I find it harder and harder to find good RoR developers and they become super expensive.
This is just a problem with tech jobs in general. I've had the same problem hiring JS devs, and they're the most plentiful. I also had the same problem 10 years ago staffing up RoR teams. Its not a new problem. It largely just depends on your definition of "good".
I don't know, but I certainly hope so. I started building web apps in Rails in 2007 and rode the wave till 2020, when I joined a company that ran on TypeScript, Go, and Haskell. I've since left said company.
There are several things that Rails got exceptionally "right":
- code generation that included test templates
- active record was much simpler than Hibernate
- a super dense and all powerful meta-programming enabled language behind the scenes (ruby is arguably the most compact and human readable language out there).
- rubygems was always robust, but is now mostly complete packaging platform.
But most importantly IMHO people back in 2007 started launching super hot looking Ajaxy apps on Rails, that turned up the heat and drew attention to Rails. There was a new coolness about how Basecamp worked, and early Twitter. It was all self updating and magical. And that's how the web app development should be.
Today, nodejs is no match in productivity or testing practices, TypeScript is a huge mess, and the cost is going to surface in the coming years as todays apps shift into maintenance and less development.
Once we have enough apps in maintenance mode in all four: ruby, Django, Go, and Larvel we'll see who wins the long term game.
Devs always want to work on the new shiny tech whether or not it's the best choice. This is because few do the exercise of identifying what they are optimizing for: dev speed, app reliability, or massive scale.
I am actually going back to the Rails/Ruby ecosystem, and will report here when I find a good spot.
How can we make Ruby come back? By introducing it into the stacks of companies as CLI tools, or mini services. I maintain ruby rules for Bazel build system, for instance, and my hope is that it will help support Ruby as a first class citizen within corp monorepos.
However, I think we are turning the corner on javascript-everywhere movement and that html-driven development is poised to make a big comeback:
With the adoption of html-driven tools like hotwire, unpoly or my own project, htmx, the choice of back-end becomes more open ended because any language can produce server side HTML, and usually pretty well.
My hope is that, with this development, platforms like RoR, php and even haskell[1] will gain new life in web development.
Seriously. It is perfect. It gives you C++ like speed, memory safe strings, and near instant compilation
Mind you, this is useless for web dev and a lot of other things, but that's still what has tipped the scales for many people.
NumPy and SciPy are the main workhorses of numerical programming with Python, and provide bindings to extremely efficient libraries (mainly a BLAS and LAPACK implementation), that utilizes SIMD parallelism, adaptive thread parallelism based on workload and cache optimal algorithms to minimise communication between the CPU and RAM.
this gives Python multidimensional arrays that have the flexibility of Python types and speed we can only dream of obtaining if we wrote the low-level code ourselves.
It's still here. You decided to switch stacks which is fine, I haven't and I'm doing fine as well. I'm not expecting Ruby jobs to die out in the coming 20 years. There's less of them than there used to be 5 years ago but there are also less developers per job. But yes, Ruby isn't the #1 choice for startups tech anymore. I'm not so sure Node will still be the top choice 5-10 years from now. Or Go. The hype cycle will go on and on. It's only Java that I feel really confident in saying it won't loss any market share, and maybe C.
From my perspective Ruby + Rails is really booming. Most of our clients (startups) want to use RoR due to it's development speed.
Also salaries are higher than ever.
I personally am stunned when I compare the developments in Rails to the developments I see in the node.js community. I loved ActiveJobs and am missing something along that line in node.js and that is not the only example. Since I am a full stack guy I’m also looking forward to what is coming in Rails 7 (making JavaScript simple(r) again) and I’m hopping that Rails will find a way to leverage Ractors in while Ruby continues working on its JIT.
People like us would like to go back to developing in Ruby (and Rails) but we do come with something along the line of 10 years experience in the Industry so no, we are not going to be the cheapest devs out there. And in my case you are going to have about 5 years of Ruby experience and a Year since the last time where I touched Ruby on the Job.
If you can go for multiple Ruby devs I would go with one senior dev that was able to stick around Ruby during the last few years, one returner like me or my friend that has gathered experience outside of Ruby and fill the rest with devs that have one or two years experience any other language that WANT to do Ruby. Nice combination of experience, perspective with the first two (even tough they are going to be more expensive) and some eagerness and enthusiasm for Ruby on a good price point.
Let me be honest. The last years have not been good to the Ruby (and Rails) community. A lot of us left because of golang, node.js, rust, elixir or whatever and so did companies. Ruby had problems and some still exist, especially when it comes to scalability. Problems that most companies will never have but that still hurt us. But the damage has been done. But what we have now is, I think, a good situation for a type of rebirth. A lot of us “switchers” are more then willing to come back but there also needs to be a willingness to not just hire us but also hire more junior devs that want to switch to Ruby and let your senior devs show them the ropes. If enough companies do that I think the Ruby (and Rails) job marked will be back in order in a year or two.
Now when it comes to Python and Django I’m not so sure. I’ve read a couple of articles where some of the Django users where annoyed that in their opinion there isn’t enough development/new stuff in the Django.
Personally I think the biggest problem is that none of the MVC frameworks in other languages are all that bad and Rails has the problem that it is not better enough for you to have an incentive to learn the language JUST for Rails anymore.
I personally currently see the type of progress I want to see in a backend framework in Rails and in Phoenix (elixir) and I don’t think the changes that are coming are big enough to entice people away from another language just for the framework.
But for me learning Ruby was unexpectedly fun. I come from a Python background, but back then there weren't any Python or Django jobs where I lived at so I did PHP instead. I also learned quickly that JavaScript would be huge so I deep dived into that. When I got fed up with PHP (T_PAAMAYIM_NEKUDOTAYIM) I did find a job with Ruby on Rails and Ruby clicked hard, in a way it never had before.
So yea, I don’t think we will win anything based on the Rails framework, but Ruby is fun and the community is a bit weird and that is majorly attractive, especially after you’ve been working as programmer for a couple of years and it becomes important again to Squeeze all the fun out of the job you can.
I think Rails was a victim of its own success. It’s always been great for getting projects started quickly, but now many of the early crop of “agile” startups have grown up and need solutions to large project issues that Rails doesn’t have great answers for.
Rails has nothing comparable to React or the performance of Go. Laravel and Python are just alternatives to Rails, which suffers from the same issues, although Python has a lot of C/C++/Fortran bindings for some heavy stuff.
Not in terms of quality or features (many have had significant improvements obviously) but in terms of adoption and getting back to the spot of "this is one of the go-to languages to do x".
Back in the RoR days, python had a very second class status in the web community. There were some famous web 2.0 companies that are using django. All the limelight was on Rails.
These days, python is probably the second most popular langauge for after JavaScript in number of repos and maybe the go-to language for first time Devs.
(Thanks to Zed Shaw)
And there are significantly more people doing web app dev with Python now than with Ruby
Django 1.2 was the killer app that made it so much easier to sell to teams. But by then, I think RoR was more fashionable.
I’m not interested in getting back to the overhyped level of popularity. That kept me away from Ruby on Rails for a while. But getting to a “mature” point where we can admin, no we are not dying and yes we are one of the better solutions for web development, would be nice. Also the job market adjust to it would be nice in that it gets used to having people switch to Ruby from other languages again.
The next hype bubble that hits the Ruby community is probably going to be something not related to web development. Look at Python and Machine Learning.
We (web dev, UI dev, game dev) need simple, fast stuff, something Go like but better. Maybe Swift? (haven't used Swift). Maybe V will deliver in the end.
https://www.notonlycode.org/content/images/2020/09/Screensho...
I don't. I don't think anyone else should either. TIOBE counts number of hits returned by a weighted selection of search engines when you search for "<language> programming" - it's a useless metric.
It seems like Rails tried to do exactly what MSFT was doing with ASP.net - Give an excellent set of defaults you don't have to think about.
The problem with that (and it's the same problem in Rails) is that "excellent defaults" change rapidly - much more rapidly than most production code-bases.
So you end up with outdated defaults, and documentation fragments everywhere (this is actually FAR worse in Rails, because ruby hands you a million and a half ways to accomplish most tasks).
The end result is a framework with a ton of baggage, poor documentation, and riddled with "That way is not proper anymore" style footguns.
It's quick to knock stuff out with, but the second your team is bigger than 10 devs - Rails is a fucking ugly beast.
Honestly - ASP.net was crap, and I prefer it to modern rails on large teams.
---
So no - I personally don't see Ruby making a big comeback anytime soon, since its poster child - Rails - kinda sucks these days (and no disrespect to the authors, I think this problem is unavoidable in frameworks that give opinionated defaults - 1 set of opinionated defaults is awesome, 6 different sets of opinionated defaults that are no longer compatible is fugly, but if you don't update your opinionated defaults the framework rots anyways.)
That said - I actually quite like Ruby as a scripting language. I just really wish it hadn't become so tightly bound to Rails.
Just like I quite enjoy C# compared to java, but I still don't want to write ASP.net applications.
* No built-in type hinting (you have to reach for Sorbet which is a lot more than just hinting) * developer ecosystem seems to struggle to get gravity around anything that's not web-related.
Python has so much diversity of packages. You need simplex noise? Package. You need a terminal ui library? Yep. You want to use wxwidgets or qt? Yep and yep. You want to do computer vision? yep.
Ruby can check some of those boxes, to be fair, but ime the ruby solution tends to be less-used, lower-quality, and more likely to just be thin bindings around the C APIs (if relevant) than a more holistic language-native implementation.
I'm a little sad because I honestly like Ruby more than python just from a language perspective. RubyGems alone are better than the trillion packaging solutions that python has churned out. I like ruby's preference for method chaining vs python's list/set/dict comprehensions (just look at what a "2-layer" list comprehension looks like :( )
Also, for the type-hinting thing, maybe it's just me, but the only reason I don't consider python to be a trap is because it added type hinting as a first-class thing. Eventually, as a project grows, you just need types sometimes. I don't like that Sorbet is a) third-party and b) pretty heavy-weight (does a lot more than just type hinting) and I also think it's just not as pretty (it's not part of the grammar so it has to be tacked on, like if python type hinting had to be done via decorators.
I know ruby recently adopted some kind of native type hinting thing, but it's in a separate file, right? Like adding typescript hints onto js code? I don't like that either, it's just going to rot. I haven't been following this closely though, so maybe I'll be pleasantly surprised there.
But everything else eventually caught up and surpassed the Ruby/Rails ecosystem on the requirements->deployment pipeline, and did a lot of other things better.
I have a real soft spot for Ruby but I won't be back.
Ad. 1. To have more Ruby or Rails developers on the job market, you need to train them. Ruby is not a good language to start with because it offers many ways to solve a given problem. Juniors prefer to hear "do it like this" and not "you can do it like this or one way or another". The responsibility lies with the companies, they should patiently train and encourage developers in Ruby because of its advantages. The Python Foundation does a good job because they always say that Python has the best web framework, has the best X and Y (although that's not true). But it works for juniors. In contrary, Rails is a good framework for beginners, as it allows you to hide a programmer's shortcomings through built-in "good practices". It allows you to quickly create a relatively safe advanced product, at the same time giving developers some time to make up for gaps in their skills.
Ad. 2. The developers you knew 10 years ago are now expensive because they gained a lot of experience and are in a different position than they were 10 years ago. New developers are not "good" yet, they have to gather this experience. It has nothing to do with language. Hire less good RoR developers in your startup and let them grow under the watchful eye of 1-2 experienced (expensive) RoR leaders.
You can start here with Rails. I know that React technically "replaced" it, at least in popularity, but React is a frontend framework. Rails has a notion of views, and React probably replaced that, but I have no idea what happened to the model and controller. Express is very popular, but it's very thin compared to Rails. There doesn't seem to be any dominant database library. Some people are probably using Firebase, Hasura or some other "managed backend". But there is no "Rails but in JS". Maybe web development itself changed? Maybe it's harder to start out with Rails than it was a decade ago, so less people do it? Maybe the deployment/scaling experience wasn't good? Maybe Rails doesn't scale with the number of developers (microservices and things like that) so even if lots of products are still made with it, bigger products employs way more developers so we hear more about what they use?
The other thing that seemed very popular in Ruby was scripts and dev tools. I think Go ate a big part of the dev tools market, especially the ones you distribute as a CLI. For scripts, I have no idea. Python has always been popular here. Maybe with the rise of JS, people are writing their scripts in JS too? Maybe bash made a return?
I personally missed the Rails wave, and I feel like people are still trying to get back the productivity of good backend MVC frameworks. The most common advice given here to someone starting a web project that doesn't know what to use seems to be "use a popular MVC framework in a language that you know that generates HTML server-side". So there is still a need for stuff like Rails. The question now would be, why Rails instead of any other? From what I've heard, Django, Laravel, Spring, ASP.NET all offer a similar experience.
A lot of the people that I knew from that time had already switched to Sinatra for their non work related projects.
As simple as Rails was compared to what came before it (J2EE), it was still complex in ways and people felt Sinatra was simpler.
When node.js started gaining traction and people realised that they could write front-end and back-end both in the same language, people went in troves to node.js. All popular Ruby projects like passport and Passenger had a node.js version. Some others had a node equivalent quickly put together.
Some rubyists that I knew also took the route of writing everything in (a very Ruby like language called) coffeescript and compiled it to js before running it on node although this didn't last long.
For me as a kid, Rails taught me a lot of things: MVC, db migrations,relationships, HTTP and REST for which I'm grateful.
But I don't see myself using Rails again because we have tooling now that makes me more productive or atleast feel that way.
I think that's debatable. All these new & hyped up languages may give you cheaper developers, but you won't get the ecosystem and functionality Rails provides out of the box.
JS and derivatives (TypeScript, etc) is very popular nowadays and yet on the backend something that's provided out of the box with a monolithic framework like Rails (or Django, or Laravel) will take time to implement manually (often in a bad way).
In the end, you may "save" on salaries by going with another language, but then you'll end up spending twice as much time delivering functionality which would completely offset any savings.
Running on rails not only increases Dev expense but also the operational expense since you would need more servers to handle a similar load. (Correct me if this has changed with Ruby 3)
Thinking out loud here, say you can only serve 200rqs with Rails but 2000rqs in some other framework (yes not fair comparison, endpoints matter etc etc). That means you need 10x the servers but take a step back a sec. 200rqs is 720k a hour or 17,280,00 a day or 518,400,000 requests a month. (The scale for that is pretty high already). I'm pretty sure the 10x increase you need in servers will cost less than 1 extra employee at say $70k a year.
Companies who choose Ruby/Rails I believe do so because they want fast iterations, agile development, and small dev teams. I think this also applies to Python/Django and PHP/Laravel as well.
Performance will become less of an issue with all the work Shopify+Github are doing (the new JIT etc). So the "Ruby is slow" argument will become weaker; I expect the gap between JS and Ruby performance wise to narrow in the coming 5 years.
But we need to be realistic - Ruby was THE tech for startups for around 10 years (from 2005 - 2015). That's a very priviledged spot to be in. It's not likely to ever happen again. But it can definitely (and it actually is I think) be in the top 10 web technologies.
I think many Ruby shops go out of their way to be clever. Many apps can "color within the lines". By doing so, you can hire mid-level devs in any language and tool them up on Ruby. Way too many apps have been built in a manner where the employer has no choice to hire senior Ruby devs.
I have yet to find a decent book that isn't beginner (here's how to create a rails controller or let's define a class) or super advanced (so you wanna meta-program, hold my beer) on the topic of Ruby. So definitely getting devs up to speed on a Rails project that got clever is an uphill battle unless they are senior.
1. On the ease to test front, most new languages have built-in easy testing tools. `go test` is so darn easy. These new languages offer less ceremonial type system as well.
2. Most of the new languages are an order of magnitude faster.
3. Newer frameworks have more interesting things to offer. For example, Phoenix on Elixir.
Pretty much every ecosystem has a package manager and ecosystem, I don't think Ruby is anything unique here.
You have described what I have been crying about since 2016.
Rails is definitely in a negative feedback loop. And I am not even sure if Shopify and Github are enough to pull it out.
And there are lots of reddit threads about Junior Ruby Developers unable to find a job. As nearly all jobs are looking for Senior Dev.
The only way to solve a problem is to accept it is a problem. And right now as you said, most still think the ecosystem is doing fine.
This is true for basically every tech stack though. The pandemic gave a lot of people a chance to change careers, so there's a lot of fresh blood looking for work right now across the board, and not enough space to hire and then mentor them.
Compared to what? Good devs are expensive. You think A-level Python devs will be cheap?
Ruby used to dominate this space; in fact, I think the whole online code academy surge was lead by rails, although someone more in the know might point out I'm wrong. But market forces have changed the situation and favour nodeJS and python. For some reasons. Both are easy to setup, easy to learn, interpreted, with an integrated REPL setup, integrated packaged management. Just like Ruby. Where they differ? They dominate a valuable niche.
* JS owns browsers, and that strength creates other potential value points, starting from "what if I can use the same code in server and client" all the way to "what if I can use the same code for web and native". * python owns ML, probably the most on-demand niche in the market now. It has the most complete ecosystem of ML libraries even your mother can use (R was competing until 3 years ago, I don't think it's close at this point). This opens up a lot of possibilities, such as "what if I can deploy my ML model along with my web service", or "what if I can use the ORM layer that I use for the web directly to feed data directly to my data analytics toolchain".
These questions make CTOs and Eng Managers everywhere very excited, as the thing they hate the most is "technology drift", i.e. betting on tech which eventually loses community mindshare and inevitably rots to the point it gets rewritten in PHP.
I love Ruby, but it doesn't own a niche. It's particularly strong in the web application space, mostly due to Rails, but so is PHP, so is Java, .Net, and probably even VisualBasic. It's not backed by any megacorp, so it can't even claim that fake sense of validation entitlement Google's go has.
Developers love it, and it has a lot of value and success stories going for it, specially considering how 80% of Y-Combinator most valuable companies are built on it. So it'll never disappear, and someone's always going to bet on it. But it'll never be 2011 again, so expectations of cheap labour have to be aligned with that.
Choose ruby because you like ruby. Choose ruby because you feel a creative release with it. Choose ruby because it's not just about delivering customer value, but having fun cranking out features that look fun, and your users might think so too. Github wasn't the first CVS server with a UI, but it became Open Source's social network because they used ruby.
And goddamn it, make more ruby libraries. Eat some of those niches. Make some ruby ML. Compile ruby to webassembly. Add value to ruby. If you add it, they will come.
It's not that devs are necessary expensive, it's that senior devs are. The problem being that "easy" languages can often lead to complex balls of mud if care is not taken, and the only way forward is to hire senior devs.
Sadly a lot of Ruby code written in 2010ish is also considered "Legacy" code and even people who previously did Ruby don't want to do it, not because of any destestment of the language. One company even specifically asked me if I would be "okay" with writing Ruby code from time to time.
You've shown this must be false, but it seems that only you said it.