While getting feedback and learning from customers on every iteration, it is necessary to add new features and adapt to changes quickly. The tool we choose to build MVP is crucial to reduce waste.
Why should you choose Ruby on Rails?
Ruby on Rails is a well-known web application framework with more than 15 years of trajectory and a strong community behind.
Ruby on Rails follows a philosophy that allows fast development facilitating trivial and repetitive tasks; the team mainly focuses on the business challenges.
● Open Source: Code designed to be publicly accessible anyone can see, modify, and distribute the code as they see fit. Often cheaper, more flexible, and has more longevity because it is developed by communities rather than a single author or company.
● The Principle of Least Surprise: Inspired by Ruby; while working with Rails everything behaves as the developer expects. Rails is designed to provide different ways to perform the same tasks in the most intuitive and elegant way.
● Don’t Repeat Yourself: It involves whenever possible, re-using as much code as possible rather than duplicating similar code in multiple places.
● Convention over Configuration: It is an extension of the concept of a default, a setting or value automatically assigned without user intervention. Some software systems, notably Java web application frameworks, need multiple configuration files, each with many settings.
● Rails is Opinionated: Rails uses a set of well established conventions. If the team members follow the Rails conventions, they will have fewer decisions to make, and they will find more of what is needed is already built. The benefit is faster development, improved collaboration, and easier maintenance.
● Rails is Omakase: Omakase is a Japanese phrase that means “I’ll leave it to you”. Where Convention over Configuration is occupied with how we best use individual frameworks, Omakase is concerned with which frameworks, and how they fit together, preventing the team from making wrong decisions while choosing the tech stack.
● Value integrated systems: A whole system that addresses an entire problem. This means Rails is concerned with everything from the front-end to the back-end.
Ruby language is simple, productive, and elegant with an experienced, supportive, and dedicated community; placed in the top 10 of popular languages in The RedMonk Programming Language Rankings: January 2021 Over the years the community created plenty of resources to improve performance, quality and accelerate development. Some of the resources are backed by big companies like Shopify and GitHub.
● ActiveAdmin – Administration framework for Rails,
● Devise – Flexible authentication engine for Rails,
● Byebug – Rich debugging tool for Ruby,
● Pundit – Minimal authorization through OO design for Ruby,
● RSpec – TDD and BDD framework for Ruby,
● Pay – Payment engine for Rails,
● Simplecov – Code coverage tool for Ruby,
● and Spree – E-commerce platform for Rails.
Rails came to life to change the perspective of web development popularizing the use of Model-View-Controller (MVC) architecture, engines, generators, preprocessors and conventions. Modern mainstream frameworks adopted the philosophy and core ideas behind and since the Rails way to develop spreaded among different communities, many developers know how Rails works even without ever having used the technology.
Popular admirers and inheritors:
● Django - Python,
● Laravel - PHP,
● Phoenix - Elixir,
● ASP.NET MVC - C#,
● Yii Framework - PHP
A friend of MVP
Rails comes by design with a set of tools that will accelerate the development of your MVP and reduce waste.
● Generator: During the development it’s often needed to create models, controllers and views while using the MVC pattern. Rails makes it easy with generators; with a plenty list of generators the team saves time generating all the necessary files and code using the command line tool. Even more, the team can create custom generators to accelerate repetitive tasks.
● Engine: Small applications that provide specific functionality and enhance a Rails application. With engines the team can start the application development fast and focus on the business. Good examples of engines are Devise (Authentication), Spree (E-Commerce) and Thredded (Forum).
● Object Relational Mapping: Active Record provides an easy, elegant and intuitive way to work with business objects and databases without writing SQL statements directly. As mentioned in Rails documentation, with Active Record we have the ability to
○ represent models and their data,
○ represent associations between these models,
○ represent inheritance hierarchies through related models,
○ validate models before they get persisted to the
○ perform database operations in an object-oriented
Airbnb as many other startups started from the ground up. Brian Chesky and Joe Gebbia hadn’t enough money to pay the rent increment that occurred in San Francisco. Since San Francisco is a city with many tech conferences they decided to add an air mattress in a free space of their apartment and rent it with free breakfast. They noticed the potential of the idea and later Nathan Blecharczyk joined the team. With only three members and limited resources they decided to kickstart their project with an MVP using the right tool, Ruby on Rails. Besides the challenges, Rails allowed them to turn their ideas into reality and scale their product to have around 40 million users only in the US in 2021.
Many other popular companies appreciate the benefits of Rails and how it helped them during their beginning, as the CEO of Shopify mentioned.
Rails has a lot to offer to each company and developers building an MVP. The
benefits of the philosophy, community and influence behind Rails can be summed up as follows:
● fast development,
● high quality,
● and a steep learning curve.
● The Lean Startup – Eric Ries
● What is open source? – redhat.com
● Ruby on Rails Doctrine – rubyonrails.org
● The RedMonk Programming Language Rankings: January 2021
● Airbnb MVP – fueled.com
● Number of Airbnb users – statista.com
GraphQL Ruby. What about performance?
Rails and Other Means of Transport
Rails Development with TMUX, Vim, Fzf + Ripgrep