Главная | Все статьи | Истории успеха

Из электромеханика в программиста: как проекты на Хекслете и опенсорс помогли мне стать разработчиком

Время чтения статьи ~11 минут
Из электромеханика в программиста: как проекты на Хекслете и опенсорс помогли... главное изображение

Всем привет! Меня зовут Сергей, мне 28 лет, живу в Чусовом — небольшом городе в Пермском крае. Мой путь в программирование был интересным и насыщенным. Я ушел с работы на железной дороге, сделал четыре проекта на Хекслете, завалил три собеседования, но в конце концов прокачался как программист и получил первую работу в крутой компании.

Профиль Сергея на Хекслете со всеми пройденными курсами можно посмотреть здесь, а код выполненных проектов — на GitHub

Программирование в армии и работа на железной дороге

В школе моими любимыми предметами были математика, физика и информатика. По ним в старших классах и профилировался, участвовал в олимпиадах, но каких-то выдающихся результатов не добивался, просто нравилось. Тогда же я написал первые строчки кода на Pascal — просто в рамках школьной программы.

После школы я поступил в Уральский Государственный университет путей сообщения в Екатеринбург на специальность «Электроснабжение железных дорог». Учеба в университете давалась легко, я без особых проблем закончил университет с красным дипломом. Кроме небольших программок на Delphi и ассемблере, которые входили в программу обучения, к программированию я не возвращался.

После университета я вернулся в родной город работать электромехаником на железной дороге, но через год уехал за три тысячи километров в Красноярский край на срочную службу в армии. Там довелось поработать с автоматизацией отчетности в Excel: вместе с сослуживцем мы с помощью Excel VBA и Access придумали и реализовали программу для автоматического формирования отчетов, которые раньше заполнялись вручную карандашами и ручкой. Мне понравилось этим заниматься, у меня начали зарождаться мысли о переходе в сферу IT.

После армии я вернулся домой на прежнюю должность, а через пару месяцев получил должность начальника технического отдела, на которой проработал следующие 3,5 года. За это время я понял, что дальше расти в этом направлении не особо хочется, устал от специфики железной дороги и вернулся к мыслям об IT.

Путь к Хекслету

В начале 2021 года я решил серьезно изучать программирование, меня привлекала сфера веб-разработки. Я покопался на Udemy, нашел первый понравившийся курс на английском языке и начал по вечерам после работы его проходить. Заодно записался на курсы английского. К началу лета осилил курс, но понял, что знаний все равно недостаточно для самостоятельной работы: они довольно поверхностны и слабо применимы. Решил поискать более серьезные курсы. Стал читать статьи и форумы, попробовал бесплатную часть по фронтенд разработке на Яндекс.Практикуме. В целом впечатление было положительным, но чего-то не хватало, и вот где-то в комментариях на Хабре я приметил Хекслет. Начал проходить «Введение в программирование» и понял, что это именно то, что мне нужно. Практически сразу приобрел групповой формат обучения по профессии «Фронтенд-разработчик».

Процесс обучения на Хекслете привлек тем, что основной материал можно изучать самостоятельно в любое время, в удобном темпе, есть классная веб IDE на все упражнения с автоматическими тестами. Все это дополняется еженедельными вебинарами с наставником и возможностью пообщаться в чате группы и комьюнити Хексета.

Курсы Хекслета серьезные, дают фундаментальные знания и требуют вдумчивого прохождения. Совмещать обучение с работой было довольно непросто, особенно учитывая нередкие переработки. Поэтому учился я по большей части «залпом» во время отпуска и больничных. Профессию удалось пройти за три таких «залпа» по 2-3 недели, но в общей сложности все заняло примерно положенные по программе восемь месяцев.

Помимо Хекслета я еще периодически читал Хабр, смотрел рекомендованные видео на YouTube, читал книги «Идеальный программист», «Совершенный код», «Грокаем алгоритмы», «Вы не знаете JS», «Профессиональный TypeScript», начал СИКП.

Читайте также: Лучшие и важные книги для программистов любых направлений. Рекомендуемые книги от Хекслета

Проекты заставили попотеть

Я прошел все четыре проекта из профессии «Фронтенд-разработчик» и первый проект из профессии «Верстальщик». Это была самая интересная часть обучения, где наконец-то можно было попробовать полученные знания на практике, неплохо их дополнить, а главное — получить обратную связь от наставника и пройти несколько итераций ревью.

