Итак, начну прямо — ситуация для вас крайне неприятная, но если вы сильны и целеустремленны — вы все равно МОЖЕТЕ найти работу. За свою карьеру я взял интервью у почти 100 инженеров. Треть из них были джуниорами, 12 из которых я нанял или взял на стажировку. Некоторое время я вынашивал идею обобщить свой опыт, так что вот статья.

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

Я разделил свои мысли на части. Естественно, будут исключения из пунктов, упомянутых в статьях, поэтому, пожалуйста, не спешите указывать, что «я не сделал X и все же нашел работу».

Ваше ценностное предложение

В настоящее время инженеры-программисты примеряют обувь, которую уже давно носит большая часть населения. Обувь, в которой бизнес более-менее четко понимает ценность ваших усилий, платит вам Х% зарплаты и берет (100 — Х)% маржи. Хотя это грубое упрощение — идея в том, что бизнес хочет тратить меньше, чем зарабатывает.

Большинство земных предприятий работают именно так, но западная экономика какое-то время была довольно интересной — она была в состоянии дешевых денег. Национальные банки выдавали кредиты на уровне ниже уровня инфляции, что фактически означало, что занимать деньги было выгодно. Доступные кредиты сделали инвестиции более привлекательными, и даже прибыльные предприятия брали кредиты, чтобы ускорить свой рост (и заработать еще больше денег в следующем году). Когда деньги вливаются в компанию без строгих обязательств по возврату инвестиций, довольно легко «давайте просто наймем людей и дадим им построить что-то».

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

С усилением конкуренции компании теперь могут выбирать между людьми со случайными наборами навыков и теми, кто понимает, ПОЧЕМУ они приобрели определенные навыки и как их применять. Так что даже если это ваша первая работа — вам лучше понять, что именно вы можете предложить компании и как сделать идею трудоустройства вас привлекательной. Перестаньте думать о том, что «я могу сделать React», и больше говорите о том, что «я вообще знаю, как создать небольшое приложение для внешнего интерфейса». Поставьте на нем акценты в своем резюме, чтобы обозначить степень независимости, на которую вы можете рассчитывать. Гораздо лучше иметь меньше навыков, но услужливо связывать их друг с другом. Вот почему ваши сторонние проекты или проекты с открытым исходным кодом так важны для позиции начального уровня. Завершив что-то, вы докажете, что можете доводить дело до конца и собирать различные кубики Lego.

Автономность

Вы начинаете свою карьеру и нуждаетесь в активном наставничестве — это нормально, хорошо, на самом деле. Однако разные младшие инженеры, как правило, имеют совершенно разную степень независимости. Представим двух персонажей: Гжегожа и Малгожату. У обоих одинаковая предыстория (предположим, что у обоих есть степень в области информатики, и оба пытались создать пару любимых проектов, прежде чем присоединиться к компании). Но они ведут себя очень по-разному. Например, давайте подумаем о добавлении новой конечной точки с помощью Redux. (Redux — это широко распространенная реализация конечного автомата, используемая для управления данными в некоторых приложениях React.)

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

Как наставник инженера, у вас теперь есть два варианта: объяснить конкретную проблему простыми словами или объяснить весь Redux. И поверь мне; выгоднее инвестировать время сразу.

Теперь давайте посмотрим на Малгожату. Она начала работать над тикетом, но он не очень доволен копированием старого кода и хочет понять, ПОЧЕМУ она делает это именно так. Это заставляет ее стартовать намного медленнее, но она приходит на встречу с вами и задает конкретные вопросы о Redux. В то время как ее коллега выполнила в три раза больше работы — она только заканчивает свой первый билет. Однако, получив более широкое представление о том, как все работает, она может быстрее браться за более амбициозные задачи и превзойти Кшишека всего за несколько месяцев. Получая больше понимания, она улучшает свое активное обучение и со временем становится гораздо более самостоятельным.

Это очень похоже на поговорку: «Дай человеку рыбу, и ты накормишь его на один день. Научи человека ловить рыбу, и ты накормишь его на всю жизнь». Это ситуация.

Подводя итог, попытайтесь понять, как все устроено и почему оно работает так, а не иначе, и задавайте вопросы.

Критическое мышление и способность проводить собственные исследования

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

Хотя все сказанное ниже может показаться очевидным для некоторых из вас — поверьте мне, некоторым людям было бы очень полезно улучшить это. Сегодня вы получили высокоэффективное средство поиска и настройки кода из интернета — различные генеративные предварительно обученные преобразователи (GPT), одним из самых популярных из которых является ChatGPT. Попробуйте выполнить обратный поиск того, что вам было предложено, в идеале найдя надежный источник данных. Несмотря на все недостатки, это очень эффективный способ самообразования после того, как вы разработаете цифровую гигиену и критически изучите предоставленные данные, прежде чем принимать их за правду.

Отличать качественную информацию — это навык, который со временем улучшается, но постарайтесь разделить то, что вы видите в Интернете, на четыре категории:

  1. Совершенно неправильно / ложь
  2. Немного не так, но в целом нормально
  3. Законный, но несовершенный
  4. Хороший

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

Поскольку мы коснулись инструментов ИИ в целом, на данный момент ясно, что они значительно повышают вашу производительность. Хотя некоторые компании воздерживаются по юридическим причинам, игнорирование ИИ поставит вас в невыгодное положение по сравнению с людьми, которые его используют. Так что вместо того, чтобы бояться, что ChatGPT возьмет на себя вашу работу, лучше научитесь эффективно его использовать. Не ждите, что все компании будут готовы нанять вас как человека, который может выполнять работу Х без ИИ. Большинство предпочитает нанимать, если вы можете использовать доступные инструменты, чтобы быть более продуктивным.

