Из таксиста в веб-разработчика

История о том, как освоить фронтенд с нуля и начать сотрудничать с Практикумом.

Максим Никитин, выпускник курса «Веб-разработчик» в Яндекс.Практикуме, рассказал, почему решил заняться разработкой и как находил время на учёбу между сменами в такси.

Учёба в техникуме и работа в такси

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

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

Два года я работал в такси, зарабатывал, на удивление, неплохие деньги. Всё это время я думал, что же делать дальше, но у меня не было вообще никаких идей. И вот я пришёл к мысли, что мог бы освоить какую-то профессию, для которой не надо учиться пять лет в институте. Сначала думал про бизнес-аналитику, но у меня не было высшего образования — те курсы, которые я находил, больше походили на переквалификацию, чем на обучение профессии с нуля.

Стал искать, где ещё можно поучиться — нашёл курсы Практикума по аналитике данных и Data Science, прошёл вводный курс. Мне очень понравилось, и я захотел дальше изучать эту тему, пойти на платный курс, но к ближайшему старту не успел собрать денег. А через месяц получил сообщение от поддержки Яндекс.Такси, что есть возможность бесплатно учиться, и сразу подал заявку. В то время для водителей вводили уровни внутри сервиса — бронза, серебро, золото и платина; и на верхних двух уровнях можно было воспользоваться такой акцией. Кажется, это было тогда сделано впервые, и никто из других сервисов такого ещё не делал. Мне повезло, и я смог записаться на учёбу.

Выбор новой профессии и учёба в Практикуме

Сначала выбрал Data Science, уже прошёл бесплатную часть, начал читать что-то по математике, готовился. До курса оставалось три недели, и я решил посмотреть пробные уроки на других направлениях — попробовал веб-разработку и засомневался, не выбрать ли мне этот курс.

На тот момент я успел поговорить со многими знакомыми из ИТ, и мы пришли к выводу, что в data science будет тяжело идти совсем без опыта. А в веб-разработке стартовать проще, поэтому в последний момент я написал в поддержку Практикума и попросил перевести меня на курс по вебу. В моей группе было много ребят из такси, но до конца обучения дошли только трое. Возможно, кто-то ушёл в академ и продолжил учиться позже — буду рад, если так и есть.

Учиться было очень интересно — всё было в новинку, потому что никакого опыта в ИТ я до этого не имел. Сложности были связаны только со временем — я продолжал работать в такси, пять дней в неделю по 12 часов. Потом начался жёсткий JavaScript с объектно-ориентированным программированием, асинхронностью и прочим, параллельно я взялся за тестовое на верстальщика, и потратил время, чтобы его сделать. В общем, пропустил мягкие делайны и сильно отстал по учёбе, а потом пришлось нагонять — в этот момент было тяжело, но к жёсткому дедлайну я всё успел и со всем разобрался.

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

Самым сложным для меня был блок с углублёнными знаниями по JavaScript — там мы разбирали концепции, которые могут пригодиться в работе. Это было тяжело для понимания. Например, мне сложно давалось понятие контекста, его привязки к функциям, и в целом, как это всё работает. Если что-то было непонятно — сначала искал ответы сам, потом обращался к наставникам. Я и сейчас не могу сказать, что абсолютно всё понял про JavaScript, поэтому временами возвращаюсь и перечитываю некоторые уроки.

Поиск работы

Когда на курсе закончился блок по вёрстке, нам сказали, что теоретически можно уже попробовать устроиться верстальщиком — я составил резюме и откликнулся на несколько вакансий. Сделал одно тестовое — оно было очень большим, неделю его ковырял, — в итоге меня не взяли, и больше я не пытался устроиться верстальщиком, решил доучиться и сразу искать вакансии для разработчиков.

Первую работу я нашёл ещё на этапе диплома в Практикуме. У меня было открыто резюме на HeadHunter, и мне в Телеграм написала эйчар, скинула тестовое на React. Я справился с заданием, пригласили на собеседование и потом взяли джуном — это позиция младшего разработчика. У той компании проект был написан на React + TypeScript, а я TypeScript не знал совсем. Тем не менее, меня взяли, и я уже на работе его освоил. Студенты обычно переживают, что в вакансии много требований, и им страшно, что они не соответствуют. Но правда в том, что даже без знания одной из основных технологий проекта можно получить работу.

