Когда у меня была собственная компания, я большую часть времени работал с джунами. Ещё до того, как это стало модным и необходимым. Очень многие компании в заказной разработке с ними работают, потому что в этой отрасли меньше денег и не такие сложные проекты. Почему я сказал, что это стало необходимым? Давайте разберёмся.
Всем привет! Меня зовут Глеб Михеев, я занимаюсь разработкой с 2003 года. В прошлом я основал компанию по заказной разработке и 9 лет там успешно отгалерил в роли CTO. Седьмой год руковожу программным комитетом конференции FrontendConf. Веду в Telegram канал «Уставший Техдир». Лидер команды Виртуального Ассистента в В2С в Сбере.
Ситуация на рынке
Сначала посмотрим на рынок. Подчеркну, что это не настоящее исследование, а поверхностные выводы на основе того, что я вижу на HeadHunter.
Вот как выглядит рыночная потребность в специалистах на HeadHunter по состоянию на 19.03.2024: 881 вакансия стажёров, около 2000 — джунов, 130 тысяч — мидлов, 54 тысячи — сеньоров. Всё это звучит серьёзно, но на графике выглядит так:
А сколько резюме в активном поиске?
Покрыто только 30 % спроса на мидлов, и только 2 % (!) — сеньоров. Сеньора сейчас днём с огнём не сыщешь. Денег больше даём, и проекты интересные, и тамада хороший, но найти всё равно затруднительно.
Я начал отслеживать количество вакансий за год до этого, в феврале 2023, и измерял каждый месяц. Вот как поменялось предложение за прошедший год:
Как видите, резюме всех категорий было больше. И если конкуренция на позиции стажёров и джунов снизилась до более вменяемых значений (поэтому стрелочки зелёные, так как избыток сокращается), то с мидлами и сеньорами стало только хуже (доля покрытия вакансий резюмешками снизилась). И ситуация продолжает усугубляться. Причины понятны: когда человек становится сеньором, его карьера не заканчивается, он может уйти в тимлиды или техлиды, открыть свою компанию.
А теперь оценим текущую нехватку специалистов не в процентном, а в количественном выражении:
Последствия
Рынку не хватает почти 144 тысячи специалистов для нормального развития бизнеса. У этого есть несколько последствий:
Высокая конкуренция за кадры. Есть компании с хорошо развитым техническим брендом, сверхинтересными задачами и большим бюджетом, они могут позволить себе нанимать с перегретыми зарплатами. А есть компании без всего перечисленного, им намного труднее. К тому же зачастую найти хорошие высококвалифицированные кадры невозможно, они всегда будут предпочитать компании с именем.
Долгий поиск нужных специалистов. Приходится искать по много месяцев. Поиск сеньора в полгода для многих компаний стал нормой, а некоторые закрывают позицию сеньора ещё дольше.
Снижаются требования к кандидатам. Приходится закрывать глаза на какие-то недостатки, и в итоге мы нанимаем вроде бы мидлов и вроде бы сеньоров. А по факту, путём компромиссов получаем недостаточно квалифицированные кадры, что роняет производительность труда в коллективе
Уменьшается время работы в компании. Поработал полтора года, тебя начинают переманивать и ты спокойно уходишь на более выгодное место. Есть даже те, кто пропагандирует такую стратегию поведения для максимизации заработка (дожили).
Растут зарплаты. Чтобы как-то удержаться в конкуренции за специалистов, компаниям приходится повышать зарплаты. По данным SuperJob, c 2008 года зарплаты в ИТ выросли в среднем на 376 %. Но если посмотреть отдельно по специальностям, всё куда интереснее.
Кто из вас в последние годы хоронил PHP? Он живее всех живых, а PHP-программисты в процентном выражении выросли больше всех. На втором месте — Java-программисты. Java тоже все хоронят и прочат на её место всякие Scala и Kotlin’ы, а воз и ныне там.
В экономике страны всё это приводит к тому, что общая производительность труда снижается: отрасли не хватает людей. А имеющиеся обходятся всё дороже, растут издержки на привлечение и удержание, а значит и на производство продуктов. Люди чаще меняют работу: только вышел на какую-то продуктивность, как уже собрался в другое место. Один мой знакомый из большой технологической компании рассказал, что один продуктивный сотрудник обходится им в 6,5 зарплат. Здесь учитывается и стоимость найма, и тот адаптационный период, когда человек осваивается на новом месте, с новыми инструментами и инфраструктурой, и на «полную мощность» он выходит примерно через полгода-год после прихода в компанию.
Ещё одно следствие для экономики — дефицит специалистов в критически важных областях. Если в стране не сделают пару новых интернет-магазинов, то ничего страшного. А в некоторых областях очень важно быстро развиваться, чтобы конкурировать на мировом уровне, как технологически, так и экономически и политически вывозить изменения. Нужно быстро уметь создавать новые рыночные инструменты, платёжные системы, торговые площадки и так далее (чтобы справляться с инструментами внерыночной конкурентной борьбы).
И наконец, снижается конкурентоспособность отдельных компаний, которым не хватает кадров, они разрабатывают медленнее других.
Что ещё важно?
Давайте вернёмся к статистике:
Стажёры и джуниоры — это те, из кого в будущем получаются мидлы и сеньоры. Сейчас нам не хватает 143 000 опытных разработчиков, а на входе мы имеем 2 796 человек. Разрыв в 51 раз. Это драматически много. При этом Минцифры проводят куда более серьёзные исследования, и по их мнению в стране на самом деле нехватка в 500-700 000 разработчиков. Как нам заполнить этот вакуум, если мы мы за раз нанимаем только 3 000 новичков? Конечно, не все выкладывают резюме. И иногда приходишь в компанию, там одна вакансия React-разработчика, а за ней 150 позиций. Так что истинное положение вещей может быть еще хуже получившейся статистики.
Что делать?
Сегодня компании сильно зависят от кадрового рынка. А мы, как производители ПО, знаем, что с зависимостями надо работать. Нужно сделать так, чтобы они меньше на нас влияли. Как? Научиться растить свои кадры, а не ждать, когда они появятся на рынке.
Что собой представляет «специалист мечты», с которым хотелось бы работать? Вопрос дискуссионный, и я пришёл к такому мнению, что это человек:
в нашей инженерке;
в нашей культуре и процессах;
лоялен компании.
Кто на рынке больше всего подходит под эти критерии? Никто. Такого человека можно только вырастить внутри компании. Это молодой айтишник, выпускник ВУЗа или самоучка, который пришёл в компанию стажёром или джуном, и который впитал нашу культуру и благодарен компании за обучение и возможности.
Как растить кадры?
Если спросить коллег, как интегрировать джуна, вам обычно ответят: «Давайте сделаем лягушатник и программу обучения, тестовые проекты. Они там полгода побарахтаются, а мы будем лучших забирать». Очевидное решение. Кто-то скажет: «А давайте их как-нибудь изолируем, ограничим им возможность набедокурить с архитектурой, планированием, ещё чем-нибудь. Даже если новички будут ошибаться, это не повлияет на наши процессы».
Но получается, что все эти идеи предлагают создать условия, минимизирующие ошибку. Но это приведёт к тому, что такие специалисты «вырастут» в тепличных условиях. Они будут плохо ориентироваться в планировании, в задачах и целях компании, в портрете клиента. Поэтому я считаю, что обучать нужно не в изоляции, без отрыва от производства. То есть вместо минимизации ошибок мы создаём среду, благоприятствующую росту.
Какой должна быть среда обучения?
Есть много разных подходов, подробно описывающих, как совместить обучение с производством:
Apprenticeship;
Dual Education System;
Kaizen;
Just-in-Time Training;
Blended Learning;
70-20-10 Model.
В разных ситуациях они работают по-разному, где-то лучше, где-то хуже. Но, я буду говорить исключительно о принципах, помогающие максимизировать рост при минимальных расходах и трудозатратах, вне зависимости от принятой методологии разработки.
Есть три составляющие, с которыми нам предстоит работать:
Найм (как мы нанимаем) → Среда (куда мы погружаем новичка) → Действия (набор активных действий для максимального результата)
Наша цель — сделать из новичков не изолированных джунов, а нормальных мидлов, наиболее готовых к работе.
Найм
Нужно выбирать таких людей, которые которые с большей вероятностью вырастут. Обычно говорят про «горящие глаза», но как-то не очень понятно, что это такое. Давайте декомпозируем:
Мотивация и живой интерес. Профессиональное развитие начинается там, где есть глубокий интерес, жажда экспериментов и стремление к знаниям. Лучший кандидат для нас тот, который читает книжки по теме, смотрит подкасты, экспериментирует вечерами и в выходные. Ты сразу понимаешь, что на него надо будет потратить намного меньше времени для того, чтобы он преуспел. Он уже тянется к знаниям, ему нужно лишь помочь.
Мотивация и живой интерес. Пожалуй, самое важное качество. Профессиональное развитие начинается там, где появляется глубокий интерес, жажда экспериментов и стремление к знаниям.
Целеустремленность и трудолюбие. Кроме желания, должна быть дисциплина и умение работать на результат. Важно, чтобы человек понимал свою цель и был готов системно вкалывать для её достижения.
Постоянное саморазвитие. Самообучение в свободное время, чтение книг, подкасты, эксперименты, нетворк — всё это определяет темп и качество накопления полезных знаний и умений.
Самостоятельность и ответственность. Важно определить, что кандидат способен к самостоятельной работе и готов брать ответственность. Без этого расти не получится.
Принятие ошибок и самоанализ. Ошибки — самый ценный актив, крайне важен навык принимать ошибки и обратную связь, анализировать её и учиться на своих ошибках.
Среда
Мы нашли и наняли тех самых перспективных новичков. Как сделать так, чтобы потенциал не пропал? Нам нужно создать подходящие условия.
Принцип падаванства. С первого дня джуниор работает в паре с наставником и только над боевыми проектами. Они совместно разделяют задачи и ответственность за них. Не должно быть ситуации, когда падаван брошен на произвол судьбы.
Принцип поддерживающей среды. Важно, чтобы каждый в окружении был готов помочь. Окружение должно быть максимально дружелюбным. Нужно, чтобы в команде было принято задавать вопросы и запрашивать помощь как на уровне культуры, так и на уровне процессов.
Принцип прозрачности и информированности. Необходимо создать чёткое понимание текущих задач, ожиданий и последующих шагов. Понятные производственные процессы, зона ответственности, прозрачность показателей и целей — всё это минимизирует неуверенность и фокусирует на ожидаемом результате. Минимум двусмысленности и «само-собой разумеющегося».
Принцип инженерного равенства. Не должно быть дискриминации в коммуникациях, процессах и работе. Вытесняя новичка в «безопасную» среду или дискриминируя его по принципу «что с него взять, он же джун», мы купируем саму возможность развития.
Действия
Только удочка. Наша задача — не выполнять работу за джуна, а подсказывать, как прийти к решению самостоятельно. Только так вы разовьёте его аналитическое мышление через рекомендации и принципы работы. Готовые ответы тормозят обучение и делают новичка зависимым от посторонней помощи.
Развивающая обратная связь. Каждая обратная связь — это возможность обучения. Поощряйте правильное поведение, указывайте на ошибки и объясняйте, почему они критичны. Это ключ к самостоятельности и развитию критического мышления.
Разнообразие и постоянное усложнение задач. Нужно регулярно варьировать задачи по сложности, постепенно увеличивая их комплексность. Это позволит джунам расширять свои границы и глубже понимать производственные процессы.
Активное наставничество. Наставник должен постоянно быть в коммуникации с джуном. Нужно создавать ощущение поддержки, травить байки из профессиональной жизни и отвечать на вопросы. Внезапно, но именно этот подход выстраивает понимание рабочих процессов и культуры компании, ускоряет адаптацию джуниора и его переход к самостоятельному принятию решений.
Делегируйте свою рутину смелее. То, что для вас — унылая скука, для джуна — сложная задача на рост. Вспомните себя в молодости! Привлекайте к простым задачам, разбору багов, рефакторингу, написанию тестов, мокам, разбору низкоприоритетного бэклога и исключений. Делегируйте декомпозицию. Начните с тщательной декомпозиции задач, постепенно уменьшая детализацию и делегируя эту задачу падавану. Это способствует более глубокому освоению процессов и ответственности.
Манифест
Всё рассказанное мной — не откровение. Местами даже банальщина. Мы всё это знаем, где-то слышали. Но иногда так не хватает, чтобы кто-нибудь про это напомнил. Поэтому мы со своими единомышленниками составили манифест-напоминание. Мы назвали его JEDI-манифест (Junior Education Development Initiative) да, аллюзия на джедаев не случайна :)) Он не про большие компании, а про команды. И не про джунов. Он вообще про обучение новичков, которыми могут быть сеньоры, метящие в менеджеры. Эта система обучения строится на уровне того коллектива, в котором вы работаете. И вам никто дополнительно не нужен, чтобы начать это практиковать.
Возможно, позже мы составим для вас и руководства, которые помогут проверять новичков на соответствие описанным здесь критериям. Если вам нравится наш манифест, применяйте его у себя и пишите о результатах. Нам очень хочется узнать ваши выводы, и особенно критику. Можно критиковать прямо на странице манифеста, там есть ссылка на шаблон на GitHub. Всё обязательно изучим и учтём.
Заключение
Мы не сможем поменять ситуацию на рынке, если не откажемся от стратегии хантинга, которой придерживается большинство компаний. Тот океан, в котором все мы пытаемся выловить хороших сеньоров, создан нашими руками: «Ой, нет времени обучать, пусть кто-нибудь другой обучит, а мы у него схантим». Вместо этого рынку очень нужна стратегия взращивания. Если мы, как опытные и умные разработчики, отвечающие за свои команды, примем для себя правило «одна команда — один джун», то мир разработки достаточно быстро изменится. А для этого нам нужно научиться растить людей, а не ждать, пока они вырастут сами.