Cогласно статистике, Ruby входит в десятку наиболее популярных языков программирования. Чем в первую очередь обусловлен этот факт? Мощностью, простотой и выразительностью, которыми обладает язык, а также возможностью быстро получить результат. Сегодня развитие Ruby (я имею в виду количество разработчиков и вакансий на рынке) действительно находится на пике, но был и период упадка.
Разработчики, работодатели и заказчики понимали, что за выразительность и скорость приходится платить пониженным качеством. Было время, когда порог вхождения в обучение Ruby был невысоким, в связи с этим появилось большое количество низкоквалифицированных специалистов.
Потом пришла фаза продуктивной разработки, быстрого развития, так как сообщество восстановило интерес к тестированию ПО. В Ruby-сообществе особое внимание уделяют качеству кода и, в частности, методологиям тестирования. Я уверен, что ни в каком другом языковом community такого повышенного интереса к тестированию ПО не уделялось, благодаря Ruby это направление (автоматизированное тестирование ПО) получило новый виток.
Мы заботимся о качестве разрабатываемых продуктов, у нас есть масса примеров, где покрытие тестами составляет 100%. Причем это не просто зеленый цвет в отчетах, это результат применения нескольких методик: классического, мутационного и property-based тестирования. Все эти меры позволяют удостовериться, что мы предоставляем высочайший уровень сервиса для наших заказчиков.
Cуществует мнение, что для специалиста, не обладающего минимальным опытом в IT, обучение Ruby будет непростым. Есть ли реальные предпосылки для подобных утверждений?
С точки зрения освоения, Ruby не отличается от других популярных языков программирования, поэтому такое утверждение – миф. Ruby – язык мультипарадигменный, он обладает развитым тулингом и экосистемой. Наличие мощных IDE и отличные плагины для текстовых редакторов позволяют легко и эффективно его применять.
Возможно, утверждение о сложном обучении родилось потому, что в Ruby много… магии. Что это значит? Пример: в традиционной Java, читая код, программист четко представляет, как поведет себя программа. Читая код на Ruby, специалисту не всегда очевидно, почему этот код работает определенный образом. В соседних файлах есть много неявно применяемых функций, которые делают возможным работу «магического» кода. Я расцениваю этот факт, скорее, негативно, да и сообщество Ruby-специалистов в последнее время уходит от большого количества «магии», стремясь делать программы на Ruby более предсказуемыми и понятными. Кстати, именно из-за «магии» многие разработчики не любят Ruby, предпочитая ему другие скриптовые языки программирования.
Поверьте, язык Ruby уже перерос все детские болезни, которые свойственны новым технологиям. Повторюсь, порог вхождения для специалиста такой же, как и в других языках – в Ruby используются такие же идиомы, парадигмы и паттерны проектирования.
И все же, в чем преимущества языка Ruby перед другими?
Главное преимущество я вижу не в языке, а в экосистеме. На Ruby создан большой фреймворк – Ruby on Rails. С помощью множества удобных в использовании библиотек и внутренней высокой выразительности язык помогает реализовать одни и те же концепции за меньшее время.
Существует ли какое то предубеждение о Ruby в среде программистов?
Программисты, которые вышли из академической сферы, предвзято относятся к Ruby и к PHP из-за того, что это скриптовые языки программирования без строгой статической типизации.
Они не без оснований утверждают, что программирование на Ruby сопряжено с неким количеством удачи – «магии», о которой я говорил раньше. Вот я что-то написал, и черт его знает, работает оно или нет. Поэтому для программ на Ruby большое значение имеет тестирование, которое позволяет проверить, будет ли система работать правильно в процессе эксплуатации. На самом деле противостояния никакого нет, просто упор делается на разные инструменты – компиляцию со строгой типизацией в одном случае и тестирование в другом.
Есть еще одно менее популярное предубеждение у системных администраторов, которые считают, что программы, написанные на Ruby, сложно устанавливать на серверах. Но этот нюанс сейчас решается с помощью систем контейнеризации и виртуализации.
Отмечу, что в компании я ни разу не сталкивался с какими-то предубеждениями к Ruby или к специалистам, которые на нем работают.
Верно ли, что Ruby относительно медленно развивается по сравнению с другими языками программирования?
Нет, так сказать нельзя, цикл выпуска релизов и добавления функций достаточно агрессивен, развитие языка происходит не только за счет самого языка, но и за счет окружающих его библиотек, фреймворков и тулинга. Со временем появляется все большее количество новых библиотек, возрастает популярность языка, новых Ruby-конференций и других обучающих мероприятий.
Если мы затронули тему развития этого языка программирования, то стоит уточнить, достаточно ли ресурсов для программистов, которые стремятся повышать профессиональный уровень?
В Минске проходит большое количество мероприятий, узнать о которых можно на сайтах brug.by и rubyconference.by. В компании мы также поддерживаем подобное развитие: мы создали масштабное Ruby-сообщество, которое готово делиться опытом с коллегами, обсуждать Ruby применительно к другим смежным технологиям и т.д.
В сети множество отличных видео материалов: confreaks.tv – агрегатор видео записей с популярных конференций ruby (и не только) направленности, rubytapas.com – огромная коллекция коротких скринкастов, где каждый может узнать что-то новое, destroyallsoftware.com – Gary Bernhardt делится опытом разработки и проектирования (очень рекомендую), railscasts.com – давно не поддерживается автором, но это не умаляет полезность ресурса.
Какая экспертиза накоплена Ruby командой в компании?
У нас много проектов на Ruby, все они разные: есть большие системы, которые разрабатываем лет пять, есть мелкие и средние. С недавнего времени мы консолидировали Ruby инженеров в команде подразделения, это принесло плоды: все друг друга знают, экспертиза накоплена большая, мы не боимся использовать новые для компании библиотеки и решения – в сложных ситуация всегда найдется у кого спросить совета, у нас внушительный список технологических решений.
Тем, кто хочет прокачаться в Ruby, я советую напрямую обратиться к опытным менторам компании – Саше Казеко, Леше Блинову, Жене Белорусцу или ко мне – непременно дадим дельный совет или направим к нужному инженеру. Кстати, некоторым специалистам мы предлагаем переход в Ruby-технологию – и это не «переманивание». Чтобы повысить технологический кругозор и вырасти как технический эксперт, специалисту нужен опыт работы в нескольких несмежных платформах, но самое главное – желание развиваться и горящие глаза.
Предлагаю завершить такую серьезную беседу юмором:
Сидят lambda и proc в баре. Поссорившись, лямбда вышла из себя, а proc – из бара.