Код
#статьи

Как стать программистом в 37 и найти работу после сотен отказов

Бывший фотограф из Калининграда рассказал, как перешёл во фронтенд, почему GitHub важнее сайта-портфолио, а в резюме лучше не писать слово «junior».

OlyaSnow для Skillbox Media

Олег Кокошинский

эксперт

об эксперте

Живёт в Калининграде, в 37 лет бросил фотографию и освоил веб-вёрстку, JavaScript, Vue.js и React. Получил сотни отказов на HeadHunter, но в итоге устроился фронтенд-разработчиком.


Ссылки


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

В основе статьи — тред автора в Twitter.

Я родился и вырос в Калининграде. В колледже изучал государственное и муниципальное управление, работал ночным администратором компьютерного клуба, продавал пиратские диски в магазине. Два раза бросал университет, поэтому остался без высшего образования.

В Калининграде дела шли плохо. Я увлекался фотографией, даже открыл убыточную студию. Работал где придётся, в том числе кассиром на рыночной парковке.

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

Поначалу Владивосток меня очаровал: наверное, так повлияли перемены. С подругой мы съехались — она занималась татуировками, а я пытался фотографировать, проколол уши и сменил причёску.

Захотел в IT, потому что это интересно

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

Я вспомнил, что когда-то интересовался вебом, но дальше забав с HTML-тегами дело не пошло. Вскоре наткнулся на бесплатные тренажёры HTML Academy — часами проходил их и громко матерился на заданиях, где вёрстка должна была совпасть с образцом пиксель в пиксель. Потом я купил подписку и прошёл все тренажёры по вёрстке.

Уходить в IT я не собирался — сначала хотел сделать сайт тату-салона и фотостудии. Но мне понравилось, что фронтендер сразу видит результат своего труда: бах — и кнопка покрасилась. А ещё подкупило, что можно работать из дома.

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

На прежних работах я постоянно боялся, что заболею, меня уволят и я не смогу платить за квартиру. Что мои ботинки порвутся и надо будет делать выбор между едой и новой обувью. Страх гнал меня на эту ненавистную каторгу.

Большую часть своей жизни я находился в эмоциональной заднице — и закончить жизнь в той же заднице я не хочу. Но и IT я выбрал вовсе не из-за денег — мне и правда было интересно. Вёрсткой я могу заниматься, забывая поспать и поесть. Это ли не счастье? А вот работа только ради зарплаты — путь в никуда.

Фото: предоставлено Олегом Кокошинским

Денег не было — учился по курсам с торрентов

Я начал изучать фронтенд, когда начиналась пандемия. В это время я то работал, то нет, поэтому денег на курсы не было и я тырил с торрентов всё, что мог найти. Иногда занимался весь день, иногда только пару часов. Верстал лендинги, погрузился в JavaScript на уровне обработчиков событий и всплывающих окон. И даже попробовал учить jQuery — правда, мне не понравилось. Про взрослые фреймворки вроде Vue.js и React я ещё не знал.

С таким подходом мне очень не хватало общения, поэтому я завёл аккаунт в Instagram*, подписался на многих ребят из индустрии и начал рассказывать о себе. Очень быстро появились знакомые и я понял, как развиваться дальше.

Поначалу я обходился без JS-фреймворков и сборщиков — пользовался плагинами Live Server и Live Sass Compiler для редактора Visual Studio Code.

В какой-то момент я записался на бесплатный курс в RS School. Это был интересный опыт, но до конца я так и не дошёл, потому что все вебинары и челленджи пролетали мимо меня: их проводили примерно в 20:00 по Москве — во Владивостоке в это время было три часа ночи.

В Instagram* я познакомился с Сашей Белькевичем — фронтендером, который работает на Vue.js. У него есть Patreon-сообщество, где он за небольшие деньги даёт задания с обратной связью. Конечно, я присоединился.

Русскоязычные курсы по Vue.js мне не понравились, но Саша предложил поискать уроки от Максимилиана Шварцмюллера — самоучки, который сам освоил фронтенд и бэкенд, а потом сделал курсы и обучил полтора миллиона человек.

Эти уроки я скачал с торрента. Переживал из-за своего плохого английского, но там были субтитры, и первое время я выписывал незнакомые слова в тетрадь. Зато сейчас уже всё воспринимаю на слух. Спустя некоторое время я удалил торренты и купил курс Максимилиана на Udemy.

Теперь моё портфолио пополнилось проектами от RS School и Саши, я более-менее научился верстать и использовать препроцессор, немного разбирался в Bootstrap, JavaScript и основах Vue.js.

Я завёл аккаунт на LinkedIn, оформил профиль, подтвердил несколько навыков и начал наращивать сеть контактов. В комментариях к какому-то посту мне предложили пройти собеседование: в итоге меня интервьюировали, когда я копал картошку у тёщи. Стоя с лопатой посреди сорняков, я отвечал на вопросы о promise и this, bind и reduce. Интервьюер сказал, что мне стоит подтянуть, и посоветовал изучить React. Я уже был готов на всё, поэтому пошёл на Udemy и купил очередной курс.

React мне понравился — у него есть нормальная документация. Не знаю, почему все говорят, что Vue.js намного проще.

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

Пока искал работу, мне отказали сотни раз

Мне было 36 лет, ноль опыта, только резюме и несколько проектов на GitHub. Я искал работу больше полугода: за это время было несколько сотен отказов и проигнорированных откликов на HeadHunter.

Во Владивостоке мало вакансий по фронтенду, а джуниорские появляются совсем редко. Я мониторил HeadHunter и FarPost — дальневосточный Avito. Хотел устроиться в офис, чтобы было у кого учиться. Да и удалёнка не подходила из-за большой разницы в часовых поясах — всё-таки +7 к Москве. Так себе ситуация: ты работаешь, а команда спит.

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

В сопроводительных писал что-то вроде: «Заинтересовала вакансия. Пожалуйста, рассмотрите мою кандидатуру». В основном никто не отвечал или я получал стандартное «Мы внимательно ознакомились с резюме, но…».

В резюме не стоит писать, что вы ищете позицию джуна. Вместо Junior Frontend Developer оставьте Frontend Developer — так резюме будут смотреть намного чаще. Пусть грейд определяют сами HR-специалисты.

Про свой опыт рассказывать сложно. Например, нерелевантный на первый взгляд опыт может быть ценным — если вы работали в продажах, то предполагается, что у вас развиты софт-скиллы. С ноября 2019-го по октябрь 2020-го я занимался удалённым ручным тестированием в «Яндексе», и это стало неплохой строчкой в резюме.

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

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

А вот сайт-портфолио я делать не стал. Может быть, он нужен фрилансерам, но я хотел устроиться в офис. Уверен, что лучше завести и оформить нормальный профиль на GitHub. Забегая вперёд, скажу: именно он и помог мне найти работу.

Фото: предоставлено Олегом Кокошинским

Первое тестовое — лендинг для гадалки

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

Тестовые обычно не оплачивают, но взамен компания должна дать обратную связь. Если её нет, кандидата обманули. У меня такое было раз десять. Усилия часто уходят в никуда, и это грустно.

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

Чтобы избежать проблем, я всегда спрашиваю HR, когда моё тестовое рассмотрят и можно ли опубликовать выполненное задание у себя на GitHub. Если не отвечают — это плохой знак. Рассчитывать на такого работодателя не стоит.

На первое собеседование меня позвали, когда я сделал таблицу, в которой данные подгружаются из JSON-файла, а строки можно сортировать. Наверное, кого-то удивит XMLHttpRequest, зато задание было выполнено и всё заработало (про Fetch API и библиотеку Axios я тогда не знал). К этому моменту я уже несколько месяцев рассылал резюме и делал тестовые.

Перед собеседованием я разложил на столе все свои записи, открыл справочники, проверил камеру с микрофоном и стал ждать. Я три раза прыгал с парашютом, но ожидание интервью было намного страшнее :)

И вот в кадре появились трое и похвалили моё тестовое. Правда, я поплыл, когда приступили к техническим вопросам, — на какие-то ответил, но умудрился засыпаться на теме про document.createElement. Меня спросили, как создать элемент, а я начал что-то бормотать про innerHTML, хотя уже не раз создавал элементы. В тот момент я понял, что не нужно скрывать своё волнение: на той стороне тоже люди, и у них тоже когда-то было первое собеседование.

Меня не взяли, потому что нашёлся кандидат, которому не пришлось бы работать по ночам из-за временного сдвига. Зато волнение полностью пропало. Отказ — не конец света, а просто ещё одна попытка.

Иногда мне предлагали странные тестовые — например, за два месяца сделать большой личный кабинет на Vue.js или сверстать полноценный сайт и отдать его через GitHub.

Однажды дали простое задание — сделать плитку с изображениями и подписями. После этого было собеседование, где предложили второе тестовое — полностью сверстать лендинг со слайдерами и анимациями. Убеждали, что я плохо отвечал на собеседовании и это обязательное задание. Когда я отказался, спросили о причинах «такого поведения». После этого я просто перестал им отвечать.

Простое тестовое задание, после которого меня пытались нагрузить. Скриншот: Skillbox Media

С «Хабр Карьеры» я получил другое тестовое — сверстать лендинг по подбору авто. Фидбэк на него был грубоватый, с выражениями вроде: «top: 30vh? Серьёзно». Я позиционировал модальное окно через position: fixed; и top: 30vh;. Их смутило, что вместо пикселей я использовал относительные единицы Viewport Height. Сказали, что «адаптив просто ужасный», хотя в ТЗ его и не было.

Тестовый лендинг о лизинге авто. Скриншот: Skillbox Media

Работу не мог найти уже 8 месяцев, поэтому попросил Сашу Белькевича посмотреть мой аккаунт на GitHub. Он ответил, что я крепкий джун, а моя беда в часовом поясе. Но деваться было некуда — мы с женой не могли переехать по семейным обстоятельствам.

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

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

Тестовое на Vue.js — каталог акций для магазина бытовой техники. Скриншот: Skillbox Media

Технических вопросов почти не было, зато обсудили моё тестовое — сказали, что title великоват, однако не спросили, смогу ли я это поправить. После задали глупый вопрос, могу ли работать с DOM, хотя тестовое я делал на Vue.js. Фидбэк получился коротким: «Мы ждали большего опыта». Я пришёл домой, за две секунды поправил title и сказал себе, что больше не стану искать варианты во Владивостоке.

Программистом не брали, поэтому работал где придётся

Пока я искал работу программистом, рассматривал и временные варианты не из IT. Удалось устроиться в агентство недвижимости на восемь месяцев на очень маленькую зарплату. Зато хватало времени верстать какие-то свои проекты и я урывками решал задачи из RS School. Но каждый день меня ждал вынос мозга, а по утрам понедельника хотелось плакать — иногда я так и делал.

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

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

Зарплата устроила, оформляли официально — работа с 9 до 18, час на обед, перекуры. Я подписал бумаги и вышел уже на следующий день. Решил, что днём буду собирать счётчики на заводе, а дома буду учить React.

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

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

Хоть я и не таскал тяжести, зато прекрасно понял тех, кто пьёт пиво у подъезда, отключается перед телевизором и больше ничего не хочет. Из такой задницы трудно выбраться.

Радовался, когда устроился фронтендером в агентство

Я проработал на заводе неделю, когда мне в Telegram написал начальник местного маркетингового агентства. Он сказал, что ищет фронтендера. Я уже ни на что не надеялся, но договорился созвониться с ним после смены.

Лайфхак: оставляйте контакты прямо в теле резюме. Начальник порадовался, что ему не пришлось платить деньги HeadHunter, чтобы узнать мой номер телефона.

Оказалось, что я уже откликался на их вакансию, но тогда не подошёл. А теперь им снова понадобился программист на Vue.js. Я рассказал о своём опыте, и мне предложили оплачиваемое тестовое задание — сверстать лендинг для застройщика. Пообещал, что сделаю его за выходные.

Тестовый лендинг для застройщика, после которого меня взяли на работу в агентство. Скриншот: Skillbox Media

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

Через два дня мне позвонили и предложили работу. Что-то говорили о зарплате и компенсации курсов, но это было неважно, потому что я медленно сползал по стене на пол. Ответил, что уволюсь с завода и скажу, когда смогу выйти. Разговор закончился, а я лёг на пол и заплакал.

На заводе отрабатывать две недели не заставили, а просто дали расчёт и отпустили. Было стыдно, потому что я обещал, что устраиваюсь надолго. Но поступить иначе не мог.

На следующий день пришёл в агентство — со всеми познакомился, мне показали офис, дали компьютер. Начальник сказал, что договор заключим позже, зарплата серая, но можно просить компенсацию в 50% от стоимости курсов.

Я сразу залогинился в GitHub, установил Telegram и Visual Studio Code. Меня добавили в Trello, GitLab и «Битрикс24», завели почту и дали несколько небольших задач. Я скопировал проекты себе и начал в них разбираться. Меня ждали сюрпризы.

