Как стать автором
Обновить
0
RubyRussia
Конференция разработчиков на Ruby и RoR

Интервью со спикером конференции RubyRussia Маркусом Ширпом

Время на прочтение5 мин
Количество просмотров920
Всем привет! Чуть больше, чем через неделю в Москве пройдет конференция RubyRussia. В сегодняшнем интервью разработчик из Evrone Михаил Моргунов пообщался с одним из наших спикеров — Маркусом Ширпом, создателем популярного инструмента Ruby Mutation Testing.


Первый вопрос — про Mutant. Что нам нужно знать об этом инструменте? О чем будет доклад на RubyRussia?

Я расскажу историю создания инструмента для мутационного тестирования — Mutant. Хочу познакомить аудиторию с ключевыми понятиями: люди узнают о разных уровнях покрытия, их значении и ценности.

Это прольет свет на те вещи в Ruby, к которым мы привыкли и считаем правильными, но на самом деле в них есть проблемы. Потому что Ruby очень часто дает нам прекрасную возможность выстрелить себе в ногу.

Как ты начал разрабатывать Mutant?

Эта история связана с моей работой над DataMapper и его следующей реализацией DataMapper 2, которая в итоге стала называться ROM. Проджектлид Dan Kubb написал библиотеку реляционной алгебры под названием axiom для поддержки этих новых разработок. Когда он писал axiom, то использовал стратегию «разработки с ограничениями». Она включает в себя много инструментов для работы с метриками и мутационное тестирование.

Инструмент, который мы тогда использовали для мутационного тестирования, назывался Hackle. У него были определенные операционные и концептуальные недостатки. Однажды я подумал: «Черт возьми, не буду даже пытаться исправить его! Давайте просто напишем новый и решим все проблемы масштабирования мутационного тестирования, которые есть у нас в DataMapper2.»

Это было 5 или 6 лет назад, с тех пор Mutant прошел через несколько итераций. Все они связаны не с моим желанием писать опенсорс, а с требованиями коммерческих проектов, над которыми я работал. Так что развитие Mutant сильно зависит от моей консалтинговой деятельности.

Каждый раз, когда я начинаю новый Ruby проект, я мне необходимо быть уверенным в каждом фрагменте кода. И Mutant — это тот инструмент, который я использую для этого.

То есть коммерческие клиенты хотят использовать Mutant?

Да. Это подтверждается тем, что все фичи, которые вы видите — это фичи, которые коммерческие клиенты просили меня добавить в последние годы. Есть некоторые функции, которых нет в публичной версии, потому что клиент не дал мне право открыть их исходный код. Но иногда клиент говорит: «Нет проблем, если кто-то получит пользу от этого», что мне очень нравится.

На данный момент я покинул DataMapper2. Никогда не писал фичи просто для удовольствия. Это просто побочные эффекты коммерческого использования.

Я лично не влюблен в Ruby, это просто инструмент для меня. Mutant — это способ сделать Ruby более эффективным. Порог входа в Mutant очень высок, но когда начнешь — он сильно помогает. Необходимость обучения — это то, с чем нужно смириться.

Это в порядке вещей, когда используешь бесплатный гем :)

95% бесплатных гемов — просто хобби-проекты. Они не подходят для коммерческого использования. Авторы делают их из личных интересов. Я не виню их. Но советую командам разработчиков коммерческих проектов помнить об этом, когда они берут что-то из RubyGems.

Я прочитал только файл README Mutant’a на GitHub. Но пока мало что понял.

Именно по этой причине мне нужно потратить еще какое-то время на написание readme и дополнительной документации начального уровня.

По личным причинам я молчал в коммьюнити 3 года: у меня появилось еще двое детей, я переехал в другую страну.
RubyRussia — это первая конференция после перерыва, когда я смогу поговорить c сообществом. И я хочу использовать время, которое я трачу на подготовку своего доклада и воркшопа, как источник материалов для дополнительной документации.

Что нас ждет?

6 октября будет доклад о Mutant, а 7 октября — workshop. Он будет основан на реальных примерах, взятых из проекта с открытым исходным кодом, который использует rails и rspec.

Насколько я понимаю, ты используешь другой язык программирования, не Ruby?

Это не совсем правда. Я часто использую Ruby, но только если для этого есть веская причина. Обычно это спасение legacy приложений, которые вот-вот рухнут под весом собственного кода.

В таком варианте нельзя просто прийти и за один шаг заменить Ruby. Делать инкрементный рефакторинг / «душить» Ruby-код — моя основная работа. И во время этого процесса руки у меня по локоть в Ruby, и здесь Mutant является моим главным инструментом для связки циклов рефакторинга / изменения.

Какие языки ты предпочитаешь?

В основном Haskell. Сейчас для меня это самый сбалансированный язык по удобству использования и пригодности для разработкой программ, имеющих коммерческую ценность. Haskell Type Checker гарантирует многие свойства сразу же; свойства, за которые в Ruby мне пришлось бы воевать.

На горизонте есть еще несколько других крутых языков и расширений. Я думаю, что зависимые типы перенесут «корректность после прохождения проверки типов» на новый уровень.

Считаешь ли ты, что у Ruby и Rails есть будущее?

У Ruby и Rails низкий порог вхождения, это помогает людям быстро достичь точки, когда приложение приносит деньги. Пока люди считают, что у Ruby и Rails есть это качество — у этих технологий есть будущее.

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

Что ты думаешь о Rust?

Мне он действительно нравится. Сейчас я не использую его часто — не было веской причины, так как рабочие проекты не могли ничего получить от преимуществ Rust по сравнению с другими вариантами, которые у меня были.

В основном я занимаюсь backend разработкой. Или назовем это «массовым RPC с предметной логикой». Здесь в первую очередь важно гарантировать корректность программы, а лишь во вторую — её производительность. Rust вычислительно очень эффективен, но за это он требует ручного управления низкоуровневыми деталями. Это занимает время, которое лучше потратить на оптимизацию высокоуровневых паттернов ввода-вывода (группировка RPC, минимизация round trips, верификацию транзакционных свойств и т.д.). Лучше сделать это до того, как оптимизировать отдельные примитивы за счет языка, которые дает мне больше возможностей для оптимизации.

Если бы я занимался чем-то более вычислительно тяжелым, видеокодеком например, Rust был бы инструментом, который я выбрал.

И последний вопрос. Что ты можешь посоветовать программистам-новичкам?

Как начинающий программист, найдите пет-проект и интегрируйте его с интересами вне программирования. Это необходимо, чтобы быть увлеченным достаточно долго, пока изучение программирования не начнет приносить деньги.

Очень интересно! Это должно сработать!

Да, именно так я и начал :)

Отличный совет! Спасибо за интервью! Увидимся на Ruby Russia.

Вас тоже ждем на конференции! Кстати, осталось меньше 30 билетов, так что не советуем откладывать регистрацию, если решили идти. А если хочется погрузиться в Mutant более основательно, то ждем на воркшопе Маркуса 7 октября. Все подробности на сайте.

Прочитать оригинал на английском можно на hype.codes.

А тут место для благодарности отличным компаниям, которые подерживают главное Ruby-событие в России:

Генеральный партнер — Toptal
Золотые партнеры — Gett и Cookpad
Серебярные партнеры — Instamart, UCHi.ru, JetBrains и Qlean
Бронзовые партнеры — Bookmate и InSales
Теги:
Хабы:
+5
Комментарии1

Публикации

Информация

Сайт
rubyrussia.club
Дата регистрации
Дата основания
Численность
Неизвестно
Местоположение
Россия

Истории