Если вы хотите стать Ruby/JS программистом
Добрый день, меня зовут Галина Калашник, я — комьюнити-менеджер в днепровской компании RubyGarage.
Как и другие аутсорсеры, RubyGarage помогает западным бизнесам с разработкой веб- и мобильных продуктов. На каждом проекте у нас сидят Ruby/JS программисты, и в этой статье я расскажу, почему для веба перспективно знать Ruby/JS и как его эффективно выучить.
Почему Ruby/JS разработчики
В
● бэк-энд — Ruby/Ruby on Rails
● фронт-энд — JavaScript/Angular
● (плюс нативная разработка на iOS/Android, если нужно)
Если стоит задача собрать команду под такой типичный проект, кажется логичным и простым набрать отдельно Ruby- и JS-разработчиков. Но на деле это неудобно никому:
- разработчики вынуждены постоянно согласовывать свою работу и тратить время, чтобы понять чужой код в своем проекте
- время, потраченное на коммуникацию приводит к дополнительным расходам
- ну и менеджеры проектов вынуждены тщательнее синхронизировать работу всех участников команды
Поэтому мы сразу решили работать с Ruby/JS программистами. В перспективе от этого выиграли все, и в первую очередь сами разработчики. Теперь они обладают большим контролем над проектом, не выгорают от работы над одними и теми же задачами и получают дополнительную гибкость в своем дальнейшем развитии и карьере. А если на проекте нужно несколько таких специалистов, то они с легкостью поймут друг друга, ведь они знают одни и те же методы разработки и технологии.
Впоследствии мы обнаружили, что много компаний, с которыми мы дружим, пошли похожим путем (и мы даже стали помогли им с поиском Ruby/JS программистов, но об этом чуть ниже). Да и количество клиентов с ограниченным бюджетом и временем за последние годы только возросло.
Что должен уметь Ruby/JS разработчик сегодня
Изначально мы искали ребят, готовых написать код как бэк-энда продукта, так и для его фронт-энда. Но со временем список базовых требований вырос.
Опираясь на текущие проекты компании и экспертизу наших специалистов, количество которых выросло с 3 до 70 за пять лет, мы составили следующий актуальный портрет типичного Ruby/JS-разработчика:
— Понимает ООП и Design Patterns
Это теоретическая база, без которой Ruby/JS разработчик имеет все шансы совершить архитектурную ошибку, для исправления которой придется переписывать если не весь, то бóльшую часть кода.
— Знает не только RoR, но и Ruby
Несмотря на то, что в большинстве проектов используется именно Ruby on Rails, вопреки частым ожиданиям одного его почти никогда не хватает для решения всех возникающих перед разработчиком задач. Основательные знания самого языка Ruby — это реальная необходимость.
— Разбирается в Ruby-гемах
Большинство веб-проектов требует решения кучи тривиальных задач, и легче всего они решаются с помощью уже готовых Ruby-библиотек (тех самых гемов).
— Пишет автотесты
Практика покрытия всего кода автотестами настолько себя оправдала, что единичные тестировщики у нас в компании привлекаются только к решению нестандартных QA-задач.
— Применяет современные подходы в разработке
Имеются в виду Agile-методологии, XP-практики (TDD, BDD, planning poker), Git flow, техники программирования на Ruby и Rails, знание инструментов и т.д.
— Разрабатывает фронт-энд
Тут подразумевается наличие опыта использования HTML, CSS, JavaScript, а также знаний AngularJS и ReactJS.
Ничего экстраординарного, однако на деле все не так просто. Во-первых, найти таких специалистов безумно трудно (по крайней мере, было). Во-вторых, разработчики и команды, заявляющие о том, что используют agile-подходы и всякие best practices, часто решают задачи крайне неэффективно.
Об этом мы знаем не только понаслышке, но и потому, что к нам приходят компании с просьбой усовершенствовать имеющийся продукт. И тут почти всегда вскрывается, например, отсутствие автотестов и огромное количество code smells, оставленных предыдущими аутсорсерами, и это в итоге сильно тормозит разработку.
В общем, не найдя нужных нам специалистов на рынке, мы решили обучить своих Ruby/JS программистов.
Как стать Ruby/JS-программистом
Основная проблема, стоящая перед специалистом, пытающимся «зайти» в Ruby/JS разработку — отсутствие практического опыта. Онлайн-курсы дают только «вакуумные», т.е. оторванные от реальности и контекста задачи. В то же время, компании тоже хотят перестраховаться и без практического опыта могут вас и не взять. Если на проекте сидит недостаточно опытный специалист, то конечный продукт от этого только пострадает.
Поэтому с
Такой подход настолько оправдал себя, что спустя два года мы пересмотрели программу и увеличили количество практических примеров и заданий. Короче говоря, правда стара как мир: если хотите стать программистом, нужно много программировать.
На первый набор мы брали всех желающих. Это было ошибкой, поскольку оказалось, что обучение с нуля требует слишком многих усилий и времени.
Теперь у нас есть базовые требования к студентам, и это тот необходимый минимум знаний, которые необходимо обрести будущему Ruby/JS разработчику в первую очередь:
● базовые знания и опыт работы с HTML, CSS, JavaScript
● понимание основных принципов работы баз данных и языка SQL
● знание объектно-ориентированного программирования
● технический английский на уровне чтения документации
Для попадания конкретно на наши курсы также приветствуется знакомство с одним из серверных языков программирования (PHP, Java, С++/С#, Python, ...).
Конечная цель нашего курса — не просто обучить людей, а дать им возможность на уровне Junior-специалистов присоединиться к текущим проектам и приносить реальную ценность в разработке продукта. Именно поэтому на выходе студент получает следующее:
• Навыки программирования на Ruby
• Навыки создания веб-приложений на Rails
• Опыт разработки по TDD и BDD
• Опыт парного программирования
• Навыки программирования на AngularJS и ReactJS
• Опыт в разработке реальных проектов
• Опыт эффективной коммуникации в процессе разработки
По итогам последнего набора (весна 2016) имеем следующие цифры, которые указаны в инфографике ниже:
За период с января по март 2016 года мы получили 250 запросов на тестовое задание, но только 40 студентов смогли его выполнить в объеме, достаточном для приглашения на собеседование. Столь «жесткий» отбор объясняется тем, что мы нацелены не на набор и прокачку человека «с нуля», а выбираем людей со знаниями и пониманием принципов программирования. Почему? Потому что за полгода обучить человека с «нулевыми» знаниями до уровня специалиста в своей области не то, чтобы сложно, фактически — не реально.
Также очень часто после проверки тестового задания мы сталкиваемся с тем, что задание выполнено не в полном объеме. На этом этапе мы предлагаем список ресурсов, видеоуроки, книги для совершенствования знаний. Как правило, студенты, изучив эти ресурсы, приходят на следующий набор с новым тестовым заданием, которое отвечает нашим требованиям.
Следующий этап — собеседование: общение с целью понять мотивацию и заинтересованность человека. На собеседовании мы показываем объем работ, который нужно выполнить за время курса и количество времени, которое необходимо будет потратить на изучение нового материала (от 16 до 24 часов в неделю). Для некоторых такая загрузка оказывается серьезным препятствием и они принимают решение не в нашу пользу.
На этапе учебного процесса есть несколько причин, по которым люди уходят. Это могут быть проблемы совмещения наших курсов с работой/учебой, изменением графика, сменой места жительства, личными обстоятельствами. Таким ребятам мы предлагаем разобраться с проблемой и продолжить обучение вместе с группой следующего набора, уже без обязательного выполнения тестового задания.
Есть студенты, которые получают на курсах (еще до их окончания) достаточное количество знаний и опыта для того чтобы трудоустроиться. Решив таким образом свою основную задачу, они направляют все свои силы в другое русло, стремятся качественно зарекомендовать себя, решая рабочие задачи и, соответственно, прекращают посещать занятия.
Мы настоятельно рекомендуем не спешить уходить с половины курса, потому что по его окончанию ваша ценность на рынке труда, опыт и знания будут намного выше.
Посмотрите, в какие компании устраиваются Ruby/JS программистами наши выпускники:
В сухом остатке, стать Ruby/JS программистом — это реальный вызов. И если вы его приняли, то засучите рукава и приготовьтесь к тому, что вам придется не только учиться, но и много и упорно практиковаться. Ну а мы вам в этом всегда готовы помочь.
Прошлая статья на DOU об опыте проведения курсов: dou.ua/forums/topic/16183
Сайт нашей школы: rubygarage.com.ua
Также можете задавать мне как организатору наших курсов любые вопросы.
48 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів