Привет! Меня зовут Сергей, я немножко ведущий фронтенд-разработчик и немножко продуктовый менеджер, а еще друг, поэт и музыкант. Как так получилось — история для другой статьи, а здесь я расскажу о другом.  По долгу профессии я сталкиваюсь с наймом новых сотрудников и вижу, какие трудности сейчас поджидают новичков в IT, какие преимущества из текущей ситуации на рынке труда может извлечь наниматель, и чем текущая ситуация может закончиться для рынка и для бизнеса. Я считаю, что симптомы кадрового кризиса проявляются для всех по-разному, но источники связаны и разбираться с этим лучше в комплексе.  Получилась длинная статья, где я даю советы как для новичков в IT, так и для нанимателей, а в конце я предлагаю некоторый выход из сложившейся ситуации. Статья является плодом моих страхов и тайных желаний. Возникла под влиянием случайных и не очень обстоятельств в моей жизни и под впечатлением от статьи о пути начинающего разработчика, автор которой сейчас работает в моем продукте. Так как это статья не о двух стульях, а о найме, рассмотрю процесс подбора сотрудников с обеих сторон. Все, и даже я, когда-то были новичками, поэтому начну с них. Если кто-то скажет, что стать разработчиком легко и можно сразу получать много денег, не верьте. Старая поговорка «без труда не вытащишь рыбку из пруда» верна в любой профессии, и в IT тоже. Да, в IT, может, рыбки и не простые, а с золотыми чешуйками, но крючок тоже должен быть золотым. В порядке убывания перечислю основные препятствия, которые надо преодолеть новичку на пути становления разработчиком. Другие профессии рассматривать не буду, так как мало в них понимаю. Лень, конечно, двигатель прогресса, но лишь отчасти. Чтобы получить первую работу, нужно побороть лень, так как учиться придется долго. Прежде чем лень начинает что-то двигать, кто-то должен сильно потрудиться. Например, изобрести/сконструировать первый велосипед, первый лифт, первый водопровод, а потом уже лень создаст спрос на эти продукты, облегчающие жизнь — лениться будут уже совсем другие люди.  Другими словами, чтобы что-то автоматизировать и начать этим пользоваться, сначала нужно этому научиться. Сама по себе лень не сдвинет никого с места, скорее всего, даже будет вставлять палки в колеса. Чтобы постоянно бороться с ленью, а также пройти через остальные препятствия, нужно найти мотивацию. Денежная мотивация может работать первое время, но обычно ее не хватает, чтобы держать вас в тонусе год или два (а раньше ни гор, ни горстки денег вы, скорее всего, не увидите).  Лучшая мотивация — быть реально заинтересованным тем, что вы делаете. Для этого ходите на конференции, митапы или смотрите видео с них, ищите то, что вас заинтересует. Мотивацию нужно искать с самого начала обучения разработке. Если вам неинтересно это направление, то, скорее всего, путь будет сложным и неэффективным. В итоге вы потратите время впустую. Помните, что хороший электрик зарабатывает в разы больше плохого программиста. Да, вы, наверно, слышали про 20-летних разработчиков-студентов, которые получают по $ 8000, такие есть. Но, как правило, они начали программировать еще в 6 классе: разрабатывали сайты для школы, игры с друзьями. Обратите внимание, что часто в этих саксесс-стори к 20 годам у них уже есть 6-7 лет опыта, и самое важное — опыта, от которого они получали удовольствие. Превратите свое обучение и работу в хобби, тогда у вас все получится. Я видел много примеров, как люди окончили IT-курсы только потому что «уплочено», или потому что «жена подпинывает», но после курсов даже не идут на собеседование.  Кстати, дополнительной мотивацией может быть возможность иммигрировать или работать дистанционно. Но если вам не нравится процесс или результат работы, а хочется только иммигрировать — скорее всего, это не сработает. Разные курсы в интернете предлагают научить программировать за три месяца, полгода или год. За свою жизнь я нанял порядка сотни IT-специалистов, прособеседовал 1000+ и никогда не встречал разработчика, который бы чему-то научился за три месяца. Один раз встретил того, кто научился за год.  Правда, это была фантастическая история, когда человек пахал с утра до вечера, не выходя из дома, ни на что не отвлекаясь: просто взял таймаут от личной жизни и работы. Но такое себе может позволить не каждый. По моему мнению, курсы дают достаточно теории и совсем мало практики. Тем, для кого проходить курсы — это хобби, знаний они дают достаточно. Для тех, кто хочет изменить свою жизнь — нет.  Моя рекомендация: помимо курсовых работ, пробуйте делать что-то самостоятельно. Особое внимание обратите на способность писать код: язык программирования должен быть на кончиках пальцев.  Можно не знать сложных языковых конструкций, но важно владеть языком свободно.  Чтобы прокачать эту сторону, есть сервисы Codewars, Leetcode или Exercism. Лучше не затягивать и начинать решать задачи по написанию кода сразу, как только познакомились с первыми конструкциями языка. Делать это нужно каждый день. Кстати, по моему опыту, хорошими разработчиками становятся люди с лингвистическим прошлым. Возможно, потому что язык программирования — это еще один способ выражения своих мыслей, работают те же области мозга, которые работают у переводчиков. Предыдущие пункты, конечно, очень важны. Но мы подходим к самому важному — конкуренции. С ней сталкивается каждый новичок в IT. Когда мы в М2 открываем вакансию Junior-разработчика, за пять минут прилетает около 1000 резюме. Весь этот поток начинают разбирать рекрутеры.  Среди 1000 откликов людей без опыта находится около ста с опытом: кто-то делал пет-проект, кто-то помогал на кафедре в институте с написанием какой-то мини-программули, кто-то написал сайт для предыдущей работы (не по IT-специальности), сайт школы и т.п.  Наши рекрутеры (да и не только наши), обычно быстро отфильтровывают тех, кто делал проекты типа «туду-листа», учебные задания и т.п. Их отфильтровывают, так как цель этого этапа — найти тех, кто делал что-то полезное и интересное. Поэтому я не рекомендую давать ссылки на репозитории с учебными заданиями. Лучше набирайтесь реального опыта, один из вариантов, как это сделать, предложу дальше. Допустим, вы дошли до этого этапа, последовательно проходя предыдущие. Скорее всего, у вас нет опыта прохождения интервью, вы не уверены в себе, возможно, заранее настроены на неудачу, так как понимаете, что область сложная. Это нормально, через такое проходят все. Я рекомендую начинать проходить собеседования как можно раньше. Например, ищите вакансии вашего профиля, но в компаниях попроще. Это вас ни к чему не обязывает, но дает хороший опыт. После нескольких встреч с рекрутерами и нескольких технических интервью на собеседовании в компанию мечты или на реально интересную позицию у вас не будут трястись поджилки. Если вы уже прошли обучение, готовы завтра выходить на работу, но еще ни разу никуда не собеседовались — порепетируйте. Можно попросить знакомых тестово пособеседовать вас. Круто, если это знакомый, который разбирается в IT, или ваш друг по обучению. Если таких знакомых нет, можно бросить клич в соцсетях или найти человека, который сделает это за деньги (сейчас много технических менторов, помогающих с подготовкой к собеседованию).  Обязательно просите обратную связь: что было не так, что стоит подтянуть, на что обратить внимание. Делайте это независимо от того, тестовое собеседование или реальное, будьте настойчивы, обратную связь давать никто не любит, но вам она нужна, чтобы улучшить свои навыки в следующий раз.  Да, этот пункт повторяется, и это не ошибка. Если вы пришли в IT, то учиться придется постоянно. Если кажется «вот достигну уровня мидла или синьора, и на этом все» — это не так. Сфера развивается стремительно, каждую секунду появляются новые библиотеки, каждый месяц — новые фреймворки. Каждый год что-то устаревает, становится немодным, небезопасным.  Если вы не готовы постоянно учиться и находиться в бесконечном поиске, то профессия IT-специалиста не для вас. Лучше не идти сюда, иначе можно пополнить ряды депрессивных айтишников, которых в отрасли недолюбливают. Всем хочется сразу нанять сотрудника, который без усилий или вложений со стороны компании уже на следующий день начнет приносить компании деньги, никакой, даже самый супер-пупер лид, не может разобраться в проекте по щелчку пальцев; талантливого разработчика, да еще и в нужном компании стеке было найти тяжело и в лучшие времена, что говорить о текущем положении дел. Почему бы не пойти иным путем? Любой джун надеется стать синьером, а на 1000 джунов найдется хотя бы один такой талантливый, который через год станет мидлом. И это будет мидл, который будет разделять наши ценности. Я не буду рассказывать, как мы в компании ищем мидлов, синьеров и краснокнижных лидов — это секрет фирмы. Но эта часть статьи о том, как мы ищем перспективных джунов. Возможно, наш опыт будет полезен другим компаниям и нанимающим менеджерам. Скорее всего, вы и сами это знаете, но джуновские вакансии не нужно рассылать по базе кандидатов. Их можно просто выложить на сайте поиска работы и ждать откликов. Здесь принцип простой: если джун не откликается на вакансию, то и в работе он, скорее всего, будет вести себя так же. Все-таки компании нужен инициативный разработчик, который будет сам искать ответы на свои вопросы, а не ждать, когда вопросы появятся у руководителя. Но один момент — вакансия должна быть привлекательной. Не отталкивайте джунов чрезмерными требованиями: критично взгляните на текст вакансии и перенесите максимум пунктов из «требуется» в «желательно». Коснитесь перспектив развития в вашей компании. Обязательно упоминайте все модные технологии, которые используются в проекте, это повысит конверсию на следующих этапах, так как соискатель будет заинтересован. Чтобы не терять время HR и менеджеров, на джуновские вакансии лучше всего ставить «заградительный тест» и добавить его в сервис по поиску работы. Без прохождения этого теста не будет возможности отправить отклик в компанию. Такой тест можно сделать с помощью CodeSandBox, в тексте задания можно дать краткую инструкцию по пользованию сервисом.  Тест не должен быть сложным, обычно я рекомендую задачи на 10-20 минут. Условие задачи должно быть сформулировано в соответствии с направлением, в котором вы ищите специалиста. Лучше сформулировать задачку так, чтобы соискатель не мог найти решение в интернете. Это не задача на смекалку, это не олимпиада, это простейший тест на владение навыками написания кода. Не пренебрегайте этим советом, так как рынок переполнен джунами, которых мама или муж/жена привели за ручку, либо они просто надеются на авось. Несложный проверочный тест на базовые технические знания помогает отсеять 90 % нерелевантных откликов. Соискатель по этому заданию тоже сможет адекватно оценить свои силы, для этого в тексте задачи лучше указать, что вы ожидаете решения задачи в течение пятнадцати минут. В нашей компании на этом этапе подключается HR-отдел. Они смотрят, был ли у соискателя какой-то опыт работы. Обычно многие джуны уже занимались пет-проектами, часть из которых очень интересная.  На моей памяти кто-то делал интернет-магазин для мамы, один парень делал определение подходящих гитарных аккордов по мелодии, было много мини-игр для изучения языка, какие-то мини-утилиты для предыдущей работы или учебы, скрипты для автоматизации процессов, arduino, raspberry pi.  На этом этапе HR подходят творчески: обычно они смотрят проекты джунов и выбирают тех, у кого в портфолио есть что-то интересное или сложное. Да, этот пункт не автоматизировать, как правило, такие резюме уникальны, но затраченные усилия того стоят. На этом этапе снова отсеиваются 90 %, и остается 1 % соискателей, которые доходят до собеседования. Этот этап самый сложный, долгий и ответственный, несмотря на то, что до него доходят избранные. За этих ребят обычно нужно побороться: у них, скорее всего, уже есть пара офферов или они получат их в процессе. На собеседовании с джунами нужно всегда помнить, что для них это одна из первых встреч с IT-работодателем. Поэтому я рекомендую всегда начать с просьбы рассказать о себе и предыдущем опыте. Если перед вами вчерашний школьник, спросите, почему он решил стать разработчиком. На этот этап хватит минут 10, важно не прерывать рассказчика на середине предложений, а дать обо всем рассказать — это расслабит его и настроит на собеседование.  Дальше расскажите о проекте, почему он важен и чем интересен, говорите доступно и воодушевляюще. Джунам важно узнать, что они получат в качестве опыта и как смогут развиваться: кто будет помогать, есть ли перспективы роста и т.п. Этот мини-рассказ должен занять минут 10-15. Человек, скорее всего, ничего не запомнит, но это оставит приятные воспоминания и расположит его. Это замечание валидно, если у вас уже работающий и зарабатывающий продукт. Если у вас стартап, который еще не успел выстрелить, на этапе рассказа о проекте стоит сосредоточиться сильнее. Тут важно уловить искру заинтересованности в его глазах. Обязательно уточните, не осталось ли у него вопросов и если их нет — не мешкайте, сразу дайте простую задачу по написанию кода на 5-10 минут. Это переключит всех на нужный лад и сэкономит ваше время. Мы проверяем, знает ли соискатель основы. Для фронтенда это замыкания, умение перебирать элементы массива.  Если соискатель чего-то не знает, не зацикливайтесь на чем-то конкретном: подскажите метод. На этом этапе важно разглядеть способность алгоритмически мыслить, а не знание наизусть документации. Я разрешаю пользоваться документацией, иногда даже настаиваю на этом.  Если соискатель попросил пройти первый «заградительный тест» кого-то другого (оказывается, такие услуги есть даже на «Авито»), он не сможет решить быструю задачу на собеседовании. Я считаю, что на этом можно завершить встречу.  Рекомендую не тянуть, если человек  не смог решить задачу даже с вашими подсказками, и можно сразу на это указать. Я в таких случаях честно говорю, что, скорее всего, человеку не хватает практики, прошу не расстраиваться, рекомендую сервисы, на которых можно набраться опыта, и желаю удачи.  Здесь важно не оскорблять человека подозрениями, что он не самостоятельно решил тестовое задание. Сейчас это неважно, ведь вы никогда не можете быть уверены, обманул он, впал в ступор из-за стресса собеседования или просто не хватает квалификации.  С задачей должны справляться хотя бы половина соискателей, если это не так, возможно, вы недооценили сложность задачи или не работают предыдущие этапы. Обычно честная беседа помогает вывести человека из стресса, если он не ожидал такого исхода встречи, вы жмете руки и все остаются довольны. Вы не потратили много времени на собеседование и проверку задач, а соискатель получил опыт и понял, какие ему нужно подтянуть навыки.  Если человек решил тест, мы приступаем к последнему этапу собеседования. Я рекомендую давать сложную задачу, с которой даже самый крутой синьор в вашем штате просидит минут 20. Здесь мы проверяем логику и умение претворять мысли в код, поэтому не нужно подбирать хитрые задачи на скрытые возможности языка или на редко используемые. На сложные задачи джун обычно тратить около 60 минут, хотя был случай, когда и джун решил ее за 20. В отличие от «заградительного теста» это должна быть сложная и относительно законченная задачка. Например, мини-игра, калькулятор с особыми правилами, сложный компонент с анимацией. Тут обязательно в условия решения ввернуть 2-3 библиотеки, с которыми у соискателя не было опыта. Тут должна быть какая-то заготовка. Но это уже не типовое задание, его лучше подготовить офлайн в зависимости от вопросов, которые вызывает у вас кандидат.  Что мы узнаем на этом этапе:  как соискатель умеет разбивать код на кусочки (в зависимости от языка: функции, компоненты или классы); как он организует код в папках; насколько он аккуратно обходит граничные случаи; может ли он в сжатые сроки разобраться с новыми для себя технологиями. Давайте домашнее задание только на финальных этапах, когда и вы, и кандидат понимаете, что у вас сложился коннект. Если вы нашли «того самого» — сразу или максимально быстро делайте ему предложение о работе.  Если у вас остались сомнения или понимаете, что человек не подходит — присылайте отказ и запускайте второй круг поиска.  Да, процесс может показаться сложным, но судя по моей практике, он того стоит. Так вы сможете нанять человека, который будет помогать вам решать задачи и зарабатывать деньги для компании, а не того, кто будет постоянно просить помощи и вам придется работать за него. И не самый приятный момент, который редко, но случается, даже если отбор был сложным. Если вы поняли, что ошиблись с джуном, не тяните и расставайтесь как можно раньше. Морально это тяжело, но думайте о том, что вы экономите деньги компании и свои усилия, которые сможете потратить более эффективно. По моим ощущениям, девушки в разработке не уступают парням. Например, в управлении фронтенда нашей компании работают четыре девушки (это 15%), одна из них руководит управлением, и я не знаю, кто бы справился лучше нее. В соседних управлениях гендерное соотношение примерно такое же. Интересно узнать, как в других компаниях отбирают джунов. Если у вас есть интересный опыт, поделитесь им в комментариях. За последние полтора года в России сложилась сложная ситуация с поиском высококвалифицированных разработчиков. Бизнесы потеряли в экспертизе, это коснулось практически всех IT-компаний, которые я знаю, кто-то закрыл внутренние стартапы и сосредоточился на основном продукте.  По моей оценке, высококвалифицированные кадры России сейчас перегружены и заниматься обучением новых сотрудников им некогда. Из-за этого некоторые компании свернули обучающие программы, а найм джунов и стажеров сократился на порядки.  В то же время предложение джунов/стажеров велико: примерно 1000 человек на место, по моей оценке, если не больше. Причины две: Сокращение количества вакансий, так как часть синьоров уехала за границу и нагрузка на оставшихся возросла и им некогда заниматься воспитанием джунов. Другая часть синьоров перешла на удаленную работу, что также затрудняет менторинг. Увеличение спроса. Он вызван, во-первых, карантинными мерами. IT-сектора это почти не коснулось, он был наиболее приспособлен к удаленной работе. Во-вторых, политическими обстоятельствами, которые как раз повлияли. IT-сектор оказался наиболее приспособлен и к миграции. В-третьих, отсрочки от призыва в армию сделали свое дело. В-четвертых, кажущаяся доступность профессии в связи с появлением множества ускоренных курсов. К чему это ведет? Рынок высококвалифицированных кадров истощается по независящим от нас причинам, а рынок новичков истощится в ближайшее время по законам рынка. Такое большое предложение и такой маленький спрос должны привести к закрытию курсов, направлений в институтах, так как IT-специализация перестанет быть привлекательной. По логике, в ближайшее время случится провал среди мидл-разработчиков. Они перераспределятся по должностям синьеров и лидов, зарплаты резко пойдут вверх. Самое страшное, что может произойти — бизнес этого не выдержит и IT-экономика рухнет, тогда мы все останемся на улице. Что сделать, чтобы этого избежать? Собрать волю в кулак и начать готовить джунов на места текущих мидлов. Да, они не способны решать задачи «вчера» и полностью самостоятельно, но они способны решать то, что для мидлов кажется рутиной. Джуны будут делать такое эффективнее, потому что им это в новинку, а значит — интересно. Таким образом в перспективе двух-трех месяцев они разгрузят мидлов, мидлы разгрузят синьеров, синьеры — лидов. А через полгода-год смогут самостоятельно выполнять большинство бизнес-задач. Ну и добрался до того, зачем я вообще писал этот текст.  Недавно вышла статья о трудностях современного джуна в 2023. Там разгорелась дискуссия, в которой я принимал активное участие. Ко мне в личку пришел джун, который попросил помочь рекомендациями и провести для него тестовое собеседование с обратной связью.  И тут я вспомнил, как пару недель назад участвовал в хакатоне. У нас была какая-то идея, мы создали прототип, получили свой уровень адреналина и дофамина, а наутро забыли обо всем. Но ведь много джунов в этом мире живут и не знают, чем бы им заняться, чтобы получить опыт, да еще в работе с более опытными товарищами.И я предложил ему присоединиться к разработке нашей заброшки.У меня возникла мысль, что таких заброшек — миллион. Те из нас, кто участвовал в хакатонах, создали кучу прототипов, а потом бросили их, так как «заняты по рабочим делам» и «нет времени вернуться к проекту».  Я решил собрать сообщество, которое поможет друг другу: довести прототип до ума; помочь джунам получить их драгоценный опыт; спасти IT-индустрию в России. если идея стоящая, на нее, может быть, найдется инвестор — уже профит. Менторы смогут отбирать стажеров на свои проекты, а если на работе откроется позиция, у вас уже будет подготовленный джун с опытом, в которого вы сами заложили нужные ценности. Такие проекты дают возможность личностного роста — во многих компаниях закрыли набор джунов, а потребность делиться опытом у кого-то осталась. Какой опыт получит джун? работа в реальной команде, над реальным, а не учебным проектом; работа с git, наверняка, будут и конфликты, если проект более ли менее сложный; новые библиотеки, не устаревшие с курсов, а те, которыми пользуются сегодня; опыт прохождения собеседований, если на проект будет конкурс, то без отбора не обойтись. Есть профит и для бизнеса и инвесторов. В таком агрегаторе можно найти интересный проект с ядром команды и инвестировать в него. Идея не нова и уже есть закрытые акселераторы на эту тему. Но такого, чтобы любой мог присоединиться, я не нашел. Первым таким открытым проектом может стать сам агрегатор. В нем есть и возможности для бекенда, и для фронтенда: рейтинги как у идей, так и у менторов, ачивки, авторизация; есть и что потестировать, и что подизайнить. Следующими проектами могут быть чат-боты (у меня у самого есть несколько идей), мини-игры (тоже есть идеи), какие-то навыки Алисы, ну и так далее.  Есть идея? Велком! Описали, собрали команду и погнали. Синьоры, джуны и сочувствующие, приглашаю с предложениями в комментарии, если их будет много, решим, как реализовать такой проект.