"Why did you learn Ruby on Rails in 2022?"
I heard this while interviewing at a shop trying to get into the industry. The interviewing engineer kind of chuckled while asking me. I suppose it was a fair question, even if the delivery was not great.
In 2022 (and maybe beyond), node.js is the hot hot along with a whole slew of frontend Javascript frameworks all competing for installs. React and Next.js, Svelte and SvelteKit, vue and Nuxt.js and Angular... all of these are in the news right now, but they're all moving towards how Rails wants you to do things anyway (hydration and server-side rendering are what Rails is particularly good at, especially with the addition of Turbo and Stimulus).
So, why did I choose to learn Ruby on Rails?
- Rails is very focused on what it does well. It's opinionated and expects you to do things a certain way. When you're learning an entirely new skill, this kind of structured approach gives you something to grab on to to build your knowledge behind the why of things. At first, you'll be confused (I know I was), but once you get a level of comfort it's easy to dig into the why.
- Node packages have documentation that is very hit or miss. Some packages have excellent documentation, while others are tearse or missing. For someone new to the domain, it can be a challenge. In my experience with Ruby and Rails, documentation was typically much stronger. It makes navigating the new a little less painful.
- A lot of educational content out there for JS/Node tends to focus on the how and less the why. This is fine and dandy for building applications via assigned Jira tickets, but I found that the resources I consumed while learning Ruby on Rails really focused on both the how and the why. With the foundational knowledge of why Rails does something the way it does, you can gain insights into how other frameworks want you to do something. This provides a lot of value because it is directly building your problem solving skills. Even if I don't end up getting a job as a Rails developer, I have the fundamentals down that enable me to pick up the core "how and why" of a framework, regardless of the language: Go, TypeScript or C#.
- Finding a job is going to be tough no matter what's in your toolbox, so you might as well learn why behind the how. There are a lot of arguments about "well there are many more JS/Node jobs than Rails jobs" and this is objectively true, but there are also that many more people learning JS/Node, so in the end, the level of compete required may be the same.
- Ruby is an awesome language, and I love writing it. It's fun. Because it's fun, I could foresee myself writing Ruby for 20-30 years.
In then end, Ruby and Rails provided me with a strong foundation to go and pick up topics in computer science, whether it's in another language or another framework.