Как стать программистом в 37 и найти работу после сотен отказов
Бывший фотограф из Калининграда рассказал, как перешёл во фронтенд, почему GitHub важнее сайта-портфолио, а в резюме лучше не писать слово «junior».
OlyaSnow для Skillbox Media
Раньше я занимался фотографией, а недавно перешёл во фронтенд-разработку. Учился с помощью онлайн-тренажёров, бесплатных уроков на 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.
Однажды дали простое задание — сделать плитку с изображениями и подписями. После этого было собеседование, где предложили второе тестовое — полностью сверстать лендинг со слайдерами и анимациями. Убеждали, что я плохо отвечал на собеседовании и это обязательное задание. Когда я отказался, спросили о причинах «такого поведения». После этого я просто перестал им отвечать.
С «Хабр Карьеры» я получил другое тестовое — сверстать лендинг по подбору авто. Фидбэк на него был грубоватый, с выражениями вроде: «top: 30vh? Серьёзно». Я позиционировал модальное окно через position: fixed; и top: 30vh;. Их смутило, что вместо пикселей я использовал относительные единицы Viewport Height. Сказали, что «адаптив просто ужасный», хотя в ТЗ его и не было.
Работу не мог найти уже 8 месяцев, поэтому попросил Сашу Белькевича посмотреть мой аккаунт на GitHub. Он ответил, что я крепкий джун, а моя беда в часовом поясе. Но деваться было некуда — мы с женой не могли переехать по семейным обстоятельствам.
Я продолжал учиться и рассылать отклики. Иногда менял что-то в резюме, экспериментировал с сопроводительными письмами и делал тестовые. Собеседований было мало — меньше десяти.
Потом я закидал откликами местную компанию по продаже бытовой техники, и они скинули тестовое задание на Vue.js. Я его сделал, меня позвали на собеседование. Ехал из пригорода, поэтому на дорогу ушло три часа. Приехал вовремя, но меня заставили полчаса ждать в фойе — сначала искали переговорку, а потом лида и разработчиков.
Технических вопросов почти не было, зато обсудили моё тестовое — сказали, что title великоват, однако не спросили, смогу ли я это поправить. После задали глупый вопрос, могу ли работать с DOM, хотя тестовое я делал на Vue.js. Фидбэк получился коротким: «Мы ждали большего опыта». Я пришёл домой, за две секунды поправил title и сказал себе, что больше не стану искать варианты во Владивостоке.
Программистом не брали, поэтому работал где придётся
Пока я искал работу программистом, рассматривал и временные варианты не из IT. Удалось устроиться в агентство недвижимости на восемь месяцев на очень маленькую зарплату. Зато хватало времени верстать какие-то свои проекты и я урывками решал задачи из RS School. Но каждый день меня ждал вынос мозга, а по утрам понедельника хотелось плакать — иногда я так и делал.
Когда начальница совсем задолбала и попыталась меня оскорбить, я рассмеялся ей в лицо, хлопнул дверью и больше в офис не возвращался.
По одной из вакансий вроде оператора ПК меня позвали на собеседование. Я ехал до места с двумя пересадками, а вместо офиса там оказался цех с паяльниками и шуруповёртами. Меня встретил директор по производству и сказал, что здесь собирают электросчётчики. Я покивал, хотя ничего не знаю про счётчики. Оператором ПК там и не пахло.
Зарплата устроила, оформляли официально — работа с 9 до 18, час на обед, перекуры. Я подписал бумаги и вышел уже на следующий день. Решил, что днём буду собирать счётчики на заводе, а дома буду учить React.
В первый же день мне дали задание — нарезать 3000 кусков проволоки по 3 сантиметра. Если вы когда-нибудь делали что-то подобное, наверняка поймёте меня. В конце дня я уходил с работы с ощущением, что меня жестоко избили. Но самое страшное ждало меня дома после двух пересадок на автобусе.
Я поел, включил лекцию по React и понял, что ничего не соображаю. Попробовал писать код, но вышло так себе. Понадеялся, что через день-два привыкну. На работе я научился паять, крутил пластиковые гайки — делал одно и то же по восемь часов подряд. Мозг и пальцы уже не справлялись.
Хоть я и не таскал тяжести, зато прекрасно понял тех, кто пьёт пиво у подъезда, отключается перед телевизором и больше ничего не хочет. Из такой задницы трудно выбраться.
Радовался, когда устроился фронтендером в агентство
Я проработал на заводе неделю, когда мне в Telegram написал начальник местного маркетингового агентства. Он сказал, что ищет фронтендера. Я уже ни на что не надеялся, но договорился созвониться с ним после смены.
Лайфхак: оставляйте контакты прямо в теле резюме. Начальник порадовался, что ему не пришлось платить деньги HeadHunter, чтобы узнать мой номер телефона.
Оказалось, что я уже откликался на их вакансию, но тогда не подошёл. А теперь им снова понадобился программист на Vue.js. Я рассказал о своём опыте, и мне предложили оплачиваемое тестовое задание — сверстать лендинг для застройщика. Пообещал, что сделаю его за выходные.
Целиком лендинг сверстать не успел, но показал промежуточный этап. Сказали, что всё в порядке, но хотят посмотреть адаптивную версию. Я её сделал, и мне пообещали дать фидбэк.
Через два дня мне позвонили и предложили работу. Что-то говорили о зарплате и компенсации курсов, но это было неважно, потому что я медленно сползал по стене на пол. Ответил, что уволюсь с завода и скажу, когда смогу выйти. Разговор закончился, а я лёг на пол и заплакал.
На заводе отрабатывать две недели не заставили, а просто дали расчёт и отпустили. Было стыдно, потому что я обещал, что устраиваюсь надолго. Но поступить иначе не мог.
На следующий день пришёл в агентство — со всеми познакомился, мне показали офис, дали компьютер. Начальник сказал, что договор заключим позже, зарплата серая, но можно просить компенсацию в 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.
Если вам нужна помощь или поддержка, пишите мне. Я и сам в начале пути, поэтому понимаю, насколько важно, чтобы в тебя верили и давали понять, что ты не хуже других. Всё получится, главное — не сдаваться и не слушать тех, кто тянет вниз.