Мой случай едва ли тянет на историю успешного успеха, но если статья вдохновит хотя бы одного читателя, не зря я трачу на неё этот вечер. Меня бы год назад точно вдохновила.
Что было до
Сначала хотел использовать в заголовке слово «гуманитарий» — его часто гуглят вместе с фразой «стать программистом», но я не люблю это слово. От него веет безысходностью. Оно как клеймо: «Ты же гуманитарий, куда тебе…»
Много лет — 17, если быть точным, — я проработал в медиа. Писал свои и редактировал чужие тексты, руководил бригадами выпуска в газете и онлайн-издании. В какие-то периоды много ездил по России и за её пределы. Было интересно. А на вопрос друзей, счастлив ли я, отвечал «да», почти не раздумывая. Но со временем отрасль, как выражаются в Министерстве иностранных дел, «заметно деградировала», а перспективы в ней оставаться стали «смехотворны».
Параллельно бурлила молодая и такая классная айтишечка: стартапы, митапы, цифровизация всего, крутые проекты, сытые техногиганты, опционы и грин-карты. Я стал всё чаще скучать, особенно вспоминая, сколько мне лет и что в моём дипломе написано «журналистика». Это выглядело круто для моей мамы, но не сулило мне оказаться у кофе-поинта на митапе.
В январе 2020 года я решил попробовать веб-дизайн — там понятно, с чего начать, когда ты приходишь в эту сферу совсем без опыта.
Первый сайт
За три месяца я более-менее освоил фигму, потрогал фотошоп и иллюстратор. А потом начал искать первых клиентов. На курсах мне, конечно, рассказывали, что выйти на фриланс — вообще не вопрос, потому что всем нужен дизайн. Но при этом будет проще, если дизайн требуется кому-то из знакомых — желательно бесплатно.
И такая знакомая нашлась! Мы долго и нервно редизайнили сайт-визитку, а потом она спросила, есть ли у меня верстальщик, чтобы получившееся произведение выложить в интернет. Потыкавшись на биржах фриланса, я понял, что никому не готов доверить своё детище. Пошёл на ютуб, чтобы найти гайды, как верстать сайты и прикручивать доменные имена. Вскоре мой первый сайт был на сервере.
Всё ковидное лето я провёл за компом — делал многостраничный сайт, уже за деньги. ТЗ было максимально серьёзное: чтобы было красиво и работало. К счастью, там не было логики — только статические страницы и форма для связи. В итоге я сделал сайт, как мог — плагинами на вордпрессе. Стыдно ли мне за эту работу? Нет, конечно. Сайт работает и по сей день. Заказчик доволен, а я получил бесценный опыт, который показал, что надо срочно идти учиться.
Учёба в Яндекс.Практикуме
«Я начну, а дальше посмотрим. Может, даже получится закончить», — сказал я жене и оплатил курс по веб-разработке в Яндекс.Практикуме. С тех пор семья меня не видела.
Этой несмешной шуткой можно было бы и закончить. Я сильно изменил свой образ жизни: практически всё время, не занятое основной работой, я учился. Включал монотонный прогрессив-хауз, надевал наушники и погружался в VS Code. Чтобы окончательно не убить зрение, подключил монитор к ноуту. Изредка отвлекался поиграть с младшим сыном, старался хотя бы немного проветривать голову и гулять.
Неделя тренажёра Яндекс.Практикума и вебинаров по вечерам, потом все выходные и оставшаяся неделя на выполнение заданий, код-ревью — с непривычки очень тяжело. Если сейчас вернуться назад, я бы чаще делал перерывы, не паниковал, когда застревал на задачке, регулярно «перезагружался» и не зацикливался.
А вот жизнь спринтами меня приводила в восторг — именно этого чёткого ритма мне так не хватало. А главное, я чувствовал прогресс — вот что действительно вдохновляло.
Основы вёрстки дались относительно легко, начался JavaScript. Я хвастался учебными проектами перед сыном-подростком — он тоже изучал JS и к тому моменту продвинулся намного дальше меня. Как-то раз он, заглянув в мой код, небрежно бросил: «Пап, ты уже старый для этого».
Тот самый код, который увидел мой сын
Ничего глупее он ещё не говорил. Внутренне разозлившись, я решил, что обязательно дойду до конца курса.
Увольнение и первые собеседования
Курс по JavaScript прошёл очень быстро: я только-только начал вникать в области видимости функций, приколы с типами данных, ухватил основы ООП — а уже всё. Я успешно сдал итоговую работу по теме и готовился к новым задачам.
А потом начался React. По сравнению с чистым JS он выглядел как комбайн рядом с самокатом. Курсовые проекты требовали всё больше и больше времени. И оно появилось: меня уволили с работы, потому что сократили отдел. Так мне пришлось принимать одно из самых важных решений в жизни: я мог перейти в другое издание и оставаться редактором или же сосредоточиться на мечте и искать новую работу.
В апреле 2021 года я стал 40-летним безработным бывшим редактором, который претендовал на должность фронтенд-разработчика. Чтобы было не так страшно, пошёл на программу акселерации Практикума, где помогают искать вакансии и учат правильно общаться с потенциальными работодателями.
Рекрутеры на хедхантере осторожно звали на собесы. Могу ошибаться, но именно на том этапе, когда свежий человек только-только появляется на рынке труда, его персоной заметно интересуются. Есть немало историй, когда ребята получали офферы ещё во время учёбы, но если не заскочил в этот поезд — жди полосу полного игнора. Я не заскочил, потому что мне явно не хватало знаний.
Каждый из редких собесов я встречал в диком стрессе. Проваливался, но старался не унывать и штудировал всё, на чём сыпался. А в следующий раз мне обязательно подкидывали новые вопросы и задачки, с которыми я не сталкивался ранее. Вот самая первая:
const arr = [1, 2, 3, 4, 2, 4, 5];
Посчитайте количество одинаковых элементов и выведите в консоль в следующем виде:
{ '1': 1, '2': 2, '3': 1, '4': 2, '5': 1 }
Да, довольно просто. Но за полгода до этого я вообще не знал, что такое console.log. Наставники в Практикуме советовали codewars, но на него у меня почти не оставалось времени — я налегал на теорию, чтобы было что сказать на собеседованиях. Сейчас я бы больше времени уделял именно задачкам.
С апреля по июль я отправил более сотни откликов на хедхантере. Ещё писал напрямую в компании, например, в международные аутсорсы, где можно интенсивно набираться опыта.
Помню феерический провал: я бодро прошёл скрининг, рекрутеру понравился мой английский, и я уже начал представлять, как получу оффер. Все выходные перед техсобесом я до одури читал теорию, а потом, не выспавшийся из-за стресса, как зомби, пришёл в Zoom. Инженер начал писать какой-то пример с var — и я не нашёл ничего умнее, чем ляпнуть: «А зачем вы используете устаревшее ключевое слово, может, лучше let или const?» Этим я и дал понять, что никогда не видел легаси, не заглядывал под капот библиотек и не открывал вкладку Sources в девтулзах. Я по какой-то причине был убеждён, что знания про var мне никогда не пригодятся, и просто перелистнул эту главу на learn.javascript.ru. А потом меня гоняли по прототипному наследованию, объектам и классам. На вопросе о том, как браузер рендерит страницу, я честно сказал: «Я ничего не знаю. Спасибо, что уделили мне время».
В тот провальный день у меня будто что-то переключилось в голове, и я стал меньше переживать. Смотрел туториалы и мок-собесы, отказался от веерной рассылки резюме и спешно доделывал дипломный проект.
Знаю, что некоторые принципиально не берутся за тестовые задания. Никто не любит получать в лучшем случае отказы, а чаще — полный игнор. Я тоже получал, но тестовые всё же брал. Выбирал те, на которые планировал потратить не более трёх дней: во-первых, чтобы не бездельничать и быть постоянно в форме, а во-вторых, чтобы трогать другие технологии помимо React, например, Redux. Однажды я взялся за интересное тестовое на Vue: надо было сделать светофор, используя Router и Vuex.
Сделать одностраничное приложение. Реализовать логику переключения светофора: 10 секунд включён красный, последние три секунды он должен мигать, то же самое для зелёного цвета. Между красным и зелёным должен на 5 секунд включаться жёлтый (без мигания). У каждого цвета должен быть свой роут. К вёрстке требований нет, на ваше усмотрение.
К дедлайну я тогда не уложился, зато спустя две недели вьюшка мне очень пригодилась.
Как я нашёл настоящую работу
Вакансию я нашёл в телеграм-канале Profunctor Jobs. Требовался джун, который под руководством ментора будет изучать Vue.js и работать над b2b-сервисами в страховой компании «Ренессанс Жизнь». Я удивился, потому что в этом канале обычно ищут мидлов и синьоров. Я откликнулся и в ответ получил скриншот с кривым JSON и вопросом, что здесь не так. Ответил, почти не раздумывая, и через полчаса уже договаривался с эйчаром о собеседовании.
Перед собесом я, конечно же, всю ночь изучал Vue (нет). Я глянул на свой недоработанный светофор, освежил в памяти учебные проекты на React, посмотрел ещё раз каналы Ulbi, Минина, Frontend-Science про типовые вопросы на собеседованиях и лёг спать. А утром бодро пообщался с будущим начальником и двумя синьор-разработчиками.
Вот о чём спрашивали:
- для чего нужен БЭМ;
- что такое специфичность селекторов CSS;
- как можно отцентровать элемент;
- что такое семантичность вёрстки;
- как можно подключать скрипты в html;
- типы данных в JS;
- чем var отличается от let и const (тут уж я не облажался!);
- область видимости функций;
- что такое this;
- чем отличаются стрелочные функции от обычных;
- что такое объект;
- зачем нужны массивы и что с ними можно делать;
- хуки жизненного цикла Vue;
- хуки в React;
- как можно организовать взаимодействие дочернего-родительского компонентов и обратно в обоих фреймворках.
Это неполный список. Всех вопросов я уже не помню, но это был довольно типичный набор для любого техсобеса на джуна-фронтендера.
Мы друг другу вроде бы понравились, но из-за прошлых провалов я не стал особо надеяться. Была пятница, выходные я провёл за очередным тестовым для другой компании, но уже в понедельник мне прислали оффер. Безработным я пробыл ровно четыре месяца.
Чем я занимаюсь сейчас
Первые пару недель я не мог поверить, что всё это правда. Я официально трудоустроен, у меня есть ментор, который терпеливо отвечает даже на самые наивные вопросы и помогает разобраться в довольно сложном b2b-сервисе одной из крупнейших страховых компаний России.
Стек поначалу приводил меня в ужас, потому что всё пришлось изучать практически с нуля:
- TypeScript (поначалу были разногласия, но сейчас мне всё нравится);
- Vue (местами многословно, зато довольно гибко);
- Pug (странный, но, как выяснилось, удобный);
- Sass (красиво, коротко и ясно);
- Jest (он явно не зря так называется, потому что поначалу тестирование Vue — это действительно «жесть»);
- CI/CD в Gitlab (за чистотой кода и покрытием тестами присматривает суровый Sonar).
Полноценно меня включили в команду после месяца адаптации. Нас восемь человек: три бэкендера, два фронта, тестировщик, аналитик и скрам-мастер. Вся логика и расчёты происходят только на бэке. Фронты есть не в каждой команде, поэтому иногда нужно помогать коллегам: править баги и делать фичи для b2b-сервисов, изредка — лендинговые страницы.
Код-ревью — обязательный этап, как и юнит-тесты. В целом мы живём по SAFе (Scaled Agile Framework): команды автономные, практически нет бюрократии, все вопросы решаются быстро, есть чёткое краткосрочное и долгосрочное планирование.
И что же дальше? Мечта ведь сбылась. Я самый великовозрастный джун в истории нашего IT-департамента. Моим коллегам, к счастью, безразлично, сколько мне лет, а мне с 25-летними даже интереснее, чем со сверстниками.
Неловко я чувствую себя только в те моменты, когда ребята начинают обсуждать что-то из игр. Увы, на игрушки у меня совсем не остаётся времени: нужно много читать и смотреть про веб-технологии. Но я не зацикливаюсь: если чувствую, что устал и фокус потерян, просто выключаю комп. Иначе вместе с фокусом можно потерять и интерес к тому, чем занимаешься. Я это уже проходил в «прошлой жизни», больше не хочу.
Надеюсь, моя история прибавила оптимизма тем, кто хочет сменить профессию, но чего-то боится: потерять комфортный образ жизни, работу, доход. Да, это всё риски.
Поначалу точно не будет расслабленно и суперкомфортно. На то, что когда-нибудь разработчику можно будет расслабиться, я бы вообще не надеялся.
Потеря работы? Ну да, а ради чего тогда всё это? Теряем то, что надоело, — находим то, к чему стремимся. Максимально логично.
С доходом сложнее. Тут всё очень индивидуально. Если бы я был единственным кормильцем в семье, да ещё и с ипотекой, естественно, на такие кардинальные перемены я бы не пошёл.
Для меня смысл этих перемен — не в деньгах, а в возможности заниматься тем, что действительно увлекает, а ещё в перспективах роста и востребованности на рынке труда. В деньгах я потерял, хотя мне дали очень неплохую для джуна зарплату. Конечно, это временно, и доход со временем точно вырастет — просто для этого нужно серьёзно вложиться в саморазвитие.
Автор: Андрей Рябцев