Компания, в которой я проработал, закрылась и мне пришлось искать новую работу. И я её нашёл. А вот как я это сделал, хочу поделиться в этой статье.
Как я прошлый раз два года назад искал работу я подробно описал в первой части
Из-за известных геополитических событий в России изменилось практически всё. Если тогда я только разместил резюме на hh и меня начали атаковать толпы рекрутеров. Сейчас не толпа, а единицы и выборочно, и обязательно с коммерческим опытом на нужный стек. Вакансии есть, но их гораздо меньше.
По прошлому опыту я не стал сразу бросаться на собеседования, а посвятил время подготовке. Прохождение собеседований — это отдельный навык, который к реальной работе имеет очень мало отношения. Здесь скорее надо себя красиво презентовать и грамотно ответить на сложный вопрос.
Для начала я приступил к исследованию интернета и стал искать youtube-каналы рекрутёров. Вот самые лучшие NEW HR, Лена про карьеру, а также два хороших видео.
Собеседование в IT строиться, как минимум, из 3-х этапов. Первый — это общение с HR, на котором она рассказывает о компании и задаёт поведенческие вопросы. Например, «расскажите о себе», а «какие самые сложные проблемы удалось решить на прошлом проекте» и т.п. Ключевая особенность ответов на эти вопросы, надо отвечать с точки зрения ценности для бизнеса. Например, не просто верстал формочку на сайте, а создавал инструмент для удержания пользователей на сайте.
Второй этап - техническое интервью, которое состоит из двух частей: теоретической и практической. В теоретической очень подробно и глубоко спрашивают про теорию программирования и её реализацию в Javascript. А в практической части попросят решить какую-либо задачу.
Третий этап — рекрутер либо делает предложение (оффер), либо исчезает навсегда по принципу Голливуда «Не звоните нам, мы сами вам позвоним».
Как я готовил к первому этапу? Я написал резюме, составил рассказ о себе в ключе, что только я смогу принести ценность для бизнеса и никто иной. Так же даже написал 3 сложные проблемы, которые решал на прошлом проекте с помощью системы STAR (S (situation) — ситуация, T (task) — задача, A (action) — действие, R (result) — результат). При чём проблемы не только технические, но и как я решил конфликтную ситуацию. Главное в этом описании - как я решил сложную проблему и какой результат в итоге получил. Кроме того, я составил список вопросов, которые я должен задать работодателю. Например, «как часто пересматривается заработная плата?», «что для этого нужно сделать senior?», «как долго компания работает и сколько в ней сотрудников?»
Также я заполнил профиля на работных сайтах hh.ru, Харб.Карьера и доработал профиль в linkedin.
И вооружившись этим знаниями, думаете, я пошёл на собеседования? Нет, я пошёл на сайт getmentor, чтобы найти ментора, который бы их проверил резюме и указал на ошибки. Менторы там есть платные и бесплатные. Я нашёл троих бесплатных. Показал им свои наработки, а их советы, мягко говоря, удивили. По резюме, надо добавить улыбающуюся фотографию крупным планом, если такой нет, её нужно сделать, например, при помощи программы appairbrush Я «добавил» себе улыбку при помощи нейросети, а также убрал морщины и разгладил кожу 🙂 Кроме того, у меня были пропуски в резюме, поэтому я добавил, что работал 20 лет сисадмином. Отдельно выделил знание Docker и тестирования — это цениться. И добавил, что руководил двумя джунами на прошлом месте работы.
Далее настроение после потери работы было, мягко говоря, не очень, все 3 рекрутера-ментора сообщили, что в таком состоянии я не найду работу. Нужно быть энергичным и полным энтузиазма. В моем текущем состоянии наклеят ярлык "токсичный" и дальше не будут общаться.
Я пошёл искать психологов на сайтах b17 и ясно Я нашёл двух психологов, чтобы улучшить коммуникацию и восстановить радость. Если кратко, психологи порекомендовали упражнения на дыхание, на работу с телом для проработки стресса. Также совершать маленькие разговоры с окружающими (продавцами, официантам и т.д.), а также перед собеседованием слушать бодрую музыку, например, марши. Я слушал бодрый русский рок, мне помогло.
Далее все IT-компании можно разделить на 3 группы: «киты» - Яндекс, Тинькофф, Авито, Сбер, «акулы» — это компании размером поменьше и «пираньи» - мелкие компании стартапы или «галеры».
"Пираньи" - я отбросил сразу. Я просто поработал в стартапе, кому-то нравится работа в стиле "хоп-хей ла-ла-лей" и 24/7, включая воскресенье, но не мне.
А вот потом, как ни странно, ушли «киты». Я посмотрел видео Семена Левенсона про собеседование в Яндекс. Чтобы попасть в эту крупную компанию, нужно пройти несколько кругов ада. Такой отбор нужен, чтобы отсеять сотни кандидатов на одно место.
У этих компаний даже есть страницы на сайтах, где они описывают, как проходит интервью и как к нему готовиться. Яндекс и Тинькофф
Программирование само по себе объёмно. Есть практическое программирование, а есть программирование как наука — это курс "Структуры и алгоритмы обработки данных". То есть, каждый алгоритм нужно доказать, как теорему, и вывести его скорость в зависимости от объёма данных, так называемая О-сложность. Математики там вагон и маленькая тележка. Самое обидное, в реальной практике используется катастрофически редко. Если раз в год будет задача на алгоритмы, это большой праздник. Мне алгоритмы пригодились только пару раз, когда я создавал форум в виде сильноветвящегося дерева и пару раз использовал структуры вроде хеш-таблицы и тому подобное. Алгоритмы хороши для системного программирования, когда нужно увеличить скорость программы и уменьшить объём памяти. В реальной практике программист — это водитель автомобиля, а не его проектировщик. В коммерческом проекте, никаких тебе рекурсий, графов и асинхронных систем управления лифтами на планете с отрицательной гравитацией в другом рукаве галактики.
Ещё понравилось видео
- Работа в Яндексе — это должен быть осознанный выбор человека, а так как алгоритмы необходимы только на собеседованиях, человек должен приложить усилия для их освоения и для трудоустройства в Яндексе.
- Алгоритмы сами по себе трудоёмки и можно создавать сложные, но компактные задачи и будет видно, как кандидат действует в нестандартной ситуации.
При чём в Яндекс и Тинькофф требуется знания алгоритмов не на базовом уровне, вроде бинарного поиска, а среднего и высшего уровня от поиска графов в ширину и глубину до написания парсера регулярок при помощи конечных автоматов.
Очень хорошо теория программирования от архитектуры процессора и виртуализации до красно-чёрных деревьев разобрано на канале Alek OS
Мне сильно не хотелось 3-6 месяцев своей жизни посвящать изучению алгоритмов, которые нужны только для прохождения собеседований, поэтому «китов» я тоже отбросил.
Сосредоточился на «акулах». Для интересных компаний я писал отдельное сопроводительное письмо и индивидуально резюме с учётом требований вакансии. Очень сильно в написании сопроводительных писем помогает ChatGPT. У этой нейросети хорошо получается описывать, как я хочу развивать продукты компании и быть частью команды. А на одну вакансию нейросеть написала, что я готов писать в блог компании на хабре.
Но «китам» я тоже отправлял своё резюме, через официальную форму на сайте, но от них ни ответа, ни привета.
Я ещё искал работу при помощи сайтов superjob.ru и rabota.ru Для программиста это полное дно. Вакансий мало и они, мягко говоря, странные. Например, программист (разработчик ПО) С# — 50 000 руб. Ну, как-то немного ниже рынка, раза в 3. Вот эта вакансия мне понравилась, которую мне порекомендовал сайт: учитель информатики — 65 000 руб. Вот всю жизнь мечтал работать учителем информатики в школе. 🙂
А теперь самый сок. Техническая часть собеседований, которая делиться на теоретическую и практическую.
В теоретической очень помогло видео Минина
Но опять же ребята, которые проводят собеседование довольно хитрые. Даже на простой вопрос: «А какие есть типы данных?» Начинают задавать наводящие вопросы: «А function какой тип данных? А у class?» Проверяют знания.
Любимые теоретические вопросы: это как страница прорисовывается браузером, также асинхронность, замыкание, прототипы и генераторы. Вот хорошая статья Как работают браузеры
На одном из собеседований задачу на асинхронность явно взяли с Хабра Задачи на собеседованиях. Event loop. JS Это там, где Promise возвращает setTimeout. Поэтому легко решил.
На теоретической части любят спрашивать про CORS, React reconciliation, React Events, useLayoutEffect. При чём до самых болтов и гаек, как там всё внутри устроено.
Хитрые вопросы на паттерны «Чем отличается адаптер от декоратора?» тоже встречались. Много вопросов по Typescript. По мне, TypeScript – человеку, у которого сломаны ноги, связать руки, но ничего лучше не придумали.
Если кандидат претендует на должность middle+ или senior, есть архитектурная секция. Вот хороший сборник видео про архитектуру во фронтенде Мне попалась задача, нужно было разместить на Яндекс.Карте 10 тыс. маркеров.
Ну и самая жесть — это live-coding. Даётся задача и её нужно решить. Задачи были как простые, так и сложные. Задачи на собеседовании, это не реальные задачи, это скорее головоломки для программистов. Опять помог Минин
Задача из этого видео на бинарный поиск мне встречалась дважды. Вот текстовый вариант этого видео.
Для себя сделал простой вывод, чтобы научится решать задачи для собеседований надо решать задачи для собеседований. На leetcode есть блоки Top Interview Questions от уровня easy до hard. Их надо тупо брать и решать.
Задачки там даже уровня easy достаточно занимательные, и чтобы их решить надо знать ряд приёмов: хеш-таблица, два указателя и т.д. Эти приёмы разобраны вот в этих видео Задачи с JS собеседований
Ещё раз задачи на live-кодинг это скорее головоломки, и чтобы научиться решать головоломки, надо знать ряд трюков.
Очень хорошие обучающие видео на канале freeCodeCamp.org правда на английском, но они того стоят.
Ещё важные нюансы. Поиск работы — это отдельная работа, написание сопроводительных, рассылка резюме, переговоры с HR занимали каждый день около 4-6 часов. И рассчитывать надо на срок 1-3 месяца, а в это время надо что-то есть. Хорошо, что я заранее сформировал финансовую подушку, т.е. сумму денег размером 3-6 месячных оклада. Если её нет, настоятельно рекомендую сформировать. Чтобы не было так, не надо, не надо, а потом уже поздно.
Все собеседования я записывал на видео при помощи программы Bandicam, чтобы потом пересмотреть и понять, где я ошибся.
Опять же на собеседование надо одеваться в классическом стиле, подстриженным и выбритым. Встречают по одёжке.
И самый главный совет. «Кто не роет, у того нет норки». Если Вы роете, это не гарантирует Вам норку, но, если Вы этого не делаете, Вам практически гарантировано её отсутствие.
Работу в крупной российской компании, я получил. Не скажу, что было легко, но всё возможно. «Сам не сможешь, само, брат, не сможется» © Виктор Третьяков