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

Прежде чем углубиться в детали, позвольте представиться. Меня зовут Анзар, я работаю фронтенд-разработчиком уже 9 лет, последние 3 из которых — в Ozon Tech, где я занимаю позицию тимлида. За это время я побывал на десятках, а может, и сотнях собеседований — и как кандидат, и как интервьюер. Кроме того, у меня за плечами многолетний опыт менторства и мне приходилось наблюдать, как различные факторы влияют на скорость роста. Все это заставило меня глубоко задуматься о системных проблемах найма разработчиков. Думаю, эта статья будет особенно полезна нанимающим менеджерам, рекрутерам и, возможно, HR-специалистам — она поможет пересмотреть подход к найму.

Грейды разработчиков

Самое простое и часто встречающееся представление о грейдах, с которым я сталкивался, выглядит как диаграмма: чем выше твой грейд, тем более сложные задачи ты можешь решать. Сеньор способен самостоятельно справиться практически с любой задачей, мидл также достаточно независим, но иногда нуждается в поддержке более опытных коллег, джун решает небольшие или простые задачи, его нужно регулярно контролировать и давать обратную связь, чтобы он не потерял фокус. А что же тогда умеет стажёр? Если продолжить аналогию и не углубляться в детали, то стажёр — это максимально несамостоятельный специалист, которому требуется постоянное внимание.

Стоит отметить, что представление, описанное выше, является общим и усреднённым, но и здесь бывают исключения. Например, в Ozon принято считать, что стажёр по уровню знаний и самостоятельности равен джуну, но не имеет реального опыта работы в коммерческих проектах. Однако это исключение не является показательной оценкой для всего рынка, а мой опыт не является отражением официальной позиции Ozon.

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

Слева условная сложность задач
Слева условная сложность задач

Такое представление приводит к тому, что вакансий стажёров и джунов в разы (а то и в десятки раз) меньше, чем мидлов и сеньоров. 

Справедлива ли такая оценка стажёра?

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

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

Структура хард-скиллов разработчика

Итак, из каких навыков и областей знаний состоят хард-скиллы? Как фронтенд-разработчик, я выделяю следующие ключевые моменты (список может варьироваться в зависимости от позиции):

  1. Язык программирования — знание синтаксиса языка: как объявлять переменные, использовать циклы, функции, а также понимание, как выполняется код и работает интерпретатор (сборщик мусора, event loop и т. д.).

  2. Библиотеки и фреймворки — сюда относится всё, что расширяет язык программирования (на фронтенде это React, Vue, браузерное API и др.).

  3. Алгоритмы и структуры данных — дисциплина, которая изучает, как эффективно решать вычислительные задачи и организовывать информацию для быстрого доступа и обработки. Тут, наверное, не нужно долго рассказывать про сортировки и хеш-таблицы.

  4. Дизайн и архитектура ПО — с опытом мы начинаем смотреть на приложение как бы с высоты, оценивая, как различные компоненты должны взаимодействовать между собой.

  5. Околопрограммистские знания — всё, что помогает разработчикам в работе и взаимодействии: системы контроля версий (например, Git), трекеры задач (Jira) и другие инструменты.

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

Могло показаться, что пункты 3 и 6 довольно похожи, но разница между ними заключается в том, что они представляют два разных аспекта работы с кодом:

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

  • Алгоритмическое мышление — это ваше умение писать и анализировать код для решения задач. Это навык, позволяющий вам логически выстраивать алгоритмы, комбинировать циклы, условия и другие конструкции. Это как способность свободно выражать свои мысли с помощью кода. Например, вам дали задачу — вы думаете, как её решить, и пишете код, шаг за шагом.

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

Также стоит отметить, что хотя алгоритмическое мышление и владение языком программирования выделяются отдельно, на практике они тесно связаны. Связь эта односторонняя: можно выучить синтаксис, не имея алгоритмического мышления, но выработать алгоритмическое мышление без знания хотя бы одного языка программирования невозможно. Поэтому, проверяя алгоритмическое мышление, мы автоматически проверяем, насколько хорошо кандидат ориентируется в самом языке программирования.

Многомерный подход к оценке кандидатов

