RailsClub 2017: Интервью с Nick Sutterer. Rails умирает (а Ruby нет)

в 15:45, , рубрики: railsclub, railsclub.ru, ruby, ruby on rails, Trailblazer, Блог компании «RailsClub», конференция, конфернции, Программирование, Разработка веб-сайтов

Привет!
Сегодня публикуем интервью с Ником Сатерером. Ник создатель Trailblazer, автор нескольких гемов и новых слоев абстракции в Rails, Rails contributor. Накануне RailsClub 2017, где Ник будет делать доклад, Дмитрий Матвеев пообщался с ним о его работе и взглядах на развитие Rails.

image

Где ты сейчас находишься?
Сейчас я в Германии, работаю и живу в Ганновере, а до этого 4 года жил в Австралии. Я никогда не планировал оставаться в Австралии, но пребывание там многое изменило в моей жизни: я подсел на серфинг! Круто делать перерыв на серф и снова садиться программировать. Но я вернулся в Европу, потому что тут происходит много всего важного, так что в данные момент для меня интереснее жить здесь.

Как ты решил стать программистом, почему, где и когда?
Когда мне было 8 лет, я очень любил играть в игры на ПК, хотел создавать их сам — это была моя мечта. Отец купил мне несколько книг, и я начал «играть» в программирование. Мой отец — тоже программист, можно сказать, теперь это наша семейная традиция.
Первый язык, который я начал изучать — С++. Так что пишу код без перерыва с восьми лет :)

А что на счет образования в компьютерных науках?
Я стал зарабатывать программированием в старших классах, безо всякого университета. Тогда я работал в интернет кафе официантом, а мой босс хотел сделать базу данных для учета яхт и попросил моей помощи. Так я пришел в PHP.

Почему перешел на Ruby on Rails?
Я программировал на PHP и Perl по всем правилам. Мне нравилось ООП, и я старался создавать небольшие объекты с простым и понятным интерфейсом. Однажды мой коллега показал мне Ruby on Rails. Я был заинтригован, но сразу увидел некоторые архитектурные недостатки. Мой друг не смог мне ясно объяснить, где именно я должен писать код, и почему. Но я начал баловаться с Rails 1.1 и с Active Record, и мне понравился сам язык. Я стал использовать Ruby для своего личного проекта, но в работе по прежнему был PHP.

Ты и сейчас работаешь в найме?
Нет, у меня уже несколько лет своя компания. Мы развиваем Trailblazer и консультируем компании, которые Trailblazer используют в своих коммерческих проектах, помогаем им решать архитектурные проблемы.

Какой совет ты можешь дать тем, кто хочет совместить работу за деньги и open source?
Работай на open source несколько часов в день и не говори менеджеру :)
Шучу. Важно работать как за деньги, так и помогать решать проблемы всего сообщества, поддерживать его. Ну а если твой open source продукт будут использовать другие компании, ты будешь востребован как консультант. Таким образом работа в OSS может стать финансово оправданной.

Почему твой доклад на RailsClub 2017 называется «Ruby is dead»?
У меня есть официальное разрешение от Матца называть Ruby мертвым языком. :)
Конечно, это провокация. Не новость, что я всегда критикую Ruby и Rails. Мне нравится Ruby, но я всегда сравниваю его с другими языками. В докладе я покажу примеры из Java и PHP, расскажу как они развивались и как сильно улучшились за последнее десятилетие. Но Ruby остался таким же, как 20 лет назад, и это должно быть предупреждением для нас. Я хочу остаться в Ruby, но он должен развиваться! Многие люди переходят на другой стек, потому что хотят работать с языком, который решает их проблемы. Моя проблема — как создать стабильное и надежное коммерческое приложение. Да, в Ruby процесс добавления новых фич, таких как, например, поддержка типизации, идет очень сложно, во многом из за поддержки обратной совместимости. Но ведь другим языкам удалось это сделать!

Еще я расскажу в докладе о mruby. Это очень интересная тема, над ней сейчас как раз Матц работает. Я уже говорил, что главная проблема Ruby, на мой взгляд, в том, что сложно добиться стабильного поведения от приложения. Практически невозможно!!! Я всегда получаю «method not found», это основная ошибка в продакшн. Я считаю планы Матца по поводу добавления в Ruby поддержки определения типов (“duck inference” typing) очень многообещающими. Типизация — это действительно полезно.

Другая проблема в рельсах — это плохая структурированность кода.
Rails позволяет создавать простые приложения за два часа, но для большого приложения это просто не подходит. Ты счастлив первые две недели, но потом начинаешь злиться. Rails отлично подходит для демонстрации — за один день новичок пишет работающее приложение, и он очень доволен. Но проблема в том, что если вы хотите писать на Rails стабильные вещи, вы не уйдете далеко. Хочется писать и просто, и надежно одновременно, но с помощью Rails это будет затруднительно сделать.

