Почему стоит учить Ruby On Rails в 2017 году

David Heinemeier Hansson на quora ответил на вопрос, почему стоит изучать Ruby on Rails в 2017 году. Тема бесспорно актуальна, поэтому решил сделать перевод. Далее, вольный перевод, со слов Дэвида.

По тем же причинам, что и  в 2004 году. Много всего изменилось, но большинство осталось все тем же. Пока мы наблюдаем за значительным прогрессом в мире Javascript, мы также видим уменьшение сложности, которую Rails предлагает с самых первых дней. Раньше сложность была выбором мира Java, но жалобы уж сильно аналогичны тем, которые выдвинуты против Javascript сегодня. Эти люди тратят часы, если не дни, просто набрасывая каркас приложения. Настраивая базовую конфигурацию. Собирая и cherry-пикая код из множества библиотек и фреймворков создавая свою собственную архитектуру.

Основной посыл Rails во многом спорный как сегодня, так и в день премьеры фреймворка. Путем формализации соглашений, исключением бесполезных вариантов решений, предлагая полноценный full-stack фреймворк с широчайшими возможностями из коробки - мы позволяем значительно улучшить свою производительность всем тем, кто хочет создать свое приложение.

Это меня даже несколько удивляет, что несмотря на поразительный успех Rails, у нас совсем нет конкуренции. Почти вся деятельность сегодня направлена на создания новых вариантов существующих решений. Еще одна система сборки, еще одна библиотека для View слоя, еще одна ORM. И, очень мало усилий направлено на создание интегрированных, цельных решений.

Я думаю, дело в том, что основополагающая идея Rails чужда естеству большинства программистов. Избегая большого количества вариантов и принимая соглашения и опыт сообщества в большинстве вопросов web разработки вы в конечном итоге становитесь лучше. 

В любом случае, это большая идеологическая привлекательность Rails. Я расписал принцип convention over configuration шире, показал  the a la carte/omakase конфликт, показал привлекательность целостных систем и другие не менее важные вещи в доктрине Rails

После ее прочтения, вы получите довольно хорошее представление о идеях Rails. Если Вы не видите проблем описанных в этом документе, или Вам не нравятся пути их решений,  тогда техническая сторона Rails для Вас скорее всего уже не имеет значения. Но, если эти мысли в этом документе хотя бы частично совпадают с Вашими - читайте дальше.

На основе этих идей, мы построили невероятно прагматичный,  мульти-парадигменный web фреймворк. Когда люди слышат "web фреймворк", они обычно думают "о, это же штука для генерации HTML, да?" И в этом определении некоторые из них могут подумать, что Rails конкурирует с чем-то вроде React. И я даже полагаю, что в некоторой мере да, но очень, очень далеко, по крайней мере,  чтобы задуматься, что Rails не для Вас.

Как я уже говорил выше, Rails преследует невероятно амбициозную цель. Главной задачей full-stack разработки лежит в соединении каждого куска, необходимого для работы с базой данных или NoSQL хранилищем с бизнес логикой, написанной на Ruby. Через набор контроллеров, которые предоставляют доступ к этой логике с помощью REST, заканчивая генераций HTML, который в конечном итоге предоставляется пользователю. Но, этот самый последний шаг (генерация HTML) не является тем, на чем фокусируется Rails.

По этому, если вы считаете, что будущее за фронтенд разработкой, React, Angular или что-то еще, то вам все равно все еще нужен Rails. Фронтенд всего лишь основанный на HTML/Javascript интерфейс пользователя, который все равно нужно соединить с реальной логикой. Сохранение данных в базу, расчет разных штук, выполнение производительных задач, отправка емейлов или пуш нотификаций - все это задачи бекенда, которые нужно решать в реальных приложениях.

И это то, в чем действительно хорош Rails. Важно то, что происходит после POST или PUT или GET запроса. Как я уже сказал,  Rails является full-stack фреймворком и конечно у него есть инструменты для генерации HTML. Более того, у нас есть невероятно продуктивные решения в этой области, например Turbolinks или SJR. Но, если Вам кажется что эти решения Вам не подходят, Rails также имеет мощные решения для генерации JSON из коробки.

В любом случае, это очень длинная речь для двух основных вещей, которые делают Rails привлекательным в 2017году:

  1. У нас есть идеологический фундамент, который по прежнему предлагает лучшие решения в основных вопросах, так же, как это было 13 лет назад
  2. У нас есть прагматичное решение основанное на этой идеологии, которое предлагает удивительную производительность при решении задач используя Rails

Ах, да. И вишенка на десерт. Вы будете использовать ruby, который даже сегодня, когда мир снова открывает для себя преимущества функционального программирования, выглядит невероятно красивым и роскошным языком, с которым я только сталкивался. Посмотрите примеры кода на ruby и я уверен, вы не сможете в него не влюбиться.

Комментарии