Rails isn’t for beginners anymore

Bobby Tables
blindside.io
Published in
4 min readJun 29, 2017

--

In the last few years the Rails community has changed a lot. For people that have been working with Rails for 5+ years, it seems like only yesterday we were being introduced CoffeeScript and the Asset Pipeline. Rails has been improved and iterated on now for a decade and the community has grown to an astounding size. The amount of interest has certainly kept up, undoubtedly, because of the flexibility and ease of use of Ruby on Rails.

Or is that last bit true? The “ease of use” part? Certainly if you have been using Ruby on Rails for a while now it most definitely makes sense. But this is where we need to be careful before telling our aspiring friends and colleagues to “just learn Rails!” with enthusiasm. The fact is, Rails is not easy to learn anymore. In fact, it’s downright discouraging a lot of the time.

Left: Rails 3.0 new — help, Right: Rails 5.1 new — help

If you look at Rails 3.0 and it’s help output for starting a project, it’s relatively simple. There’s not many decisions or things you need to know to get started with a project. Looking at the same command for Rails 5.1 however, it gets hairy very quickly. There are options for things such as “spring”, “webpack” and “action cable”. To a seasoned Rails dev, you’ve likely learned at least what these things are and their place in the world over the years. But to a beginner that has only just learned what MVC stands for, these options are merely just confusing.

The reason a myriad of options makes a language and framework difficult to learn is because a newcomer has no way of knowing what is and is not important. It’s extremely difficult for someone that is jumping into something new to discern between valuable and “not valuable right now”. Everything that Rails provides is valuable, if it wasn’t there’s no way it would be a part of the framework. All of it has a purpose. But when you’re trying to just make a simple Twitter clone, a lot of what Rails is now actually is not valuable for that purpose.

This isn’t Rails fault, but it’s certainly on the community to finally admit to ourselves that Rails is not a good place to start if you want to become a developer. It’s a good place to go eventually and possibly even stay there forever (time will tell), but as of now… I’d send them somewhere else.

The reasons extend far beyond just the “rails new” portion of making something, though. If someone is attempting to learn how to make a website using Rails as their tool, there are now more and more dragons that they will likely hit along the way. A great example is Nokogiri.

Oh yes our dear friend Nokogiri, a gem to parse and modify DOM trees. Compiled against libxml2, it makes working with a DOM pretty straightforward. Until you run “bundle install” and you see the far too common “Check the mkmf.log”. Easy for someone with experience to have the Google fu to find the abundance of StackOverflow posts regarding the issue. But, in the shoes of someone that has only ever googled currency conversions, where countries are on a map, and the best recipe for steak, Googling this problem is extremely hard. Googling software related problems is a skill in itself.

Other problems such as “which database do I use?”, “which hosting provider should I use?”, and “What’s the difference between a string and symbol?” are only a fraction of the questions someone has to answer within the first hour of learning web development, and Rails only adds more questions.

So what can we do instead? Ruby itself has mostly stayed the same over the years, the biggest changes to Ruby have been it’s internals with backwards compatibility staying largely in place since version 1.9. If someone wanted to learn how to make a simple web application today, I would actually send them to Ruby and Sinatra, for a simple reason: It’s easy to get excited.

People are more likely to stick with something if it provides excitement early on into the experience. You can see this in life pretty easily, from starting a new relationship, to a Marvel film. A lot of action and excitement is right at the entrance.

Ruby and Sinatra has, in my book, become that excitement. To a person that has made nothing ever, seeing that good ol’ “Hello World” show up in their browser on localhost:3000 is a huge burst of excitement. When you get more into engineering, we lose those highs. It’s hard to find something that gives us as much excitement as the first time we stored something in a database and reloaded the page and it appeared in our HTML.

So the next time you recommend somewhere to start with web development, maybe give a roadmap to Rails, but avoid Rails as the end-all-be-all answer because you could very well be discouraging a potentially incredible developer.

On www.blindside.io I’m working on a new course entitled “Let’s Build: FireHydrant.io” where I take you through every single step necessary for building a production ready Rails application. From diagramming to deployment, it’s hours of commentated video content aimed at filling in the gaps you might have when shipping a Rails application. Interested? Sign up to get notified when it’s available.

--

--