The Rise and Fall of Ruby on Rails | HamReacts

Date: 2023-11-27 | create | tech | hamreacts | ruby |

I stumbled on this great Reddit post on the Rise and Fall of Ruby on Rails. It details one dev's journey in and out of love with Ruby on Rails and all the stages of grief in between.

I found this post resonated with my own journey through different technologies, companies, and stages of life and wanted to re-share it along with some of my own thoughts in case it resonated with you as well.

The Beginning / Heyday is over

I didn't start coding really until around 2010 and even then I wasn't doing much - mostly messing around with websites in my high school computer classes. What I do remember is that it was hard - but I attribute a lot of that to me just sucking.

By 2013 I was out of highschool and studying computer science at Georgia Tech but I would still say I wasn't very good at code. In fact I'd say I didn't really start feeling decent until I started building my own projects outside of the classroom.

For the most part I was writing mostly backend code in C# at work and doing small amounts of React on the frontend, with a few static site generators like Hugo on the side.

Trying other frameworks / tech bashing

Over the years I've switched through a lot of frameworks trying to find things that made sense - similar to the author.

For Frontend:

  • WordPress
  • React
  • Raw HTML w Node
  • Hugo (static sites)
  • React with NextJS
  • SvelteKit - see the latest iteration of CloudSeed

For Backend:

  • Java <- we used this in college
  • Python
  • PHP
  • C# <- my first real SWE job
  • Typescript
  • Python / Hacklang < Instagram's wild (see: Instagram's tech stack will surprise you)
  • C# <- First iteration of CloudSeed
  • Golang
  • F# <- This me now =)

Ultimately I'd come to a similar conclusion. After trying a ton of different technologies, they all kinda suck in their own way. Some are better than others, there are always tradeoffs, and there are of course brilliant pieces of each technology.

But all in all they all kinda suck. It's hard to do stuff. That's not to say I could build a better version but it still just seems too hard.

A little bit of hope / giving it another shot

I personally have never really liked Rails and don't have any urge to use it. I will turn down companies that use Rails cause I just don't want to build in it.

But I do resonate with the idea that after looking at a bunch of options, there often isn't a best stack. Which seems weird cause it seems like it's possible to have a best stack. But currently there isn't. So you kind of have to go with the one that fits your style of working best without the downsides being too painful to use.

For this purpose, F# has been my go-to for the past few years. I absolutely love the ergonomics of the language. It gets out of my way and allows me to write precise, performant code with little ceremony.

And yet it has its own warts that make it so I wouldn't recommend it without some caveats. I still think it's the best language I've used and deserves way more looks but I'd be remiss to blanket over all its drawbacks - as I lay out in The State of F# (2023).

No other framework has really caught up / what is the future

While I can't really comment on the Ruby side of things, I do think this idea of "why is everything so bad still?" is relatively prominent in the industry. I have it a lot and I think there's a few causes:

It may not be that bad but you don't know that - Mostly I think it's actually not that bad. Most mainstream languages will have found a solution to any pressing problem. It may not be a solution you like but a solution will likely exist. In most cases what I find is that people who are hung up on this are hung up not cause there's no solution (even if there isn't) but rather because the problem they have doesn't really exist in this new paradigm. It's a problem they've likely brought over from their previous paradigm and are looking to solve it in the new one but it just doesn't actually exist.

An example of this that I frequently fall victim to is Static types vs Dynamic types. I am a HUGE proponent of static types (and is my best recommendation for choosing better programming langugaes). So when I see problems in an org / codebase using dynamic types I'm obvs like "how did you think this would work w/o problems?". But ofc there are hundreds / thousands of well-structured, reliable services out there running dynamic languages. This is a problem I'm trying to solve but it doesn't exist in their paradigm.

This may just be necessary complexity - At the end of the day your code can't really get simpler than the domain itself. There is always some level of necessary complexity involved with a given domain. I don't think we've reached this bound with most technologies yet as we still have some tech better at one thing and worse at another. I believe the bound of this will be testable by having all technologies be similarly easy across major usecases (like Prisma ORM in Javascript finally reaching semi-parity with Entity Framework ORM in dotnet).

With the rise of AI a lot of people are asking if we can simply speak to the thing instead of coding. For most things yes but at the end of the day the necessary complexity is to precisely define the business rules. The most precise syntax we've found to do that? Code.

Maybe it's you the world is waiting on - Lastly I'm always left with the idea of "why is this thing still so bad?". In the end it's due to people like me recognizing the thing is bad but not actually doing anything about it. That's how things stay bad.

For the most part, things staying bad is okay. Most "bad" things are actually not so bad so spending your energy fixing a not so bad thing is mostly a waste of time (which is why I espouse people to focus on impact to avoid such waste).

But the truth is that if everyone does that every time, it's possible nothing will ever get better. So to balance it, I think you have to be on the lookout for things where you are well-suited to take action:

  • The world needs it
  • You are interested in it / the work involved
  • You are good at doing this

If you do that, you won't waste your time and you'll be a positive influence on the world. win-win

The author went away to explore other technologies. That's good. But obvs some people stayed and really improved Rails so much so that the comments are filled with people excited for the future.

You don't have to be the hero. But you should help.


If you liked this post, you might like:

Want more like this?

The best / easiest way to support my work is by subscribing for future updates and sharing with your network.