Why Ruby on Rails is still great for MVPs
Ruby on Rails was first released in July 2004, 19 years ago at the time of writing this article. In the second half of the 2000s, it became one of the best (if not the best) frameworks for developing web applications and a reference in the industry. Recently, I came across this tweet from GitHub's former CEO and co-founder, where he tells his story with Ruby on Rails. The most interesting things he mentions are:
The velocity was a huge part of the appeal - we could create new features fast!
We never really had any problems scaling Rails. I spent way more time optimizing SQL queries and adding caching layers than I did fighting with Rails or Ruby. The scaling problems we had back then would have occurred using any web technology.
I can't agree more.
Benefits of using Ruby on Rails for an MVP
In the quotes above you can see two of the most important benefits of using Ruby on Rails for MVP development. But there are more.
Development Speed and Productivity
The Ruby programming language is an expressive object-oriented language focused on development productivity. And Rails is a web application framework that comes with a lot of features following Ruby's philosophy.
With a single command, you can generate a project with all of the files needed for Rails to run. Then with another command, you can start generating models, controllers, views, and its tests. Being very simplistic, one can say that by running a couple of commands you can have a working application.
The most common problems are already solved by Rails or other open-source tools and libraries available (the so-called ruby gems). As we've seen in a previous post (Is Ruby on Rails secure?), a newly created Rails project comes with the most common security vulnerabilities mitigated by default. Other common problems such as authentication, authorization, background jobs, etc. can be easily integrated into your Rails app by just installing a ruby gem.
Being able to create new features fast was true back in the 2000s and it's still true currently.
Ruby on Rails is Open Source
Ruby on Rails is open source, and most of the ruby gems out there are also open source. This has a lot of benefits on its own such as:
- It's well-tested, quality code you can review
- You get security updates and new features frequently
- You can contribute to the framework and the ruby gems by fixing bugs or suggesting new features
By using Rails, the development team can focus on building features fast instead of working on the tooling. The time invested has a high return value.
Scalability is a heated topic when it comes to Ruby and Ruby on Rails. People always compare Ruby on Rails with Node or Python claiming Ruby is slow. While there are things to improve at the interpreter level, there is no clear winner in this race. I'm always skeptical when I see this kind of reductionist performance analysis.
Performance is a complex matter and no application has the same needs and problems. A fast interpreter doesn't make a scalable web application. As Nate Berkopec says: "Server response times simply make up a minority part of the actual user experience of loading and interacting with a webpage - cutting 99 milliseconds off the server response time just doesn’t make a difference". SQL query optimization, caching, background jobs, and load balancing are some of the common techniques used when you need to scale your application up.
Scalability is not a real problem for MVPs. When it comes to MVPs, moving fast and building a solid foundation is much more important than the speed of the interpreter.
Ruby on Rails has a huge ecosystem made possible by its great community:
- if you need user authentication in your web app you can plug in a RubyGem and you will have user authentication in your web app
- if you need user authorization in your web app you can plug in a RubyGem and you will have user authorization in your web app
- if you need background jobs you can plug in a RubyGem and your web app will get background jobs for time-consuming tasks
As you can imagine, there is a RubyGem for pretty much anything you need in your app. This extensibility and the general availability of plugins lets you focus on the essential: business logic.
Mature framework and philosophy
Rails has been around for almost 20 years. The way it approaches web application development has been inspiring and a key turning point for the development industry. Its philosophy of pragmatism, agility, and convention over configuration has inspired several other frameworks and programming languages.
It has been collecting feedback, improvements, and features for a long time and it always kept up-to-date with the technology trends and the massive advances the web and internet have had in the last 20 years.
Most important of all, its ways have been proven several times by big successful companies like GitHub, Shopify, and Airbnb, among others.
As stated above in the ecosystem and open source sections, the framework and the libraries are mostly open source. This highly reduces the budget you need to have to bootstrap a company. On the other hand, as the development team can focus on building features instead of tooling, the time invested in software development has a high return value.
You can also watch the Ruby on Rails documentary.
Here is an interesting thread on how an improvement on the Ruby interpreter is making Ruby on Rails apps significantly faster.