Making The Leap To Ruby on Rails

I’ve come to a point in my career where my knowledge of web development has hit a plateau. I, like many front end developers, are probably used to working with WordPress or something similar building marketing based sites without real user based functionality. We know enough to be deadly but take to Google almost religiously when something pops up we have no idea how to do. Most enhancements can’t always be solved by adding a new plugin and for this reason, I’m on the hunt for more.

This plateau in my career has driven me to seek more from my personal development arsenal. I’ve compared many frameworks, languages, and platforms but I keep arriving back at Ruby on Rails.

Everyone has their own opinion on what language or framework is best and that’s the biggest problem for me. Why is this? Because I don’t know who to believe when I’m told a certain language trumps another.

The truth of the matter is, almost all languages can arrive at the same solution. Are some faster and more efficient than others? Sure. Is spending a day setting up a project with webpack, for example, really worth the fuss? Some think so.

Coming to terms

There’s no way I’m able to learn every language out there. Many of them follow the same programming conventions but I feel being really good at one technology is better than being mediocre at many. The same is true in the design world. If you’re a really good logo designer you won’t probably advertise heavily that you create websites.

Why Ruby on Rails?

That’s a great question and a hard one for me to answer. I’ve gone back and forth between Laravel, Ruby on Rails, and a MEAN.js stack to figure out which one suits me. I realize there are more out in the wild but for my own tastes these three stood out.

My process began by just diving into the communities that exist around these frameworks. Ruby on Rails is probably the oldest frameworks of the bunch. It has been used by many applications such as Basecamp, Shopify, Dribbble, and more.

Laravel is up and coming and I really like what I see but at the heart of it all is still clunky PHP. Don’t get me wrong, PHP is great. It runs almost everywhere and on any host. For that, it’s amazingly powerful, but when it comes to syntax I really like code that looks super clean (ruby is a great example of this). That brings me back to the MEAN.js stack. While JavaScript is all the hype right now I feel like we still haven’t landed on a perfect solution that will cover all the tracks in a framework. There are attempts at this with the MEAN stack as well as Meteor.js but after digging deeper I arrived at the conclusion if I wait a little while longer something new will erect itself offering more of a be-all-end-all solution. Why wait? Mainly because every day I hear about a new framework or add-on being updated or launched. Angular 2 for instance is completely different than Angular 1.5. The big switch keeps me from going down that path. And that’s only front end concerns.

Some developers hate being tied to a framework and that’s perfectly fine but many are built the way they are for a reason.

Ruby on Rails gets heat from some devs because it’s fairly opinionated and uses strict conventions when it comes to filenames, file generations, database migrations, and more. I find this comforting but many don’t. I like it because I can build an application that another Ruby on Rails dev will immediately understand by following conventions. I also like it because everything from sending emails to database entries is covered. I don’t have to worry about finding dependencies that will match with my environments not to mention their version numbers being conflicting or corrupt without dependencies in place.

Some initial concerns

While I’ve landed on the Ruby on Rails framework as my choice in building web applications I do have some concerns:

Not every hosting provider is set up for a Ruby on Rails type of environment. There are hosting providers such as Heroku that specialize in this but It would be awesome if Ruby on Rails was as widely supported as say PHP.

Being new to the framework I’ve heard that Ruby is a great language but can be slow. I’m not 100% sure this is an issue for me directly but for some application in the wild, it may be a concern.

Being tied to a framework is a bit scary but thankfully there is a large Ruby on Rails community and a ton of Ruby gems to help with building unique features tied to any apps I produce.

Learning Curves

I’ve spent the better part of the winter watching videos, reading tutorials, and building simple Ruby on Rails apps. My plan is to start small with some of my own simple app ideas and slowly build them out for the sake of learning.

Just diving in is a little intimidating for me. I’m coming from PHP and WordPress so it’s definitely a big change. Ruby, for instance, has zero tolerance for semi-colons so that will be fun to try and get used to since just about every other language I know uses them.

The MVC pattern isn’t new to me but thinking “MVC” is. When creating new features I’ll have to likely start extremely slow to get my workflow up and running. For instance, if I generate a model in Rails, I’ll need to then have it talk to the controller by creating actions. Those actions then need a corresponding view.

Knowing what gems are ideal for my project is also challenging. There are so many that selecting the right ones is also an intimidating process. Luckily the community comes to my rescue on rubygems.org by offer guides and reviews from fellow developers.

Moving Forward

Making the leap to Ruby on Rails has been a challenging one but I’m excited for the challenges that lay ahead. I’m excited to say I’ll be able to build a complete application with users, roles, and even more advanced functionality I never dared to take on before.

Once I’m a bit more comfortable with building applications with Ruby on Rails I plan to create a series showing you how to go about it yourself. If you are interested in the framework I invite you to subscribe to my YouTube channel as the videos will live both there as a playlist and on this blog.

The videos will be for both my learning purposes and yours so we can learn together. I hope you’ll join me for the exciting road ahead!