Как я стал Junior Ruby developer
Я прошёл путь от «я почти ничего не смыслю в веб-разработке» до «я зарабатываю на этом деньги» за 4 месяца.
В конце 2015 года я всерьез задумался о смене профессии, мне было 25. Последние 6 лет я работал на веселой, неплохо оплачиваемой, но совершенно бестолковой работе.
Мой выбор пал на программирование → Web → Ruby on Rails. Не буду объяснять почему, я довольно много гуглил на эту тему и выбирал, что будет мне интереснее и лучше подойдет для профессиональной деятельности.
Мои навыки на тот момент составляли: HTML и Pascal в школе и несколько лабораторных на С на первом курсе в институте (я учился на энергетика). Институт я закончил, но энергетиком так и не стал.
В этой статье я постараюсь по шагам описать как я действовал, чтобы максимально быстро получить знания и навыки, достаточные для устройства на должность Junior Ruby dev. Забегая вперед скажу, что, спустя примерно четыре месяца, я прошёл три собеседования и получил все три предложения о работе.
Надеюсь это небольшое руководство поможет вам пройти этот нелегкий путь от новичка до junior'a.
Первый месяц — Знакомимся с HTML, CSS, RUBY
Первое и очень ценное, что я прочитал о Ruby on Rails была совсем небольшая книжка «Самообразование веб-разработчика». Её можно получить совершенно бесплатно здесь. Я несколько раз возвращался к ней по мере своего обучения. Отличная книга для старта.
На тот момент я всё ещё работал на своей прежней работе. Первое с чего я решил начать — это освежить свои школьные воспоминания о HTML и познакомиться с CSS. По несколько часов в день я занимался на площадке HTML Academy. Базовый курс по HTML и CSS там бесплатный. Не обязательно проходить весь курс, я прошёл где-то 85%.
Далее я познакомился с Ruby. Красивее и выразительнее язык программирования сложно представить:
- Очень классный учебник — «Learn to Program», Chris Pine. Дает отличное введение в Ruby: http://www.shokhirev.com/mikhail/ruby/ltp/title.html;
- Далее закрепляем знания на https://ru.wikibooks.org/wiki/Ruby. В процессе чтения этих книг выполняем, приведенные задания;
- Теперь самое время потренироваться с Ruby на практике. Попишем методы на https://www.codewars.com;
- Также рекомендую для пробуждения своих аналитических способностей, порешать задачки на Играх Разума. Отличный способ отвлекаться от программирования с пользой.
Второй месяц — Пробуем RAILS
Я так увлёкся изучением программирования, что решил уволиться с работы, и всё время посвятить обучению. Я был почти на 100% уверен, что через несколько месяцев смогу найти работу. Ну или на крайний случай можно всегда вернуться к прежней работе, чего я конечно не хотел.
Теперь мы знаем достаточно для знакомства с Ruby on Rails.
На этом этапе нам необходимо развернуть всё рабочее окружение. А именно — ОС Linux (я поставил Ubuntu) или MacOS (придётся попрощаться с Windows, но вы можете иметь сразу две ОС и выбирать какую нужно загрузить), Git, RVM, Ruby, Rails, редактор кода (я выбрал Sublime). Гуглите как всё это установить и ставьте последние стабильные версии.
Гуглить неизвестную информацию — должно стать одним из ваших основных навыков.
Теперь можем продолжить:
- Лучшим способом попробовать Rails — пройти это краткое введение. Отличный способ пощупать Rails и начать разбираться со структурой приложения;
- Далее я советую внимательно изучить скринкасты на hasBrains. Там вы найдете отличные уроки для новичков по Ruby, Rails и Linux;
- Теперь самое время пройти легендарное руководство по Rails от М. Хартла. Если свободно читаете на английском используйте последнюю версию.
Я советую вам пропускать все, что касается тестирования (TDD) в последнем руководстве. Сейчас тесты вас только запутают. Сосредоточьтесь на написании и главное понимании самого кода приложения. Писать тесты мы научимся чуть позже. По завершению у вас будет работающее приложение.
По мере обучения, и просто в качестве перерыва, выбирайте интересные для себя темы и смотрите записи. Там опытные программисты делятся опытом и отвечают на вопросы. Обсуждают самые разные темы. Очень полезно для новичков.
Третий месяц — Занимаемся с ментором
Мы уже хорошо продвинулись в обучении, но нам не хватает практики написания своего кода. Не того кода, который мы писали следуя туториалам, а именно своего. С нуля до работающего приложения на сервере. Здесь мне очень помогли занятия с ментором на mkdev.me. Это оказалось самым весомым вкладом в моё самообразование. И именно этот код смотрели работодатели, прежде, чем пригласить меня на собеседование. Хороший практический опыт правильного кода + научитесь тестировать. На эти занятия у меня ушёл ровно месяц.
Автор этой статьи учился у наших менторов по программированию на Ruby on Rails Нанять
После курса рекомендую просмотреть эту книгу «Мир Rails». Для меня она оказалась очень полезной. Отличное изложение материала, написана для новичков в Rails.
Вообще, по ходу обучения, я рекомендую возвращаться и просматривать прочитанные ранее материалы, т.к. когда-то непонятные моменты становятся понятны с получением новых знаний.
Четвертый месяц — Устраиваемся на работу
Теперь самое время составить резюме и направлять его работодателям. Не забудьте добавить ссылку на GitHub со своим проектом. Я направлял отклики + короткие сопроводительные сообщения на вакансии hh.ru. Не только на junior вакансии, но и просто на Ruby on Rails вакансии. Поверьте, многим нужны толковые Junior Ruby разработчики, даже без коммерческого опыта. Можно также поискать вакансии на прямую — на сайтах компаний.
Я направлял отклики в своём городе — Новосибирске, а также на вакансии в других городах, с пометкой в сопроводительном сообщении о том, что рассматриваю варианты удалённой работы.
Периодически вакансии для junior'ов появляются в этой гугл-группе Ruby on Rails и на Ruby Jobs.
Сейчас самое время подготовиться к собеседованию и подтянуть теорию. Гуглите запросы вроде: «собеседование junior ruby». Убедитесь, что вы понимаете на базовом уровне: парадигмы ООП; как работаю сети; протоколы HTTP, TCP, IP; что такое DNS; как работают связи в СУБД, как писать простые SQL запросы, зачем и как работают индексы в БД; какие основные структуры данных — хэш-таблицы, списки(массивы), графы. Вопросы на эти темы были во всех моих интервью.
Начните читать книги по проектированию:
Изучите более глубоко Ruby. «Язык программирования Ruby» — отличная книга от создателя Ruby - Matz'a.
Я еще не упомянул о том, что программисту необходимо владеть английским. Это наверное и так все знают. Вот некоторые книги, которые я сам сейчас изучаю:
- https://www.amazon.com/Refactoring-Ruby-Addison-Wesley-Professional/dp/0321984137
- http://www.confidentruby.com/
- https://www.ozon.ru/context/detail/id/3888471/
Спустя неделю, после направления откликов, я начал получать приглашения на собеседования. Одно я проходил по скайпу в московский стартап, и два — в офисах крупных новосибирских компаний. Одно приглашение на работу я получил через пару дней, одно через 10 дней и одно после выполнения тестового задания — через 2 недели.
Я уверен: после хорошего самообразования и занятий с ментором вы скоро сможете найти работу junior ruby разработчиком. Не раздумывайте — действуйте, да прибудет с вами удача!
Александр Мешков/Merff/июль 2016