I don't see why this is surprising. I've used Rails extensively, and Django professionally, as well a few Node (express) projects. Rails wins each time, hands down. Still, in 2021, I use Rails for my backend API layer.
My frontend has changed over the last few years, but nothing gets me going as quickly on the backend.
You say "Rails wins each time, hands down" but please educate those of us who've not used it: Why? In what ways is it better?
Sure thing! It's been around a long-time, and provides a ton of great access to gems (packages) that have existed for years + have been battle tested across the board.
For example, doing anything with users, the gem devise provides nearly everything you want out of the box: registration, confirmation, locking, remembering, tracking, recovery, and more. Adding JWT for mobile? Add devise-jwt. Want a super fast admin interface? Add ActiveAdmin (or multiple others). Access control? Pundit and CanCan. There's gems that are built for just about everything.
Additionally, the syntax is extremely easy to read and just about anyone who reads English can read Ruby.
That said, here by dragons! It can take some time to get to learn (as is the case with everything) so if someone already knows something else, then it may not make sense to learn.
It’s just so pleasurable to code in as well. Concise and makes sense really easily.
The new Hotwire stuff is also super interesting. I’d really like to see live updating server rendered stuff as the future.
Thanks for the details. It’s interesting. In a NodeJS dev.
So libraries provide backend functionality, similar to middlewares in nodejs’s express.
Are you also saying that libraries also provide admin UI interfaces?
Yes, you can get automatic UI. ActiveAdmin, for instance, can easily be added and then it's a very tiny amount of code to add / do any kind of administration.
Interesting to see that JS is so low (4%) for "startups with one (initial) primary back-end language". This matches my struggle. Each year I look for a JS equivalent of Rails/Django. I've tried so many and all have missing pieces (around auth, admin, ORM, something).
So I went with Django again for my current project and it's been working out great.
Someday, I know/hope JS will get this hole filled and move up in the rankings!
Wow Ruby is strong in this data set. I guess most of these companies were started a number of years ago when Ruby was the language of choice.
I’m curious to see what percentage of yc companies started in the past 3-4 years are using NodeJS.
Rails similarly to Django has made a lot of startups take-off early IMHO that's why Ruby is up there IMHO!
For sure, rails was huge about 10 years ago, and I think that’s when a lot of these companies started, or there abouts.
My impression though is that recently Ruby isn’t as popular a choice, I think there has been a big shift, but it doesn’t show in this data set and probably won’t for a few years.
Yeah, something in the neighborhood of 75% is nuts. But with power law distributions, Stripe and Coinbase are sitting at about 100B each and are far ahead of Airbnb, even.
I think JS has been a common choice for quite a while now. I remember when I was working at Groupon in 2013-2014, I was getting emails from quite a few recruiters at early-stage YC companies who were using Node.
That's also when the highest valuation company, Coinbase, was barely started and using Ruby.
I'm totally biased here, but I expect we'll see more breakout successes built on Elixir soon. Discord isn't in YC, but they've been crushing it and the tech stack has been a competitive advantage they've written about repeatedly.
I’ve been hearing elixir mentioned quite a bit. My impression is that node and typescript are really popular now because there’s less to learn having 1 language throughout the stack, which which makes a bug difference to small startups because it speeds up their time to market considerably.
My background was working with Node on the back-end and using JS for pretty everything from 2012 to 2015. Even then, I found Ruby + Rails a huge jump in terms of dev speen when I got into it in 2015 and Elixir + Phoenix is similarly fast but for more ambitious heavily concurrent apps with in-memory kv stores, job queues etc, built in instead of needing Redis, Sidekiq, etc.
Using JS or TS on the back end would dramatically slow my time to build anything complex, even though I've still probably spent most of my career using it.
That’s interesting - what would you say is the #1 thing in Ruby/Rails and Elixir that gives you that speed boost?
Sensible defaults and better package management.
Sensible defaults - I’m not sure what you mean, for comparison in NodeJS I hardly ever change the runtime defaults, and in express I also rarely need to change defaults, I don’t think there are many defaults because it’s quite a minimal framework. Can you give a few examples so I can understand what you mean?
Better package management - I have used Ruby a bit in the past and each time the Ruby installation got borked somehow, and when I tried to fix it, I found it really confusing. Seemed like there were loads of places where packages (gens?) lived, it wasn’t clear to me how to find, download, install, upgrade them. When I moved to NodeJS that felt infinitely easier to me, use npm and they all live in node_modules folder. Are Ruby packages equivalent to NodeJS modules (as found on nom?) or some higher level construct like an application plugin?
Weird- there's only really one place for Gems in Ruby. Rubygems.org. And you might sideload from Github on occasion. Not sure how / why you thought there were "loads of places".
And it's super easy to have different versions of Ruby installed / working with rvm or rbenv, too.
For package management, you should really check out Yarn. They throw everything into ZIP files and then dynamically load them (pnp.js) at runtime so there's no need to npm install after cloning a repo. And there's no concern over multiple versions of the same dependency installed, etc.
Yeah some of the package optimisations (yarn, pnpm etc) are pretty cool.
Generally speaking though, I felt the package system in NodeJS was awesome.
Having said that, it’s not all plain sailing, that was the case for the past 10 years. There is one major hurdle on the horizon: ES Modules. It isn’t affecting most people yet.
It’s great that the browser now has its own module system, that EVERYONE can use, but it’s made NodeJS much more complicated, and the NodeJS devs have had great difficulty in supporting it.
As far as I am aware ES modules are currently supported in latest versions of node, but from what I’ve read and heard, the implementation is a bit hacky and the migration path is not so clear.
Some help and understanding from the wider community would be appreciated.
For Ruby, it's how consistent the language is. Everything is an object, including string literals and classes.
For Rails, it's convention over configuration. Every project is structured roughly the same way and there is a "golden path" for achieving any common task, instead of 17 competing solutions you'd see in the Node/Express world. Honorable mention to Active Record.
For Elixir, it's the Erlang VM. Nothing I've ever worked with before is like it and it makes writing distributed, concurrent, fault-tolerant apps routine.
For Phoenix it's a pre-paved path created for you, leveraging what the Erlang VM and Elixir have to offer. You get the benefits of macros, DSLs, channels and process supervision but you don't have to design or even understand those topics to benefit and be productive.
I found that if I just started to build something I usually found a way to do it, and rarely bumped into the inconsistent parts.
Perhaps not string literals but most other things, even classes are objects underneath.
Functions as objects was a bit weird at first, but I grew to live the fact that the basic unit of was a function rather than a class. I live that you can just take a function and add properties to it because it’s an object.
You know what, I just saw your other thread and I wouldn't worry about any of this now.
If you had $$$ in the bank and wanted to build a startup over the next year, I'd say absolutely spend the first two months learning RoR and building simple stuff with it. It's fantastic for entrepreneurs.
But right now you need a job. Now is the time to triple down on the most employable thing you can that fits your existing skills.
I saw the reddit history and can see how you had a rough go of it. That's tough place to make something happen quickly. Ditto with the newsletters. If you're in a place of need it's super hard to focus enough on what the reader wants instead how to earn ASAP. I've been there and understand, believe me!
I can't quite tell what your niche is since your site has a grab bag of things, but I'd just ignore IH and hit the job boards and supplement with Codementor, etc until you find a good fit. After you've got a job, then it's easier to do longer-term learning and entrepreneurial endeavors. Best of luck!
Thanks for the kind words.
Niche: NodeJS backend development, example projects in my portfolio.
You know believe it or not, sometimes the only thing the world lets you do is answer an IH thread.
For someone who hasnt used Ruby for more than a hello world - I heard the same exact thing as @alchemist said, from friends who are Ruby devs
If this is true it would be interesting to know why 🤔
Speed of development?
New tech at the time?
Almost certainly the developer ergonomics / speed of development for a small team. Ruby's been around since the 90s, so it wasn't exactly new, though it didn't get big in web dev until Rails.
Reading HN today, I realized that @charlieinthe6's's report on the valuation of YC companies by server-side tech choices last September report was already out of date due to Stripe and Coinbase's huge jumps in valuation.
I did a quick bit of strategic planning and wrote a 5-tweet thread. With only 538 followers, it went viral. Over 100 retweets on one of the them and nearly 200k impressions.
Clearly this topic struck a chord!
Also, if anyone has access to a fully updated data set of the valuations, I'd love to see it
I'd file this under "useless information". For a start, you can't use this to know which language is more likely to help you scale your startup since it doesn't show us which languages the mediocre/failed startups used. Said another way, perhaps all the worst performing startups used Rails as well.
Also, the info lags by 5-10 years. Tech is currently moving quickly and what may have been the best choice in 2010 for backend may not be as appealing now.