Теперь мы понимаем, что грейд — это многомерный показатель и у кандидатов могут быть разные аспекты, развитые на разном уровне, как характеристики футболистов в игре FIFA. Например, один кандидат может отлично разбираться в браузерном API, а другой — в системах сборки проектов. Как в таком случае оценивать кандидата? И если вернуться к вопросу о стажёрах, как найти хорошего стажёра?

Занимаясь менторством и наблюдая за развитием менти (подопечный ментора) я понял, что алгоритмическое мышление это НАВЫК, на выработку которого нужно потратить много сил и времени, а остальные аспекты (знание конкретных библиотек, фреймворков) скорее связаны с областью знаний.

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

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

Именно поэтому для стажёров алгоритмическое мышление — приоритет №1. Это ключевой индикатор способности к обучению и будущему росту. Остальные технические знания, безусловно, полезны, но на старте они вторичны:

  • Глубокие знания алгоритмов и структур данных критичны в основном для очень специфичных ролей (например, для стажёров в Search или Data Science). Для большинства же вакансий достаточно базового понимания.

  • Знание архитектуры — это важный, но более продвинутый навык, который стажёр будет осваивать постепенно под руководством ментора. Требовать его на входе нереалистично.

  • Знание конкретных фреймворков или инструментов (браузерное API, системы сборки) — это желательный бонус, но не основание для отказа кандидату с сильным навыком алгоритмического мышления. Достаточно и базовых знаний, всё это легко нарабатывается при наличии фундаментального навыка мышления.

Вывод: при отборе стажёров фокус оценки должен сместиться с проверки узкоспециализированных знаний на выявление и оценку потенциала алгоритмического мышления. Это базовый навык, без которого дальнейшее обучение намного сложнее и менее эффективно. Технические детали важны, но их можно освоить на прочном фундаменте умения мыслить логически и решать задачи.

Идеальный кандидат

Итак, наш идеальный кандидат выглядит следующим образом:

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

Преимущества стажёра

Теперь, когда у нас есть портрет хорошего стажёра, давайте попробуем перечислить преимущества найма начинающих специалистов как для компании, так и для стажёров, ведь при грамотном подходе мы получаем ситуацию win-win, где выигрывают обе стороны.

Что получает компания:

  1. Сильная мотивация. Cтажёры часто стремятся доказать свои способности и готовы прилагать максимум усилий для роста и развития.

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

  3. Долгосрочные инвестиции. Обучение и развитие стажёра повышают шансы на его лояльность и долгое сотрудничество с компанией.

  4. Улучшение корпоративной культуры. Наставничество и поддержка стажёров укрепляют командный дух и развивают лидерские качества опытных сотрудников.

  5. Усиление позиции компании на рынке. Предоставление возможностей для обучения и роста улучшает имидж компании среди потенциальных кандидатов и на рынке труда в целом.

  6. «Чистый лист». Минимальный опыт стажёра позволяет сформировать «культуру» программиста: как общаться с коллегами, как писать код, как работать с проектом и т. д.   

Что получает стажёр:

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

  2. Развитие хард и софт скиллов. Cтажёр осваивает профессиональные инструменты и технологии, учится работать в команде, эффективно коммуницировать, решать проблемы, управлять временем и презентовать результаты — всё это навыки, критически важные для карьеры в сфере IT.

  3. Налаживание профессиональных связей (нетворкинг). Стажировка даёт доступ к ценным контактам внутри компании, а иногда и в отрасли. Знакомства с менторами, коллегами и руководителями могут оказаться очень полезными для будущего трудоустройства или рекомендаций.

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

  5. Возможность получить оффер. Успешное прохождение стажировки, это самый прямой путь к получению предложения о постоянной работе в компании. Работодатель уже знает сильные стороны и потенциал стажёра, не нужно проходить сложный конкурсный отбор с нуля.

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

Как найти достойного кандидата

Мало иметь представление о хорошем кандидате, нужно ещё понимать, как его найти.

Из-за высокой конкуренции среди джунов и стажёров ключевыми для попадания на собеседование становятся не навыки программирования, а умение выделиться, грамотно составить резюме, упорство и удача. Это создаёт риск упустить талантливых кандидатов и формирует у менеджеров ложное представление об отсутствии сильных технических навыков у новичков.