Самыми легкими мне показались первый и третий проекты: небольшое консольное приложение с математическими играми и RSS-агрегатор. Особых сложностей с ними не возникло, и сдал я их после 3-4 проверок.

Второй проект — Вычислитель отличий между двумя JSON/YML файлами — заставил попотеть над алгоритмом расставления пробелов при форматировании, но в итоге я сдал его после трех проверок.

А вот четвертый проект, оказался самым проблемным, хотя и самым интересным, поскольку требовал применения всех полученных знаний и даже больше. Пришлось хорошенько покопаться в документации React и Socket.io. В период его прохождения успели поменяться некоторые требования, из-за чего пришлось переписать неплохой кусок проекта. У группы сменилось три наставника и все три успели перевьюить мой проект, что вылилось в семь итераций. Также несколько раз возникали на первый взгляд необъяснимые проблемы с прохождением автотестов, одна из которых оказалась спрятана прямо в них. В общем, четвертый проект прям круто прокачал.

Три попытки найти работу и выводы из неудач

С поиском работы я тянул до последнего, пока ко мне в личку не пришла Алиса из карьерного трека. К этому времени у меня уже подходил к завершению четвертый проект. Я сделал резюме на Hexlet CV, поправил по замечаниям и начал потихонечку смотреть вакансии, а Алиса предлагать компаниям мое резюме.

Первое предложение поступило в Telegram, от рекрутера, который увидел мое резюме на Hexlet CV. Это была веб-студия, делающая онлайн-курсы на некой платформе. Мне предложили тестовое задание, я начал его делать, но мне не понравилась платформа, на которой предполагалось работать. Ради интереса я все же его закончил, отдал и благополучно забыл.

Через некоторое время я заявился на стажировку в Kaiten и получил приглашение на собеседование. Это было по сути мое первое в жизни собеседование. В целом все прошло неплохо, но волнение и малый опыт в решении задачек взяли свое, хотя я и отлично понимал алгоритм решения.

Было три задачки:

  1. Классическая fizzBuzz, где надо было выводить в консоль числа, причем на четных — fizz, на нечетных — buzz, а на кратных 15 — fizzBuzz. Эта задачка решилась очень быстро и без проблем.
  2. Написать функцию flatten для разворачивания вложенных массивов любой вложенности, где я начал тупить уже у самого решения и так и не довел до конца.
  3. Написать функцию, которая извлекала бы из объекта свойство по переданному строковому пути и в случае, если такого свойства нет, отдавала бы переданное третьим параметром значение. На этой задаче случился аналогичный тупняк в самом конце, как и на предыдущей.

В итоге, конечно, со стажировкой я пролетел :)

Вскоре после первого собеседования пригласили на собеседование в 0point. На нем было два этапа. На первом просто пообщались за жизнь, узнали ожидания. На втором надо было написать React-компонент, который рендерил табличку с определенными полями из массива товаров и прикрутить к ней сортировку с некоторыми хитростями. В этот раз с задачей я справился, все прошло хорошо, и мы договорились о сотрудничестве. К сожалению, дальнейшая работа не сложилась, поскольку заказчик проекта решил провести свое техническое собеседование для нашей новоиспеченной команды и не впечатлился.

После этого я решил, что стоит еще прокачаться перед дальнейшим поиском, ушел с работы на железной дороге и начал участвовать в OpenSource проекте hexlet-sicp и параллельно взял заказ на переработку сайта небольшого интернет-магазина.

Читайте также: Как выбрать свой первый опен-сорс проект: инструкция от Хекслета

После первого принятого пулл-реквеста в hexlet-sicp я начал ощущать себя более уверенно как разработчик. Задача была перевести редактор кода в упражнениях с liwewire на React. Тут я получил опыт разворачивания проектов, работы с гитом в проекте, где ты не единственный разработчик, поработал немного с PHP, Laravel, ну и, конечно, попрактиковал React с JavaScript. Я всем советую начать участвовать в OpenSource как можно раньше. Это может показаться страшно, но страх пропадет, как только вы попробуете развернуть проект и что-то в нем написать. Также по любым вопросам вам всегда помогут в Слаке. Так можно сэкономить уйму времени и гораздо увереннее чувствовать себя на собеседованиях.

