Что такое язык Ruby и как стать Ruby-разработчиком
Где используется Ruby и Ruby on Rails, какие зарплаты у Ruby-программистов и что они должны уметь.
[spacing size=”15″]
История появления языка Ruby и фреймворка Ruby on Rails
Ruby был создан японским разработчиком Юкихиро Мацумото в 1995 году. В тот период IT-индустрия подошла к созданию сложных долгоиграющих программ: операционных систем, баз данных, офисных пакетов, игр… Одновременно задумались о создании программного обеспечения, ориентированного на людей и интуитивно понятного им, вместо прежнего, позволяющего только говорить с компьютером на его языке и о его проблемах.
[spacing size=”12″]
[spacing size=”12″]
При помощи старых языков программирования разработка программ шла долго и дорого, поэтому по мере роста вычислительных мощностей и числа запросов на ПО появилось много новых, молодых языков, которые позволили работать быстрее и создавать код с меньшим количеством ошибок.
В тот период начался бум создания языков программирования — Python, Java, PHP… Юкихиро Мацумото поставил своей целью сделать язык программирования не только удобным, но и приятным — и Ruby до сих пор остается одним из самых красивых языков программирования. Поначалу Ruby не встретил большой популярности: хотя его документация была переведена на английский ещё в 1997 году, он долгое время оставался малоизвестным японским языком программирования. Всё изменилось в 2006 году, с появлением фреймворка Ruby on Rails.
[spacing size=”15″]
По теме:
[spacing size=”15″]
Фреймворк — это набор библиотек и утилит, по сути заготовка, которая позволяет писать проект не с нуля, а с уже заложенного фундамента, что, конечно, проще и быстрее. Ruby on Rails — это фреймворк, написанный на Ruby для веб-разработки, для создания сайтов.
За пару десятков лет из клуба по интересам интернет вырос в новую планетарную инфраструктуру связи. Сам по себе он довольно сложно устроен, но из-за постоянно растущего числа пользователей с этой сложностью нужно было как-то бороться. Одним из способов стала разработка отдельных специализированных языков программирования — того же PHP. В ранних системах, однако, были существенные недостатки: проблемы с информационной безопасностью, разрозненность сообществ и, как следствие, несовместимость систем друг с другом.
К 2006 году у нас было уже множество примеров того, как не нужно разрабатывать веб-приложения, а также стало ясно, какие подводные камни может встретить веб-разработчик на любом языке программирования. Как ни странно, успех фреймворка Ruby on Rails заключался в его позднем выходе на рынок. Он оказался настолько лучше и удобнее всего, что уже было на рынке, что даже необходимость учить новый язык программирования Ruby не остановила разработчиков.
[spacing size=”15″]
В чем секрет успеха Ruby и Ruby on Rails? Чем они привлекают разработчиков?
Сам я в коммерческой веб-разработке уже больше 15 лет, при этом около 10 лет я писал на PHP. Я хорошо помню момент перехода на Ruby on Rails — мне показалось, что у меня просто выросли крылья и открылось неограниченное поле возможностей.
Во-первых, Ruby on Rails — это просто инструментально-библиотечный рай. Выверенный и красивый Ruby привлекает много талантливых разработчиков, которые создают качественные и тщательно проработанные заготовки кода.
Во-вторых, в Ruby on Rails отличная развитая инфраструктура: системы тестирования, линтеры, доставки компонентов, взаимодействие с базами данных и пр.
В-третьих, работая на PHP, вы имеете дело с разными его фреймворками — Symfony, Laravel, Yii, — компоненты которых несовместимы друг с другом. В результате относительно большие сообщества вынуждены создавать, поддерживать и переписывать несколько версий одной и той же библиотеки для разных фреймворков. В Ruby on Rails разработчики уже десять лет находятся в единой экосистеме компонентов (гемов). Приходя в Ruby on Rails, вы просто попадаете в будущее. До этого будущего многим экосистемам (PHP, JavaScript) еще очень далеко, а некоторые экосистемы (Python, Java) пришли к нему лишь недавно.
[spacing size=”15″]
Чем Ruby отличается от других популярных языков программирования?
Языки C++, C#, Java относятся к единому классу типизированных объектно-ориентированных языков — грубо говоря, когда нельзя умножать яблоки на лошадей, потому что типы разные. Язык накладывает на типы ограничения, которые нужно обходить довольно замысловатыми способами, прикладывать для этого усилия. Например, когда вы захотите выяснить, сколько всего яблок нужно для всех лошадей.
Кроме того, это компилируемые языки, поэтому в результате вы получаете исполняемый файл, который процессор может читать без «перевода». Это тоже накладывает ограничения на приемы разработки — обычно программируют так, чтобы максимальное количество проблем вскрывалось на этапе компиляции, а не во время исполнения программы.
Объектно-ориентированный подход отличается от типизированных языков (C++, C#, Java). Нет типов, нет интерфейсов, некоторые паттерны проектирования просто не нужны. Для меня две эти группы языков отличаются как электропоезд и легковой автомобиль — вроде, и то и другое транспортное средство, даже задачи одинаковые решают, но с точки зрения управления они сильно отличаются.
Ruby и Python — это интерпретируемые языки программирования, в которых программу шаг за шагом выполняет интерпретатор. Для запуска программы нужно устанавливать исполняемую среду на компьютер, при этом этап компиляции отсутствует, поэтому саму программу можно отладить даже в полевых условиях.
Ruby и Python по своей философии и концепции очень похожи, отличаются детали реализации — например, преобразование объектов к логическому значению или механизм перегрузки операторов.
На данный момент Python, безусловно, более известен — во многом благодаря тому, что научное сообщество облюбовало его в качестве языка проверки гипотез, разработки математического программного обеспечения, нетребовательного к ресурсам.
Поздняя популярность Ruby привела к тому, что многие основополагающие книги, которые должен прочитать каждый рубист, были изданы очень маленьким тиражом или не переводились на русский язык вообще. Информацию найти сложно, поэтому Ruby-сообщество сейчас составляют очень мотивированные сотрудники, которые изучали язык, несмотря на дефицит обучающих материалов. В связи с этим, Ruby-коллективы обычно очень сильные — и разработчик в них быстро растет.
[spacing size=”12″]
[spacing size=”15″]
Какие известные проекты были написаны на Ruby или Ruby on Rails?
GitHub, Twitter, Aviasales.ru, Twitch, Kickstarter, Airbnb, Groupon — и множество других компаний, которые зарождались как стартапы.
Вообще Ruby on Rails — популярный инструмент для запуска и быстрой атаки рынка. Им не пренебрегают даже компании-гиганты, когда хотят проверить гипотезы или экспериментировать — например, проекты Сбера ДомКлик и СберМаркет обслуживаются Ruby on Rails. А ещё многие онлайн-школы, в том числе и сам GeekBrains, тоже написаны на Ruby on Rails.
Новый бизнес в веб-среде лучше всего начинать именно с Ruby on Rails — это самый быстрый способ вывести новую идею на рынок. Кто-то так и остаётся на нем, кто-то переходит на более производительную Java или изобретает свой собственный язык программирования (Go, Hask). С постоянно идущей от проекта прибылью делать это проще, можно нанять и содержать параллельную команду. Или можно дальше продолжать работать на Ruby on Rails, как в GitHub. Если стартап не выстрелит, то будет потрачено не так много денег и времени, как если бы он разрабатывался на Java или C#.
[spacing size=”15″]
Как и где работают Ruby-программисты? Достаточно ли Ruby-разработчиков на рынке?
Если не считать Японии, где Ruby — это почти национальный язык программирования, на котором программируют роботов, линии сборки автомобилей и встроенное ПО, во всем остальном мире Ruby — это в первую очередь веб-разработка. Причем веб-разработка на фреймворке Ruby on Rails.
Ещё в Ruby-экосистеме имеется неплохие инструменты для автоматического тестирования, однако автотестеров, использующих Python, всё-таки больше.
Что касается компаний-работодателей, то, как правило, это веб-ориентированные компании и стартапы, например, финтех-компании. Ruby также остается популярным в медийной сфере: на нем написаны Лента.ру, Медуза, life.ru и множество других изданий.
Также, из-за последствий пандемии активно стали развиваться службы доставки, школы удаленного обучения, телемедицина, в которых тоже нужны разработчики. Это относится не только к России — многие из наших соотечественников стали работать на зарубежные компании по удаленке, что только усилило кадровый голод. Для компаний это вызывает трудности, зато для кандидатов без опыта это отличный шанс сразу же устроиться на хорошую позицию.
Обычно это работа в небольшом коллективе, от двух до десяти человек. Иногда Ruby-разработчики работают и поодиночке, но, на мой взгляд, лучше иметь коллегу-партнёра, с которым можно обсудить решения и который может провести код-ревью.
[spacing size=”15″]
Чем отличаются обязанности начинающего и уже опытного сетевого специалиста по Ruby? Сколько в среднем получают специалисты junior-, middle- и senior-уровня?
Единой жёсткой градации по уровням нет, всё зависит от компании — где-то раз в полгода проводят аттестации, где-то повышают в должности после завершения больших проектов, а кому-то дают звание senior-специалиста за выслугу лет.
На мой взгляд, junior-специалист — это тот, под кого нужно подбирать задачу, чтобы разработчик победил задачу, а не она его. При этом у него обычно есть ментор, который может и должен расписать задачу по пунктам и проверить правильность выполнения в контрольных точках. В Москве junior-специалист может получать 90–120 тысяч рублей, в регионах — от 40 тысяч.
Middle-специалист — это инженер, который может решать задачи самостоятельно, при необходимости разбивая их на более простые. Зарплаты миддлов — где-то от 120 до 180 тысяч рублей в Москве, около 65–90 тысяч в регионах.
Наконец, senior-специалист может решать архитектурные задачи, проявляет инициативу по улучшению работы всей системы и проводит исследования новых технологий, поиска узких мест, устранения хитрых багов. При этом ожидается, что, когда сениору забрасывается проблема, то в следующий раз вы от него получите готовое решение. Senior-разработчик в Москве получает от 180 до 300 тысяч, при работе на западные компании ценник — от 3 до 4 тысяч долларов.
Рост от junior до middle-специалиста обычно занимает год — за этот срок разработчик должен перейти от решения детально расписанных задач к самостоятельным инженерным решениям. Рост от middle до senior-специалиста может занимать от 2 до 10 лет — всё зависит от задач, коллектива, и, конечно, от самого специалиста.
[spacing size=”15″]
Онлайн-курс для начинающих Ruby-разработчиков
[spacing size=”20″]
Реклама. Информация о рекламодателе по ссылкам в статье.
Leave a Comment