На самом же деле, как и в спорте, среди новичков можно найти будущих звёзд с огромным потенциалом.

Если говорить о конкретных рекомендациях, то они должны основываться на проверке именно навыка алгоритмического мышления, а остальным аспектам можно уделять меньше внимания. Это касается как самого собеседования, так и описания вакансии на желаемую должность. При составлении вакансии я бы предложил оставить минимальные технические требования и при отклике предлагать кандидатам решать простые задачки на логику и размышления (связанные с кодингом, конечно), это можно делать с использованием специализированных ресурсов, таких как HackerRank.

Примеры задач:

  • проверить строку на палиндром (иллюстративный пример);

  • объединить данные из нескольких API-эндпоинтов (продуктово ориентированная задача);

  •  найти и исправить ошибку в тестовом проекте (отладка).

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

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

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

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

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

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

В идеале компания должна иметь в штате рекрутеров-скаутов, чтобы постоянно мониторить рынок и находить самых талантливых ребят.

Заключение

Наша команда уже идёт по описанному в статье подходу и наняла несколько стажёров. Ребята проявляют себя отлично: они быстро влились и спустя месяц-два адаптации начали брать относительно большие и сложные проекты. Высокая мотивация помогает в адаптации, молодые специалисты готовы учиться и впитывать всё, включая корпоративную культуру. Их уже перевели в штат на позиции джунов. Один из стажёров за год вырос до мидла.

Если научиться находить талантливых стажёров, со временем они смогут закрывать мидловские позиции, значительно усиливая команды. Надеюсь, и вы теперь решите дать шанс начинающим. 

Отдельное спасибо всем, кто дочитал до конца!

Комментарии (6)


  1. kenomimi
    21.10.2025 10:14

    Идеальный кандидат — это баланс хард и софт скиллов.

    Чувак с софт-скиллами выше околонулевых это сходу личинка мелкого руководителя или менеджера... Имею реальный опыт, когда взяли 5 аналитиков-миддлов, все с крутыми софтами, с расчетом на эффективное взаимодействие с заказчиком. Через 3-4 года все стали менеджерами, что делают кроме толкания пафосных речей и суеты на конфах, непонятно, а аналитиков снова дефицит. Я молчу про разрастание управленческого аппарата и пожирание им всего бюджета на проекты.

    Алгоритмы и компания

    Я за 10+ лет в коммерческой разработке ни разу не сталкивался со случаем, когда мне нужно было реализовать какой-то алгоритм или формулу, не реализованные в либах. И никто из коллег ни разу не сталкивался. Если вы не "научник" (то есть программист/аналитик с научной степенью по рабочей матчасти), который, например, пилит ядро передового ИИ или системы наведения ракет, вы никогда задач на придумывание или реализацию математических задач/алгоритмов не увидите. В прикладной разработке их нет, а если вдруг есть - на это есть отдельные люди с профильным образованием.

    Да, можно спрашивать алгоритмы и несложную математику со студента-стажера с технической вышкой. Не потому, что это в работе нужно, больше чтобы проверить, что он действительно учился, а не купил диплом в шарашке "заплати и не учись". Но когда по этой теме гоняют прикладного миддла и дальше - это красный флаг неадекватного работодателя.


    1. lma10h
      21.10.2025 10:14

      Я с вами не согласен.

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

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


      1. winkyBrain
        21.10.2025 10:14

        Отличное, и крайне непопулярное мнение на хабре) ну не любят здесь соглашаться с тем, что алгоритмы на задачах нужны. Не "напиши точь-в-точь как в книжке было", а "давай порассуждаем над решением". Оно и понятно - по верхам такого не нахватать, а 300к в опытом в полгода хочется уже сейчас)


    1. anzarsh Автор
      21.10.2025 10:14

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


  1. kimrov
    21.10.2025 10:14

    Сами крутые специалисты тоже работают совсем не в том месте, так что тут явно счёт 1:1, но он не в пользу этих специалистов


    1. anzarsh Автор
      21.10.2025 10:14

      Наверное это слишком наивно, но мне хотелось бы попытаться поменять эту ситуацию :)