Несколько месяцев я отработал в этом проекте, а потом мне написал друг, с которым я в самом начале советовался куда пойти учиться. Друг спросил, знаю ли я TypeScript — оказалось, что в его компании уходит фронтендер, и я могу попробоваться. Тестовое задание было на TypeScript, но без React — я в такой комбинации никогда не работал. В частности, никогда сам не настраивал конфиг и не использовал нативные браузерные типы. Но гугл и несколько вопросов к бывшему наставнику из Практикума сделали своё дело — я написал код, и мне прислали оффер.

Работа фронтендером

Сейчас я работаю в b2b-секторе, мы делаем CRM для компаний — помогаем отслеживать покупки, создавать целевые рассылки по метрикам. Например, в магазине обуви остались угги 37 размера, и мы можем сделать выборку среди покупателей: отправить письма только тем, кто покупал этот размер и похожую модель в позапрошлом году, а в прошлом году — не покупал. Получается, клиент попадёт в свою аудиторию, и ему не надо спамить всем сразу.

Я занимаюсь фронтендом, работаю на позиции мидл-разработчика. На этом проекте солянка из разных технологий — здесь и VanillaJS, и jQuery, новые модули пишем на TypeScript, есть один блок на React, и один на Svelte. Параллельно я работаю в Практикуме — вхожу в команду контента веб-факультета и помогаю готовить материалы для курса по React, это современный стек.

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

Иногда прагматичный расчёт лучше, чем слишком сильный восторг от профессии на старте. Когда я только прошёл бесплатный курс, то попал на обновление программы — в вводной части была только вёрстка, и команда ещё не успела добавить новые блоки по JavaScript на замену старым. Программа бесплатной части мне понравилась, но восторга не было — я просто отдавал себе отчёт, что с такой профессии мог бы начать в ИТ. Сейчас мне очень нравится то, чем занимаюсь, это стоило всех усилий.

Сотрудничество с Практикумом

В команду Практикума я попал после пары случаев во время учёбы. У меня совсем не было свободного времени, но я специалист по тому, чтобы ввязаться в какие-нибудь дополнительные активности. Например, взялся писать конспекты по JavaScript для студентов в Notion. К тому моменту, я уже отучился полгода, был достаточно опытным для помощи другим — как старший студент, я помогал наставнику отвечать на вопросы студентов из нового потока. На нашем курсе уже были конспекты по вёрстке, и команда искала человека, который помог бы так же компактно оформить знания по JS. Ничего не надо было самому придумывать — мне просто дали доступ к программе курса, чтобы я надёргал из разных блоков важные тезисы и собрал понятный конспект, которым будет удобно пользоваться.

Ещё один дополнительный проект, в котором я поучаствовал — это разработка сайта для НКО Фонд Хабенского «Рак лечится». На самом деле, этот проект был для нас как бы соревнованием — набрали всех, кто хотел и поделили, получилось около двадцати команд, и почти месяц мы его делали. В финал вышли четыре команды, в том числе, наша, в итоге победила другая команда, но это был интересный и познавательный опыт.

На этих проектах я поближе познакомился с командой Практикума, ребята меня ревьюили, давали рекомендации. В какой-то момент я узнал про объединение «Кружок» — оказалось, его собрала команда факультета веб-разработки. Я написал ребятам и попросил включить меня в этот проект. Так получилось, что я помогал с обновлением сайта про деревню Сардаял, а после этого мне предложили поработать над курсом по React в Практикуме. К тому моменту я уже нашёл постоянную работу, но очень хотел включиться в подготовку курса — мы договорились, что я буду уделять этому 10-15 часов в неделю. Ещё я бы очень хотел как-нибудь съездить куда-то с командой «Кружка» и надеюсь, что такая возможность появится.

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

Советы тем, кто задумался о смене профессии

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

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

Что читать и слушать:

— Современный учебник по JavaScript. Немного заглядывал в этот учебник в процессе учёбы. Но всё же больше времени уделял тренажёру.

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

Краткий пересказ от YandexGPT