Небольшой опыт фриланса также добавил мне уверенности, поскольку я увидел вживую к чему приводит неправильный подход к архитектуре и пренебрежение хорошими инженерными практиками. Проект, с которым я работал, был написан на PHP в Bitrix, также частично использовался JavaScript с JQuery. Разобраться в творящемся хаосе было непросто, пришлось переписать практически весь проект просто для того, чтобы с ним можно было дальше работать, но в итоге получилось довольно неплохо. Сайт был приведен к более современному виду и адаптирован под мобильные устройства, довелось поработать с переносом проекта на другой хостинг, с настройкой почтового сервера, с установкой SSL сертификатов.

Первая стажировка и первая работа

Где-то в апреле-мае 2022 года я увидел сообщение о наборе студентов Хекслета на стажировку в Контур. О компании ранее слышал лестные отзывы от знакомых, и даже хотел записаться на их курсы. Решил попробовать, отправил резюме, получил приглашение на собеседование. Перед техническим собеседованием надо было записать видеоинтервью о себе по перечню вопросов. На собеседовании сначала поговорили о моем обучении и опыте, задавали вопросы по видеоинтервью, предложили несколько задач на чтение и понимание кода и в конце одну задачу. Надо было написать функцию, которая возвращала бы количество полных колод, которые можно составить из переданного массива игральных карт. Собеседование прошло отлично, в этот раз задачу удалось решить без проблем. Я даже обсудил несколько вариантов решения, и у меня осталось время позадавать вопросы о компании. Через несколько дней после собеседования я получил приглашение на стажировку в Новосибирский офис разработки.

Стажировка длилась два месяца. Уже на первой неделе удалось довольно быстро влиться в работу и начать выполнять задачи спринта. В компании хорошая инженерная культура, приятно читать и писать код. И даже несмотря на то, что я раньше не работал с TypeScript и MobX, которые используются в проектах моей команды, благодаря полученным на Хекслете знаниям процесс вкатывания прошел практически незаметно и приятно. А с помощью крутого наставника Саши можно просто горы свернуть. От компании, команды и работы я в восторге, стажировка пролетела незаметно. По итогу я остался работать в команде уже в качестве джуна.

Сейчас я работаю младшим инженером-программистом в команде Сервисов взаимодействия клиентов с Контуром, где и стажировался. Занимаюсь фронтендом в таких проектах как:

  • Центр поддержки (виджет, через который можно оставить обратную связь, написать в чат техподдержки, заказать обратный звонок, проверить статус обращения и т. д.)
  • Чат с техподдержкой
  • Соответствующие административные панели.

Стек технологий — TypeScript, React, MobX. Продолжаю профессионально развиваться в текущих проектах, читать статьи и книги, начатые еще во время обучения на Хекслете.

Несколько мыслей и советов

Я считаю, что главное — получить фундаментальные знания основ программирования и архитектуры. Язык можно выбрать любой, потому что технологии могут меняться, но фундамент остается прежним. Нужно не подстраиваться под какой-то конкретный язык/фреймворк, а выбирать их исходя из того, что лучше подходит для решения задачи. Конечно, начинать стоит с актуального стека технологий, которые требуются в вакансиях, чтобы получить первый опыт работы.

Софт-скиллы — также очень нужная штука. Надо уметь и, главное, не стесняться задавать вопросы, как можно больше общаться, обсуждать задачи, не замыкаться. Полезно уметь адекватно оценивать свое время и возможности, но это придет с опытом.

Не стоит зацикливаться на возникающих проблемах, иногда стоит отвлечься на некоторое время. Если застряли над какой-то задачей, можно пойти посмотреть кино, почитать художественную литературу, поспать, зачастую решение может прийти даже во сне (у меня не раз такое было), не надо бояться задавать даже глупые вопросы — глупо будет этого не сделать.

Главное — иметь желание. Если действительно хочешь что-то изменить (например, профессию), то все получится, но если желания нет, то ничего не поможет.

Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях

Аватар пользователя Сергей Каликин
Сергей Каликин 23 сентября 2022
18
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 183 ₽ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 25 апреля
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 25 апреля
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 25 апреля
профессия
от 9 900 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
в разработке
Старт 25 апреля
профессия
Верстка с использованием последних стандартов CSS
5 месяцев
с нуля
Старт в любое время