Путь от Rails-разработчика до DevOps-инженера
Любознательность, трудолюбие, упорство .
Это три основных качества, которыми, как мне кажется, должен обладать хороший специалист в любой области. Как они привели меня в мир DevOps, в том числе и на mkdev, тут и пойдет речь.
Моя проблема
Все началось с того что я занимался доработкой приложения на Ruby on Rails. Опыта у меня было очень-очень мало и потому периодически ощущался недостаток знаний, а спросить было не у кого, так как я был единственным разработчиком в конторе. Вообще, Rails, как и программирование в целом, осваивал самостоятельно по обрывкам того что нашел в интернете, так что я был как раз один из тех страдальцев, которые, вроде, что-то знают, но не знают тонкостей, того что нужно бизнесу, имеют не шибко большое представление о том как эта страшная рельса работает внутри и вообще не могут отличить Rails от Ruby. Осознавая свои недостатки было принято решение найти что-нибудь что помогло бы их исправить.
Поиск идеальной формы обучения
Начал, конечно, с популярных на тот момент (июль 2015) курсов, как, например, Rails for Zombies и ему подобным. Недостатком подобных курсов является то, что они все сделаны для людей, которые видят Rails в первый раз, а потому совсем не интересны тем кто хоть немного знаком с фреймворком. Да и вопросы тут задать некому, так что этот вариант отпал в тот же день.
Вторым кандидатом, подающим надежды, были курсы уже с живым преподавателем, с лекциями и домашним заданием. Хорошенько обдумав, пришел к выводу, что это тоже фуфло. Во-первых, придется подстраивать свой день под этот курс, потому что онлайн лекция идет в определенное время для группы. Во-вторых, темп обучения задает программа лекций и группа, на которые никак нельзя повлиять, а топтаться на одном месте из-за того что кто-то чего-то не понял мне тем более не хотелось. В-третьих, это очень дорого. На тот момент подобный месячный курс стоил от 60 000 рублей, а это неподъемная сумма для восемнадцатилетнего мальчишки, который только начинает зарабатывать деньги.
Серебряной пулей, как вы уже догадались, оказался mkdev, потому что понятие курса здесь дело десятое, платишь именно за время ментора, который отвечает на любые вопросы (хоть рабочие), подскажет направление для развития, а при желании поможет вам пройти один из доступных на сайте курсов. И для меня это очень удобно, потому что это дает мне возможность учиться тогда, когда я хочу, в желаемом количестве, а заодно и рабочие проблемы решить.
Поскольку работа с ментором подразумевает достаточно много общения с ним, я решил выяснить что же он из себя представляет, потому что отдать первые заработанные любимым делом деньги кому попало очень не хотелось. А вдруг он не умеет ничего объяснять? Так что я сел и за пару вечеров перечитал вообще все что было на mkdev и в личном блоге Кирилла. Вывод был простой: опыта у местных менторов навалом, объясняют доходчиво и развернуто. Так что я оплатил первую неделю, а после нескольких дней продлил на месяц. К слову, этот месяц обошелся мне тогда всего в 10 тысяч :) Не сравнимо с какими-то другими платными способами обучения, прада? :)
Месяц менторства
За этот месяц я наполовину прошел два курса. Почему? Потому что захотел) Изначально я начал проходить курс для взрослых, потом решил, что надо бы глянуть что там в курсе для начинающих, потому что вдруг я не знаю каких-то важных основ. Ну и тут мое любопытство еще раз сыграло мне на пользу.
В одном из заданий нужно было разобраться в Vagrant и написать Vagrantfile, который бы поднял виртуальную машину и установил в нее все необходимое для запуска и разработки Rails-приложения. Задачка предполагала, что в файле должны быть shell команды, но… Я же читал в статьях на mkdev, что есть какой-то волшебный Chef, который нужен для того, чтобы настраивать сервера. Да, сроки выполнения задачи сильно увеличились, вместо пары часов я потратил пару дней, но зато вместо одного инструмента получил опыт в двух и лучи одобрения от ментора сверху :)
Закончилось это обучение тем, что я хорошо подтянул Ruby, вооружился такими вещами как, например, TDD, нашел за пару дней более оплачиваемую работу и продолжил свое сольное плавание, периодически перекидываясь парой слов со своим ментором.
Переход от Ruby к DevOps
Периодически я поглядывал на Chef, но, поскольку не было какого-либо место для его применения (на серваки конторы меня не пускали), особо это дело не двигалось. Я почитывал всякие статьи на эту тему, что-то пробовал и понимал, что это мне куда интереснее веб-разработки.
Ближе к концу зимы Кирилл начал собирать небольшую команду, желающую делать что-нибудь не за деньги, а за опыт. Время у меня на это было, так что я ему написал и, к моему счастью, мне доверили заниматься доработкой используемого в mkdev Chef cookbook для Rails приложений.
Поскольку задания, связанные с кукбуком, не требовали срочного выполнения, можно было пуститься во все тяжкие :) В основном я занимался тестами, так что я перепробовал все фреймворки для тестирования, прикрутил их к Test Kitchen и заодно перешел с virtualbox на libvirt + kvm. А что самое главное, занимаясь всем этим пополнялись не только навыки, но и портфолио.
Примерно в это же время началась разработка имеющегося сейчас на сайте курса по DevOps, в которой я так же принимал участие, так что могу вас заверить, он полезный и интересный. Задачки там не стандартные, так что вам будет над чем голову поломать. Получив базовые навыки я решил, что пора бы уже найти себе работу в этой области.
Поиск работы DevOps-инженером
Выбирая компанию я решил поступить так же, как и при выборе mkdev, а именно, выяснить что за люди в компании работают, будет ли чему у них поучиться и какая культура царит в компании.
Через как-то время поисков я наткнулся на стажировку в Express42. За пару вечеров я собрал об этой компании достаточно инфы, чтобы понять, что хочу работать именно в ней и именно с этими людьми. Весь коллектив развивается как команда, у них много опыта, интересные проекты и достаточно свободный темп работы.
В течение недели на мою заявку ответили, прошло первое собеседование и назначили дату второго — технического. Вот тут было, конечно, весело…
Во-первых, ребята немного не справились с потоком желающих (он был гораздо больше ожидаемого) и поэтому моя заявка где-то затерялась :) Но, я просто начал частенько напоминать о себе сотруднику, который провел первое собеседование, о своем существовании, говоря, что процесс уж больно затянулся, ну и в итоге добился собеседования уже после того, как набор на стажировку был закрыт.
Во-вторых, это техническое собеседование пока было самым сложным в моей жизни. Они посмотрели все, что я делал для mkdev, а потом специально, потихоньку вывели меня на темы, в которых я практически ничего не понимаю. На них, собственно, мы и беседовали следующие полтора часа. Инженерам, кстати, довольно часто приходится рассуждать о вещах, в которых они мало что понимают, чтобы принять правильное решение при проектировании инфраструктуры или исправлении проблем, так что если вы умеете рассуждать и, что особенно важно, хорошо доносить свои мысли до окружающих, это будет вам плюсом.
Стажировка в Express42
Обучение проходило с середины мая по середину августа и это было просто нечто. В компании очень сильная инженерная культура, которая все время подталкивает тебя к саморазвитию. Внутренние митапы, презентации, постоянный обмен опытом между коллегами (а он у всех разный), вклад в opensource, вместо запиливания своих костылей. В общем, райское местечко.
Сам формат обучения схож с менторством, только менторы тут все для всех. То есть любой сотрудник может попросить помощи любого другого и он ее всегда получит. В плане темпа предоставлена полная свобода, что для меня огромный плюс. Никто не запирает тебя в рамки, что все должно быть готово через час или что за сегодня ты посмотришь только это. Нет, программа устроена так, что времени в меру хватает и на самостоятельное изучение материала, и на то, чтобы посмотреть что-то дополнительно, чем все стажеры и занимались. К концу лета голова уже просто ломилась от новых знаний, давненько такого интенсивного обучения не было. Разобрали все от Chef/Ansible до оркестрации и бизнес процессов.
По окончанию стажировки меня взяли на работу, которая от самой стажировки особо-то ничем не отличается, все так же круто, только задачи для обучения заменились задачами клиента :)
Думаю, моя история вполне показала вам, что будучи любознательным, трудолюбивым и упёртым, вполне можно стать специалистом и получить работу в хорошей компании, даже если вам всего 19 лет).
P.S А если вы выложитесь по полной, обучаясь DevOps у ментора Кирилла Ширинкина, то, возможно, вы даже успеете набрать необходимые навыки и принять участие в нашем новом наборе стажеров! Ближайший набор состоится в октябре.