Основная проблема в ООП — слишком много функциональности в одном объекте. Я не думаю, что у объекта должно быть 300 методов. Вот в функциональных языках приходится писать отдельную функцию для всего, и это, на мой взгляд, лучше. Тогда не приходится заботиться о внутреннем состоянии, а именно из-за него часто возникают проблемы в ООП.

Почему ты решил посетить Россию, что ожидаешь увидеть?
Это моя первая поездка сюда. На Rails Сlub будет много классных людей и много крутых спикеров, а еще я наслушался рассказов о русских афтепати… :)
Еще я хочу посмотреть Санкт-Петербург, так что планирую пробыть в России примерно полторы недели и надеюсь получить гигантскую порцию вдохновения!

Расскажи побольше о Trailblazer?
Забавный факт — в России самая большая база пользователей Trailblazer! Это набор абстракций, которые могут быть использованы во фреймворках, таких как Rails или Hanami, и добавляют туда новые концепции, такие как from object и policies, и в итоге связывают все вместе, вашу бизнес логику и рабочие процессы.

Сейчас я работаю в проекте для полиции, в нем 60% кода — это набор условий if-else, которые управляют правами доступа. В Trailblazer 2.1 будет добавлена поддержка BPMN и workflow диаграмм. Это позволит вынести условный код из кода приложения. Я покажу примеры на конференции!

Какой у тебя прогноз насчет будущего Ruby/Ruby on Rails?

Каверзный вопрос! На мой взгляд, Rails умирает, и я не очень оптимистичен по поводу этого фреймворка. Никаких новых абстракций, никаких инноваций за последние 10 лет! Есть энтузиасты, которые пытаются делать что-то новое, но основная команда разработки фреймворка в этом не особо заинтересованы. Rails застряли.
Но насчет Ruby надежда есть: выходит много новых реализаций, например, JRuby. Поэтому я думаю, что как минимум в следующие 20-30 лет Ruby будет жить.
Однако, для меня есть хорошая новость про Rails — чем больше людей ими пользуется, тем больше людей сталкивается с их недостатками, и поэтому они начинают использовать Trailblazer :)

Есть ли у тебя какой-то набор гемов для нового проекта?
Конечно! В Trailblazer, мы используем стек, который мы назвали Tamarama. Он состоит из:

  • Sinatra для роутинга
  • Trailblazer для бизнес логики
  • Sequel или Active Record для баз данных
  • Cells для слоя представления

Что ты можешь сказать про то, что Ruby медленный?
Я знаю, что есть много более быстрых языков. Но я думаю, что в этом нет никакой проблемы. Вы можете сделать ваше приложение на Ruby быстрее, например, с помощью Tamarama или Trailblazer. И да, Ruby медленный, но Rails делает его еще медленнее! Лично у меня никогда не было проблем с производительностью приложений на Ruby, потому что я не использую Rails :)
К тому же, Ruby постоянно улучшается в этом направлении, и последние версии языка стали намного быстрее.

Посоветуй блоги или веб-сайты, которые тебе нравятся?
Я не читаю никаких блогов или новостных сайтов на регулярной основе, живу, как в прошлом веке :) Возможно, я пропущу что-то ценное, но зато избавлюсь от кучи ненужной информации. Вот мои советы:

  • Не доверяйте тому, что говорят другие люди, доверяйте себе.
  • Делайте код простым.
  • Не пытайтесь изобрести колесо.

А книги по программированию?
Я прочитал только две книги по программированию — это Рефакторинг Мартина Фаулера и TCP / IP Illustrated, Vol. 1. Это было больше 10 лет назад. Из TCP/IP Illustrated, Vol. 1. я почерпнул много базовых знаний о программировании, о разделении на слои и инкапсуляции. Рекомендую. А Мартин Фаулер — это вообще мой Иисус в мире разработки ПО, у меня на стене даже его фотография висит.

Как ты умудряешься не терять интерес к программированию?
У меня отличный баланс между жизнью и работой :) Много интересов, кроме программирования — еда, готовка, спорт. А главное, я работаю над тем, что действительно люблю. Работа в Open Source и консультирование — это то, что мне очень по душе. Так что сейчас я как никогда далек от выгорания.

Задать свои вопросы лично (и на легендарном русском афтепати :) можно будет 23 сентября на конференции RailsClub. Программа и регистрация на Railsclub.ru

А прочитать оригинал на английском — на hype.codes

image

Традиционное спасибо партнерам конференции!
Компания VoltMobi, наш бронзовый партнер, делает отличные мобильные приложения с бэкендом на Ruby и Rails. А Александр Щеглов и Станислав Тютин расскажут о своем опыте применения Trailblazer. Так что мы на конкретном примере увидим, как можно прийти на legacy-проект и не начать плодить такой же устаревший код, а начать делать хорошо, не сильно теряя во времени и не устраивая глобальный рефакторинг.

Всех ждем!
RailsClub.ru

Автор: vorona_karabuta

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js