Why I Chose Ruby & Ruby on Rails

Disclaimer: I’m talking about coding and shit here so if you’re not a techie, you might not understand everything. I still recommend you reading this because I think my thought process is useful for other things

The moment I chose to pursue app development was very strange for me. It was something that isn’t supposed to be new to me -given my soft eng background- but somehow felt really knew.

As if I didn’t know what to do or where to start. It was a pretty funny moment now that I reflect back upon it.

It was like “cool, I want to pursue app development and my current knowledge of coding doesn’t serve me at all because I need to learn the newest frontend framework and the most used backend languages and DSLs and backend frameworks and databases and software tools like docker”. I was feeling overwhelmed by the sheer amount of stuff I had to learn in order to become a “good” coder.

I decided that I had to start somewhere and since I worked a bit with VueJS and React, I told myself that my frontend knowledge was OK for now. Whereas my Java-only backend knowledge… needed a bit of updating.

Choosing Ruby

Simply by working in a software company, I was able to stay up-to-date with the latest trends juuuust enough to know that I mainly had 3 choices for my new backend language: Python, Ruby or Javascript (but really node). I guess you might consider Java to be still relevant in some ways, but I already knew Java and it just seemed to be widely use in enterprise applications… Oh and I was also never interested in any of the C-based languages after my nightmare attempt of creating a file system in C back when I was at McGill. I’m still traumatized from trying to debug that assignment… shutters

To be honest though… I never quite understood what Node.js was at the time I was deciding between my new language. All I knew was that javascript was mostly used in the frontend and that a lot of people complained about javascript as a language (hence the creation of typescript and “enhanced” versions such as coffeescript and Dart). As a result of that misconception, I decided to eliminate Javascript early.

Now, it was between Ruby and Python. I honestly could have chosen either one of them. I was deep searching every forum and every reddit link to see if there was a clear answer to the debate.

At the end of the day though, most “experienced” developers seemed to have a non-satisfying, but totally right answer:

“It depends on what your goal is, on what you’re trying to accomplish.”

They were totally right !

From my noob understanding, Python is a language mostly used for Web Development, Data Science (including the very-hot-right-now Machine Learning) and writing a bunch of helper scripts. Ruby is a language that’s mostly used for…. well making applications. It’s greatest strength is the speed to build MVPs (minimum viable product aka prototypes of your app).

And so the question came down to what is my goal with coding? From the get-go, I knew that my only goal was to create applications. That’s all. I mean yes, machine learning might be useful in my apps later on, but there are many many applications that don’t ever need ML to give value to its users. I wanted to reach a level where I could create small applications in 1-2 weeks and for that specific goal, there was a clear winner. That winner was Ruby (more-so for Ruby on Rails & Sinatra though).

Lessons from this

For techies and also for non-techies, there are two broad lessons that I want to share with you.

1. It doesn’t matter what you start with, the important thing is to start and stick with it

In this particular case, whether I chose Ruby or Python or even Javascript would not have mattered. All 3 of them serve my goal of building applications and if I stick with one of them for enough time, I’ll be able to achieve my goals.

This situation happened and will continue to happen to me.

When starting a YouTube channel: “omg, should I learn FinalCut Pro, Adobe Premiere or DaVinci Resolve””

When getting into photography: “omg, should I buy myself the sony rx100 vii, the a6000, the fuji x100v or the canon g7x”

When getting into graphic design: “omg, should I learn Sketch or Figma or Adobe Illustration or Photoshop or Balsamiq or pen and paper?!”

You get the idea yeah?

I think I get so stuck in trying to find the “best” thing to start with as if my whole career depends on that one decision. As if choosing one language over the other or one application over the other would determine the fate of whether I’ll succeed or not. It doesn’t. It might be an indication of my fear of failure though…

The important thing to remember when we’re debating all these choices is that each choice has their success stories. There are great apps built with Python, great apps built with Ruby, great apps built with Javascript. There are great videographers that use Premiere, great videographers that use FinalCut, great videographers that use DaVinci Resolve. Same thing with graphic designers and photographers.

Just pick one and start learning it…. chances are that learning one of them will help you with the others and in the worst case scenario where you hate the choice you made, you can always change LATER. When you’re a beginner, you have so many things to learn before worrying about the “pros and cons” of each option.

BUT, I get it, it’s sometimes easier to start out with a good option and so

2. When facing a choice, always start with your own goals first

The reason why I was able to pick Ruby and stick with Ruby is because I knew what I wanted. RoR (Ruby on Rails) is a framework built to create quick applications. And that’s exactly what I wanted. If I want to learn machine learning later on, then I’ll simply learn python later on.

It’s the same thing for all the other examples I gave. Each option will definitely have their own pros and cons and the secret to making it easier to pick one is to match those pros/cons to your own goals.

For instance, maybe you want to be a graphic designer and you already know that you want to specialize in logo design. Then maybe starting with something like Adobe Illustrator is going to get you closer to your current goal instead of something like Sketch (which is more widely used for application design – I think).

Or maybe you want to become a marketer and you want to specialize in influencer marketing. So maybe it’ll be wiser to learn the ins and outs of platforms like Instagram and Tik Tok instead of LinkedIn. However, how the contrary, maybe you want to become a corporate marketer for B2B companies. In that case, learning LinkedIn might be more worth it than Tik Tok (and Instagram).

I hope you get the gist of it. Basically, start with your goal and then match them to the pros and cons of the options that you’re considering. Most of the time, you’ll see one of them stand out from the rest.

The more you know what you want, the easier it is to make choices. This can also be a life principle I guess haha.