Как только вы куда-то устроились, сразу напишите об этом на HeadHunter, в LinkedIn, «Хабр Карьере», Djinni и везде, где можно указать место работы. С этого момента вы в IT и вам капает опыт.

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

Иногда я спрашивал фронтендера, как работает тот или иной кусок кода, но он чаще всего отвечал: «Хрен его знает». Сюрприз был в том, что единственный фронтендер в агентстве увольнялся через пять дней и я оставался на проектах один.

Приходили и рекламные лендинги, которые агентство заказывало на аутсорсе. Я заливал их на хостинг, иногда немного правил. В первые три дня я возненавидел Pug — он там был везде, как кинза в кавказских блюдах.

Самым сложным оказался сайт застройщика — код был просто адский. Никакого Vue CLI и Vuex, а Vue.js использовался как jQuery. Так я узнал о существовании Event Bus.

С большинством задач я не справлялся. В панике написал Наташе, администратору чата для джунов-фронтендеров. Она сказала, что так быть не должно.

Работа не была похожа на сказку. Я правил вёрстку по замечаниям из Trello — большинство комментариев получал в стиле: «Отступ меньше!» Когда я уточнял, насколько меньше, в ответ присылали скриншот с подписью: «Как здесь».

Я остался на проекте один с пыхтящим менеджером, но пока ничего другого не оставалось. При всех минусах агентство было лучше завода.

Вторая работа была удалённой

Позже мне снова написали в Telegram — компания из Кисловодска нашла мой аккаунт на GitHub, где сказано, что меня не пугают сдвиг часового пояса и удалёнка, у меня нет игровой приставки, а на ноутбуке стоит Linux.

Человек спросил, сколько лет я работаю с Vue.js (нисколько), знаю ли Vuex (нет). Я скинул ему тестовое, которое делал для магазина техники, и меня взяли. На всё ушёл один телефонный звонок.

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

В агентстве я пообщался с начальником и сказал, что мне не нравится команда и процессы и я точно ухожу. В ответ услышал, что это «плевок в лицо» и я обязан отработать две недели, хотя договор мы ещё не подписывали. Я боялся, что не получу зарплату, и потому согласился.

Дальше я работал в агентстве до 19:00, час добирался домой, а потом до 2:00 делал задачи для новой компании. Спать по четыре часа было трудно, так что я постоянно пилил начальника, чтобы он быстрее искал замену. В итоге меня отпустили на неделю раньше и даже выдали всю зарплату.

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

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

Я развёлся и вернулся в Калининград, думаю сменить компанию

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

В новой компании я работаю удалённо, как и вся команда, поэтому после развода меня уже ничто не держало во Владивостоке. Я прилетел в Калининград 14 августа с тем же чемоданом, с которым улетал десять лет назад.

Сейчас в работе тоже есть моменты, которые меня не очень устраивают, — хочется более интересных условий и развития в профессии. Поэтому, скорее всего, буду потихоньку присматривать другие варианты. А скоро пройду новый курс по JavaScript, окончу курс по Vue.js, попробую разобраться в TypeScript. Параллельно буду делать задачи с Codewars или LeetCode. А потом, может, и вовсе уйду в бэкенд.

Никогда не сдавайтесь

В конце рассказа я хочу поделиться полезными ссылками, которые в своё время помогли мне:

  • HTML Academy — русскоязычные тренажёры по HTML, CSS, JavaScript и PHP.
  • freeCodeCamp — полностью бесплатные курсы на английском.
  • Glo Academy — YouTube-канал с уроками по Bootstrap, jQuery и WordPress.
  • «Фрилансер по жизни» — канал о том, как начать карьеру в IT.
  • Чат джуниоров и мидлов — место, где общаются начинающие и опытные фронтендеры. Ещё у них есть записи лекций.
  • Александр Белькевич — Instagram-профиль** фронтендера Саши, где он делится опытом.
  • Hexlet.io — здесь много бесплатных материалов.
  • RS School — бесплатные курсы по фронтенду, машинному обучению, iOS- и Android-разработке.
  • JavaScript, React и Vue.js — три курса от Максимилиана Шварцмюллера и курс на Udemy по JS.

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


* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook* и Instagram* на территории Российской Федерации по основаниям осуществления экстремистской деятельности».
Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована