Привет! Мы готовимся к RailsClub 2017 и традиционно беседуем с нашими любимыми спикерами. Сегодняшний герой — человек, получивший Ruby Hero Russia в прошлом году — Антон Давыдов. Антон OpenSource-энтузиаст и один из кор-разработчиков Ruby-фреймворка Hanami. Мы расспросили его о работе и взглядах на Ruby-разработку.
Над чем ты сейчас трудишься?
Я работаю в Healthcare стартапе, который может улучшить жизнь очень многим людям в США. К сожалению, подробности о продукте рассказать не могу, поскольку подписал NDA.
Если же говорить про OpenSource проекты, то сейчас мы дорабатываем версию Hanami 1.1. Также мы с Сергеем создаем библиотеку для Event Sourcing в Hanami. Она уже работает без глобал стейта, делает subscribe & broadcast для ивентов, поддерживает несколько адаптеров и позволяет легко добавлять свои. В будущем у нее появится много крутых возможностей: ретраи, построение дерева событий и документация ивентов из коробки.
В Ruby нечто похожее делается с помощью гема Wisper…
Да, он очень похож. Но Wisper реализует pub/sub только в памяти одного instance. А мы хотим позволить разработчику выбирать, как обрабатывать такие сообщения: в одном инстансе или заскейлиться на несколько.
А как будут добавляться новые адаптеры?
Достаточно зарезолвить их в контейнер. Сейчас у нас есть in-memory и Redis адаптеры, с которыми можно поиграть. В будущем появятся Kafka, RabbitMQ и, возможно, PostgreSQL.
Как ты видишь развитие Hanami в ближайшие четыре года?
Сейчас есть монополия в виде Rails. Я бы хотел видеть в Hanami достойную альтернативу. Это позволит развиваться всем фреймворкам. Hanami уже сейчас решает бизнес-проблемы, и многие разработчики вдохновляются этим инструментом. Надеюсь, в будущем мы сможем поменять мнение о Ruby как об умирающем языке и популяризировать новые идеи.
Как ты считаешь, сможет ли Hanami стать мейнстримом в будущем?
За последний год я увидел значительные изменения в отношении к фреймворку и его экосистеме. Это заметно по графику скачивания гемов, частоте появления постов, упоминанию на конференциях. Еще год назад, когда заходила речь о Hanami, люди крутили пальцем у виска, а сейчас подходят и говорят, что им нравится этот фреймворк и они его уже используют.
Как думаешь, почему именно Rails стал своеобразным стандартом в Ruby-разработке?
Я думаю, причин тому несколько. Во-первых, всем надоели многословные Java- и PHP-фреймворки, требовалось создать простое и работающее решение. Во-вторых, фреймворк позволяет быстро запускать продукты, на создание которых в других языках уходили бы недели и даже месяца. Для многих это стало глотком свежего воздуха, и Rails быстро обрел популярность.
Сейчас кроме Rails нет ни одного полноценного MVC-фреймворка. Существуют Sinatra и другие http-фреймворки, но они не дают возможности взять и одной командой начать работу над бизнес-задачами.
Какие, на твой взгляд, проблемы стоят перед Ruby-сообществом?
Многие мои друзья и знакомые говорят или говорили, что им слишком скучно в Ruby. Они из дня в день делают одно и то же, что в свою очередь убивает мотивацию. Поэтому многие разработчики начинают изучать другие языки и технологии. Я вижу в этом проблему. Людям не хватает чего-то кардинально нового, каких-то идей, которые позволят им иначе посмотреть на свою работу.
Важно не останавливаться и предлагать концептуально новые решения. Сейчас этим занимаются ребята из dry/rom. Но к сожалению, любой новый подход — не только в Ruby — почти всегда воспринимается в штыки. С одной стороны, некоторая критичность должна иметь место, но к сожалению, это убивает мотивацию двигаться дальше и расти как сообщество.
Каким ты в целом видишь путь Ruby-разработчика?
На этот вопрос сложно ответить однозначно. На мой взгляд, хороший разработчик интересуется и возможностями разных языков и систем. В этом случае специалист сам решает, что хорошо для него, а что нет, и в будущем может выбрать, что действительно полезно и какие подходы можно использовать в работе.
Какой гем, по-твоему, может служить примером идеального кода?
Я бы точно не показал на Ruby core :). Я не могу сказать, что пишу хороший код, он не всегда нравится мне, поэтому сложно говорить о таких эфемерных понятиях, как качество и красота кода. Мне кажется, что лучшие гемы – это те, которые просто решают существующие проблемы и не создают новых.
Откуда ты узнаешь что-то новое о Ruby? Читаешь блоги или пользуешься другими источниками?
Мне нравятся агрегаторы ссылок, например, Reddit. Также я использую RSS. Это позволяет познакомиться с разными точками зрения на одну и ту же проблему.
Например, недавно появилась статья о том, почему Hanami – это плохо. И там был, по сути, ровно один пункт: в фреймворке магически вызывается метод call. Большая часть комьюнити дружно пыталась объяснить, что это нормально: излишняя явность иногда вредит. Очень интересно читать такие вещи – начинаешь смотреть на свою работу под другим углом.
Также у меня есть свой телеграм-канал, и его подписчики часто присылают мне интересные ссылки.
Помнится, ты делал платформу для совместной работы над OpenSource-проектами OSS Board. Ты еще занимаешься этим проектом?
Да, я его и сейчас продолжаю делать. Мне кажется, я недостаточно хорошо пропиарил OSS Board. Очень сложно найти людей, которые будут создавать там таски и выполнять их, особенно если стоит задача чуть сложнее, чем внесение изменений в форму. Основная проблема проекта — в поиске специалистов, которые смогут добавить хорошо описанный таск, ведь за ним нужно следить, обновлять и общаться с разработчиками, а это очень большой труд. Но все равно находятся люди, которые помогают, за что я им очень признателен.
Что ты считаешь своим главным достижением в карьере?
На один из pull request в Rails я получил более 80 комментариев с вопросами по поводу каждой строки. Я так и не смог его доделать, но в итоге стал проще к относиться к подобным вещам.
Также я закончил проект в Google Summer of Code. Там очень много людей сдаются на первом месяце, еще больше — на втором, и до конца доходят лишь единицы.
А что это был за проект?
Плагин для Sidekiq, который показывает статистику по всем задачам. Но, к сожалению, времени не хватает, и я его забросил, хотя это довольно востребованная библиотека.
Какие твои главные достижения в жизни?
Не побоялся выступить первый раз в жизни на английском языке на конференции EuRuKo-2016 в Софии перед аудиторией в 700 человек. На русском делать доклад легче, ведь это твой родной язык. А когда не очень хорошо знаешь английский и никогда не выступал на нем, это очень волнительно.
На кого из OpenSource-разработчиков стоит равняться?
Смотреть на то, что делают другие разработчики, определенно стоит. Они генерируют и реализуют интересные идеи, которые можно помогать развивать или брать на заметку. Но в первую очередь нужно ориентироваться на самого себя и не сравнивать себя с другими.
О чем ты расскажешь на конференции и почему это стоит послушать?
Расскажу об опыте. Последние полтора года я занимаюсь не только фреймворком, но и его экосистемой. В какой-то степени меня можно назвать developer advocate ханами фреймворка. Поэтому в докладе постараюсь рассказать, зачем такая работа нужна, какие ошибки совершил и как взять этот опыт и замапить на другой фреймворк или технологию.
Все вопросы вы сможете задать Антону на конференции. Приходите! Будет много всего интересного.
А поделиться этой статьей с англоязычными друзьями можно на Hype.Codes.
До встречи!
Автор: elena_voronina