Привет, Хекслет! Меня зовут Никита, мне 24, я из Владивостока. Я хочу вам рассказать о том, как я наконец-то завязал с удручающими учёбой и работой и нашёл то, что заставляет мои глаза гореть.
До Хекслета
Мне всегда с лёгкостью давались все технические науки, так что я был уверен почти наверняка, что свяжу свою жизнь с какой-то из них. К сожалению, за все школьные годы в меня так и не заложили знания о том, как правильно выбрать свои будущие учебную специальность и работу, поэтому, как позже выяснилось, я прогадал.
Я поступил на инженерное направление, которое изначально казалось мне очень интересным, но в котором я сильно разочаровался в процессе учёбы. «Инфокоммуникационные технологии и системы связи» — звучит, согласитесь? Не знаю, чего конкретно я от него ожидал, но в целом было гораздо менее интересно и менее практично, чем в самых слабых моих ожиданиях. 4 года университета пролетели довольно быстро, последний семестр был даже более интересным, чем все предыдущие, поэтому я дал вузу ещё один шанс и пошёл в магистратуру на то же направление. В итоге уже во втором семестре я понял, что хожу на все пары через силу, не получаю от них никакой практической пользы и удовольствия, поэтому я решил уйти.
Наступили месяцы свободы. Что во время учёбы, что после я подрабатывал в интернете, как мог, денег на неприхотливую жизнь хватало, поэтому я не парился и, так сказать, чиллил — пока в один прекрасный день не понял, что перспектив у такой жизни нет и надо что-то менять, чтобы двигаться дальше.
В этот момент озарения я открыл для себя прекрасную площадку, о которой почему-то никогда ранее не слышал, — hh.ru. Долгий просмотр вакансий привёл меня к следующей мысли: «А почему бы не стать программистом?». Я смотрел все местные вакансии, анализировал зарплатные вилки и выписывал требуемые для работы навыки. На тот момент я даже не знал, что такое бэкенд и фронтенд, так что любые странные буквосочетания вроде JS, SQL и PHP вызывали у меня неконтролируемый страх. Однако каким-то чудесным образом я решил выбрать PHP своим первым языком — и на этот раз не ошибся.
Как и многие люди, я стал искать бесплатные источники информации, листал бесчисленное множество курсов, но к тому времени не определился, с чего начать. Буквально под каждым курсом писали, что это полная туфта, но вот под одним из них был комментарий примерно следующего содержания: «Курс – полная туфта, лучше посмотри курсы на hexlet.io». Я купился.
Во время Хекслета
Сам Хекслет меня подкупил в первую очередь тем, что я мог заниматься, когда мне удобно, а не когда преподаватель назначит лекцию; что я мог не ждать старта курса, а начать прямо сейчас. Так я и сделал.
Взяв за основу план профессии PHP-программист, я создал Google-таблицу, в которой набросал примерный план учёбы, состоящий из последовательности курсов, поэтому в любой момент времени я знал, каким будет мой следующий этап. Первые курсы меня очень порадовали, потому что они не были напрямую связаны с написанием кода, а просто рассказывали общие вещи – про жизнь программиста, про веб-разработку и программирование в целом. Тебя сразу не бросают в пучину написания кода, а знакомят с тем, чем ты будешь заниматься — это очень радует.
Читайте также: Зачем изучать PHP: рейтинг, перспективы, сферы применения
Маленькими шагами я наконец-то добрался и до написания кода. Как и рекомендует Хекслет, для получения базовых знаний о языках программирования я пошёл на Code Basics, где решил пройти уроки по HTML, CSS, JS и PHP. Местами было сложно, но очень интересно.
Я втянулся, поэтому дальнейшие курсы на самом Хекслете пошли как по маслу. Примерно тогда я наконец-то начал понимать многие программистские мемы и стал чувствовать, что мыслю несколько иначе, чем раньше. Так я, внезапно для самого себя, подобрался к первому проекту, где надо было реализовать набор математических мини-игр в консоли. Каждый новый шаг в проекте пугал всё сильнее, но каким-то образом получалось заставить всё работать, хотя приходилось много читать обсуждения под этапами проектов и, каюсь, смотреть в репозитории уже сданных проектов других студентов. Ещё в школе во время написания сочинений по русскому и литературе я всегда первым делом изучал сочинения из интернета. Ни разу в жизни я их нагло не списывал, но это отлично помогало уловить примерную структуру и общие идеи и мысли, за которые ты цеплялся, делал первый шаг и в итоге у тебя возникал свой собственный поток идей и мыслей – так же и в программировании.
К слову сказать, у меня были лучшие сочинения в классе :) Да и в университете нам часто говорили: «Хороший (в нашем случае инженер) – это не тот, кто всё знает, а тот, кто знает, где это найти». Эта мысль, опять же, отлично ложится на программирование. Бывает, смотришь в чужой репозиторий, видишь что-то интересное, из-за чего у тебя возникает мысль: «Так можно было?!». И с этой мыслью ты бежишь в свой проект. Поэтому, чтобы доказать самому себе, что понял тему, я всегда старался в любом проекте сделать больше, чем надо, — в случае первого проекта это ещё одна мини-игра. В итоге сдача проекта была большим праздником.
Так пролетали курс за курсом, испытание за испытанием. Самое приятное, что я чувствовал месяц от месяца — я действительно становился лучше, я умею то, что не умел месяц назад. Настолько явно ощущаемый прогресс — это новое чувство, его дало мне занятие программированием.
Второй проект пролетел для меня совсем незаметно, а вот третий уже заставил помучиться. Оказалось, что для его завершения стоит пройти курсы, которые по порядку шли после самого проекта, иначе ориентироваться в новом для себя инструменте — фреймворке Laravel – было практически невозможно. Чтобы почувствовать себя более комфортно, я решил пройти курс по Laravel на Udemy. Потратив на него несколько недель и по ходу написав простой бложик, я вернулся к проекту и уже без такого серьёзного непонимания завершил его, хотя Кирилл Мокевнин — СЕО Хекслета и на тот момент ещё ментор, проверяющий проекты, — и изрядно помучил меня с конечными автоматами. Четвертый проект завершился ещё быстрее. Помню, как гордился тем, что написал его буквально за 3 вечера. Со сдачей этого проекта и завершилось моё обучение на Хекслете. Я закончил все проекты, завершил все курсы и испытания. От начала профессии до её конца прошло порядка 6,5 месяцев, но, в отличие от многих других студентов, это не было концом моего учебного пути.
После Хекслета
Рассматривая исключительно профессию PHP-программист, могу сказать, что Хекслет даёт прекрасную базу, но за рамками этой базы знаний несколько не хватает, как и мне не хватило знаний по Laravel. В отличие от многих, кто уже даже после первого сданного проекта шёл работать, я не чувствовал себя уверенно и не хотел быть обузой в команде, поэтому продолжил своё обучение, на этот раз выбрав для себя официальную платформу, рекомендуемую документацией Laravel — laracasts.com. И хотя там нет непосредственно практики, как на Хекслете, я просто смотрел курсы, где местный Кирилл Мокевнин — Jeffrey Way — писал код и рассказывал о разных интересных штуках в инфраструктуре PHP и Laravel. У меня получалось уловить общие идеи и реализовывать их по-своему, никогда тупо не копируя код преподавателя. В результате, потратив ещё четыре месяца, и просмотрев все местные курсы, я наконец-то стал уверенно ориентироваться во фреймворке. Также за это время моё портфолио пополнилось более серьёзными проектами: копией Twitter, своеобразной TODO-доской, крупным блогом с множеством разных фишек и консольной утилитой по мониторингу товаров в сети BestBuy, взаимодействующей с их API. Мне кажется, подобных крупных проектов очень не хватает Хекслету.
Читайте другие истории успеха: Как опен-сорс и Codebattle помогли мне найти работу
Казалось бы, тут-то уже можно было закончить с учёбой, но нет. В Telegram Хекслета, где обитает огромное количество самых разных разработчиков, опубликовали информацию о наборе в «Летнюю Школу» от компании Xsolla — туда можно было попасть на бэкенд-направление. Я сделал довольно простое тестовое задание и прошёл. Впереди был месяц неплохих лекций про БД, архитектуру, CI/CD, заполнение резюме и многое другое. Но, что самое интересное, весь следующий месяц был «Гараж» — классная задумка, пропитанная духом разных американских стартапов. Из выпускников «Летней Школы» собирались команды, каждая из которых состояла из 6-8 человек (менеджер продукта, дизайнер, продуктовый аналитик, бэкенд-разработчик, фронтенд-разработчик, тестировщик, дата-аналитик), имитируя разработку реального продукта с использованием SCRUM-методологии. Мы создавали B2B-приложение для оптимизации процесса обучения разработчиков внутри компании, где я занимался написанием его API и документацией для него, а также проектированием базы данных. По пятницам мы встречались, проводя презентацию, где каждая из команд рассказывала, чего добилась, какие проблемы возникали у неё на пути и как они были решены. В результате проект стал апогеем моего обучения, в нём я применил все свои знания и использовал наилучшие известные мне практики. К слову сказать, там было больше 200 тестов и покрытие кода тестами составило 96%, что очень даже неплохо. Это был незаменимый опыт.
Количество «галочек» (то есть пройденных курсов) в моей Google-таблице перевалило за сотню. Я наконец-то почувствовал: «Я готов».
Поиск работы
Я дал себе небольшой месячный перерыв, после чего начал формировать резюме, в чём мне помог один из проектов в инфраструктуре Хекслета - cv.hexlet.io. Я изучал вакансии, параллельно готовясь к собеседованиям, участвуя в вебинарах и смотря разнообразные лекции. Самостоятельно свое резюме я не рассылал — после его публикации на основных платформах мне и так стабильно раз в несколько дней прилетали различные предложения на почту, но почти ото всех я отказался по тем или иным причинам. Однако вакансия в одной из местных компаний меня всё же зацепила, не без замечаний я сделал их тестовое на понимание принципов SOLID, где надо было реализовать хитрый санитайзер. Результат их не до конца, но устроил, и мне сделали оффер, который я принял. Получилось, что я так и не прошёл ни одного технического собеседования и не отправил ни одного резюме.
Работа
Вот уже пятый месяц, как я работаю в этой компании на удалёнке, (пару раз, как и положено, я смог положить прод) и пока я не пожалел. Самое ценное, что я здесь получаю, — опыт работы с реальными боевыми задачами, взаимодействие с командой и помощь от опытных разработчиков. Создание админок, написание API, исправление хитрых багов, проектирование БД, интеграции с разными сервисами – это далеко не полная часть того, чем приходится заниматься. Что самое важное, я всё ещё каждый месяц чувствую, что узнаю что-то новое, и это прекрасно. Однако сложно было привыкнуть к использующимся в компании инструментам, к новому код-стайлу, к тому, что меня бьют, когда я пишу в функциональном стиле D: С этим приходится смириться.
И ещё мне очень нравится, когда выдаётся возможность что-то написать с нуля, а не использовать уже готовое. Например, недавно мне выдалось писать каталог для сайта. Суть такова: есть категории, у каждой категории могут быть подкатегории с бесконечной вложенностью, в каждой категории есть товары. Нужно выводить дерево категорий с дочерними категориями и количеством товаров в каждой категории, где учитывается как количество товаров в самой родительской категории, так и количество товаров во всех подкатегориях. В итоге у меня получилось написать обработчик для всего этого буквально в несколько строк, с применением рекурсии, как и завещал Хекслет! Казалось бы, такая бытовая задача, но красивое (по-моему) её решение меня очень порадовало. Такие маленькие приятности очень скрашивают периодическую рутину.
На данный момент я решил вернуться на Хекслет, чтобы освежить свою память и закончить недавно появившиеся проекты, а также начать изучать второй язык.
Спасибо, что ознакомились с моей историей становления разработчиком :)
Советы начинающим разработчикам
— Практика — это самое важное. Все теоретические курсы и видео, что вы просмотрите, не будут ничего значить и ничего вам не дадут, пока вы не сядете ручками писать код. Хекслет даёт много практики, и это отлично.
— В какой-то момент до начала учёбы на Хекслете или в самом её начале я накупил кучу курсов на Udemy, которые отложил на потом. Вспомнил я о них только после того, как прошёл существенную часть профессии. Я открыл эти курсы и ужаснулся – в них было запихано просто ВСЁ, темы были раскрыты максимально поверхностно, код был ужасным и вызывающим бурю негодования и вопросов. Было жаль потраченные деньги, но урок был усвоен: не тратьте деньги на какие-то курсы, не имея минимальной компетенции в данной сфере. Даже с минимальными знаниями вам будет проще понять, подходит вам данный платный курс или нет.
— Будучи начинающим разработчиком, не идите туда, где вы будете единственным в команде, — так вы только закрепите свои ошибки. Код-ревью – это одна из важнейших частей развития.
— Будьте готовы всегда учиться: момент, когда вам будет казаться, что вы всё знаете, едва ли когда-то наступит.
— Ведите публичный профиль на Github — мне до сих пор присылают вакансии, находя мой профиль, хотя я уже не нахожусь в поиске работы.
— Git — это важно! Научитесь создавать пулл-реквесты, чинить конфликты и работать с ветками до того, как приступите к работе в команде. Поначалу починка мердж-конфликтов занимала у меня кучу времени, потому что ранее с такой проблемой я не сталкивался. Open Source может помочь вам в прокачке этого навыка.
Каждый месяц на Хекслете стартует групповое обучение в 10 различных направлениях. Посмотреть программы этих профессий можно здесь.