The language: Tech companies are becoming more aware of the dangers posed by maintaining and updating large codebases written in an untyped language. I know there's a lot of work still being done in Rubyland on this problem but it feels like the horse left the barn long ago. A lot of Rubyists seem aesthetically opposed to types, including influential language stewards. Sorbet is arguably the Typescript of Rubyland, but it doesn't feel like it's taking off to nearly the same degree. (My theory is that the expressiveness required to support a language as flexible as Ruby results in poor developer ergonomics in terms of the necessary type annotations.)
The ecosystem: Rails is still king, for better and for worse. Back when Rails was in its prime, there weren't as many CRUD web use cases that required marshalling lots of async i/o. Now it's a pretty ubiquitous requirement. You need to fetch data from upstream A and upstream B, then combine them to send back to the client. With Rails, the de facto way to do this is to make these requests serially, which isn't very scalable. Hell, even a single call to a slow remote host can easily end up saturating all of your web workers. Like the types issue, there's a lot of work happening trying to make it easier to perform non-blocking i/o in Ruby/Rails, but it seems like too little too late.
My tiny company is torn between throwing out our ruby code and trying to hire more ruby developers. Our senior ruby guy is leaving, and the one senior candidate we had accepted, then later rejected, our offer. Of the other interviews we have had, candidates were asking for too much (i.e. over $200k base salary) and often barely qualified as a senior, or were simply too inexperienced to replace the person who was leaving.
I'm about one more round of interviews from throwing in the towel and doing a hulkamania hackathon in a new language. The existing code really isn't great either (deprecated gems, lots of accidental complexity, etc) so it is almost tempting to think it would work.
Unfortunately, it's a pretty complex system, and the changes we have slated don't really leave room for updating one endpoint at a time. Even if it were simpler, I don't recall anyone ever contemplating having two ORMs running against the same database without a shudder of horror.
Even having worked for west coast companies, I've never gotten $200k base salary- adjusted for my region, most pay in the $150-175 range, and I've got quite a few years under my belt.
Of course, I don't believe that's the case, but rather that there is a shortage based on it being a relatively unpopular technology compared to java / .net / node / etc.
What about hiring experienced devs and simply giving them an intro Ruby + Rails course? (which could be as simple as say, giving them 2-3 weeks to go through some self-directed learning)
I think companies often do this badly: they hire non-Ruby devs and expect them to learn by osmosis, which usually results devs simply writing a bunch of bad code - for example, Rails code that fights against core Rails assumptions and looks like Java/PHP/etc.
However, I also think it's pretty easy to get it right. If the company and developer have a good attitude about getting the dev immersed in Ruby/Rails a bit before turning them loose on the main codebase. I'm implementing a curriculum like that now in my current role.
Will you be making this public or internal it will remain?
Part 1 - We've gone through "The Well-Grounded Rubyist" and listed most chapters as "learn" and some as "skim". The "skim" chapters are things that are not generally useful for Rails development e.g. explicit threading, file I/O, etc. The idea is that the student should simply know those things are there in case they're needed later.
Part 2 - Same thing with the Rails guide from "Learn Enough To Be Dangerous" from Michael Hartl. We like this option because there's the book and then there are screencasts. So students can pick one or the other to suit their learning style.
Part 3 - Small standalone project of the student's choosing, we have a few suggestions if they don't have any. Something they can finish in a few days.
It is mildly "innovative" in the sense that, for whatever reason, most companies don't seem to do this. Companies I've worked at in the past have had generous onboarding periods, and have given devs lists of learning resources, but generally expect the devs to learn as they go. Which is fundamentally sort of broken, because "learning as they go" typically involves "learning by osmosis from an existing fragile production app that has a lot of tech debt."
I have been working with ruby for 10 years, kind of / sort of thinking of jumping ship to a new company / job soon.
Ruby is not untyped. It's dynamically typed.
FORTH is untyped.
So yes you are correct, but the OP is also very aware it is dynamically typed.
No offence but if someone can't get basic terms right, then maybe they should speak with a little less confidence.
edit: or writing faster than I was thinking? Potato potato.
This (insinuation that dynamic typing is inherently worse to maintain) actually isn't true. There's no evidence proving this. Its one of those things that slowly became common sense and goes unquestioned.
There was a Github repo with scientific publications demonstrating the above. I think it made it to HN a while ago. Wish I could find it now.
If you are learning something new or just graduating, you're way more likely to learn rust/python/javascript as those languages offer something unique (low level speed/machine learning/browser stuff).
Rails used to be miles ahead of the competition, but the competition has largely caught up. Rails is still probably the best choice(in my opinion at least) for building a feature-rich webapp backend quickly unless you've got some crazy unrealistic performance requirements(spoiler: most engineers love to pretend they do, but they probably don't)
But these days there are frameworks everywhere so you can write your backend in whatever you're most comfortable with.
it should be that RoR devs get increasing rates as they become rarer but its not, demand is also dwindling as enterprises feel uneasy about banking the future on a smaller talent pool.
But Rust has little to do with what Ruby/Rails is used for, and Python is mostly used in other fields also (it's not like Django is taking over the world). Every time I look at the various JS frameworks it seems like just a huge lift to get something going versus Rails, for typical SME type business problems. Most problems don't really seem to require SPA.
Things like Elixir/Phoenix look very interesting and promising, but their ecosystem is (for now) much smaller. And just the size of the Elixir community right now suggests that it's not like all the RoR developers went to Elixir.
So what is the thing that is so much more attractive than Rails, to solve your everyday business logic issues for small to medium scale problems?
Does all engineers and companies think they are solving Google-scale problems or something?
I feel like I'm missing something obvious.
I don't need an ORM, I don't need ActiveRecord, and I don't need MVC.
I want the framework to be out of my way, which is what FastAPI and ExpressJS provide.
Ruby itself isn't attractive, as a scripting/dynamic language it's worse than Python, therefore no point in using it.
Keep in mind, I don't like Python either, that's why you can trust my opinion since I don't have bias for either or.