Я много говорил об ИИ и поиске, но книги и статьи остаются отличным способом обучения. У меня был хороший опыт работы с некоторыми(!) курсами Udemy.

Обдуманные затраты времени

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

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

  • Гит. Возможность перебазировать, хранить и выбирать вишни будет иметь огромное значение в вашей повседневной работе. Все команды git умещаются на одной странице; Вы можете найти шпаргалки по git в Интернете. Также может помочь проверка того, как работает gitflow и разработка на основе магистрали.
  • SQL. Независимо от того, являетесь ли вы бэкенд-инженером или нет, изучение SQL сыграет вам на руку на вашем пути. Шпаргалка по SQL также умещается на одной странице, и ее изучение на базовом уровне занимает пару дней.
  • HTML, CSS. Как и в случае с SQL — я не ожидаю от вас полного стека. Однако только некоторые компании будут довольны тем, что вы создадите тикет для другой команды с просьбой изменить метку кнопки.
  • Узнайте, какие инструменты отладки у вас есть для выбранного языка. Легко понять удобство отладки print/console.log. Потратив день на изучение своего инструментария отладки, вы в последствии сможете многое изменить.
  • Узнайте, как код попадает с вашего локального компьютера в рабочую среду. Вы можете создать несколько приложений JAMstack и бесплатно развернуть их на страницах Netlify или GitHub. Если вы хотите углубиться, вы всегда можете запустить контейнер Docker с помощью Jenkins и покопаться в нем.
  • Кстати, о Докере. Я знаю, что это звучит пугающе, и я не буду советовать вам идти вперед и создавать свои контейнеры. Но понимание того, как извлекать и запускать существующие образы локально, было бы очень полезно.
  • Узнайте, как эффективно перемещаться по кодовой базе. Независимо от вашего выбора, встроенный поиск IDE, grep или что-то еще. Вы не должны бояться найти функцию в кодовой базе из 10 000 файлов или открыть файл по его имени (cmd/ctrl + P в VSCode).
  • Базовые структуры управления на выбранном вами языке. Написание операции уменьшения/фильтрации на JS или обработки массива на Python сэкономит вам время на выполнении домашних заданий и сделает ваш код более профессиональным.
  • Ваш инструментарий языка программирования. Вместо того, чтобы вручную форматировать свой проект с открытым исходным кодом, вы можете автоматизировать это и тратить больше времени на создание функций.

Алгоритмы

Многое зависит от того, куда вы будете подаваться, но многие технологические компании бросят вам какую-то техническую задачу.

Это то, что выпускники CS будут иметь преимущество по сравнению с самообучающимися и буткемперами.

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

Большинство компаний, с которыми я сталкивался, не будут ставить перед вами жесткие задачи по Leetcode, поэтому вы можете начать с того, что освоите алгоритмические задачи.

Собираюсь на реальные собеседования

Вы можете пройти собеседование только в том случае, если придете на него.

Большинство компаний не отвечают вам. Ты не один. Справедливости ради, когда я переезжал в Нидерланды, мой процент ответов составлял 57%, и я подавал заявку в качестве старшего инженера с прошлым опытом руководства во время горячего рынка.

Для юниоров он, скорее всего, будет ниже 10% или даже ниже. Пока игнорировать людей нехорошо — имеем то, что имеем, и давайте найдем способ добиться интервью.

  • Попросите людей порекомендовать вас вместо того, чтобы обращаться самостоятельно. Этому есть много причин, но направления обычно проверяются более тщательно.
  • Если вам нужно, чтобы кто-то в отрасли порекомендовал вас в свою компанию — ходите на встречи и конференции и налаживайте контакты там. Часто люди получают бонусы, если их рефери нанимают, так что не думайте, что вы просите многого.
  • Если вы живете далеко от каких-либо инженерных проектов — попробуйте помогать людям в Интернете и налаживать связи там. Пожалуйста, помните о личном пространстве людей и не переусердствуйте с настойчивостью.
  • Если вы провели исследование и имеете четкое представление о своем ценностном предложении для компании — не стесняйтесь обращаться к менеджеру по найму по поводу вашей позиции. Поэтому я не часто получаю такие запросы. А те, кто это сделал, были хорошо подготовлены и произвели хорошее впечатление.
  • Адаптируйте резюме и сопроводительное письмо к конкретным позициям. Покажите рекрутерам, что вы проделали домашнюю работу по компании, а не просто спамили 100 мест за один день.

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

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

Быть порядочным человеком

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

Несколько слов для тех, кто ищет работу за границей.

Если это ваша первая работа — трезво оценивайте свои шансы. На мировом рынке вы столкнетесь с огромной конкуренцией. Даже в «хорошие времена», когда я нанимал удаленных младших инженеров, за 2 дня на мой пост в LinkedIn откликнулось более 200(!) человек.

Надо ли говорить, что среди них были и яркие кандидатуры.

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

Подумайте, зачем компании кого-то переселять? Нужно быть либо лучше, возможно, уникальным, либо дешевле. Часто оба.

С накопленным опытом ваша конкуренция уменьшится, так что не сдавайтесь. Если вашей конечной целью является переезд, вы значительно увеличите свои шансы, если сначала получите некоторый местный опыт.

Сводка

Изгиб дороги – это не конец дороги… если только вы не повернете
- Хелен Келлер.