Этот пост хочу посвятить вечному холивару на тему того, что за уровни есть у сегодняшних ITшников и как их различают компании.
Сразу оговорюсь будет много отсылок что существуют "крупные" компании и "мелкие". Крупные себе позволяют забирать лучшие кадры с рынка за счет своей именитости и большого входящего потока кандидатов, а мелкие компании довольствуются теми, кто не прошел отбор в крупные.
Стажер или Junior
Как человек, который пришел в IT именно через стажировку - могу сказать что для меня отчетлива видна разница между этими двумя грейдами. Но стоит понимать, что это понятие сильно разнится взависимости от уровня компании. Так, например, крупная компания может позволить себе нанимать стажерами действующий студентов, которые работают на part-time (не полный рабочий день), в то время как мелкие компании если и готовы нанимать стажеров к себе, то скорее всего речь идет о том, чтобы эти люди уже сразу работали на full-time.
Отсюда и возникает первый конфуз - что в целом, есть понятие разных стажеров, причем в крупной компании стажер на full-time это практически сразу равно Junior уровню, если стажер работает в компании на full-time - то перевод его на должность Junior обычно занимает не дольше 3-6 месяцев. Иначе с сотрудником прощаются, тк он не может преодолеть требования следующей ступени.
Так что все-таки требуют от первой ступени? Уже давно прошли те времена, когда главным и единственным требованием были "горящие глаза". Будьте готовы, что уже на первом собеседовании на самые низкие позиции вас будут гонять по вашим знаниям в нужной сфере. Также хорошим отсевом считаются секции с алгоритмами, тк они в целом являются точкой входа в разработку.
При выходе на работу, от сотрудника ожидается выполнение мелких, хорошо детерменированных задач. Вряд ли джуну позволят с ходу менять архитектуру проекта, это ожидается от коллег "постарше". Впрочем для кандидата такого уровня подобные задачи должны послужить с одной стороны стимулом к тому, что это отличная возможность прокачать свои навыки на боевом проекте. А с другой стороны - это очень сильный "красный флаг" для кандидата, что в этой компании что-то не так, поскольку доверять столь сложные задачи новичкам - это неразумно. Новичок скорее поломает действующий проект и принесет только больше проблем, которые смогут исправить те самые коллеги постарше.
Если структурировать требования - то чаще всего на этой позиции ожидают кандидата, который находится на последних курсах ВУЗов (это желательно) или уже окончил ВУЗ, и уже имеет хороший теоретический бекграунд в нужной сфере, но вряд ли имеет опыт коммерческой разработки.
Middle
Тот самый уровень, на котором и задерживаются большинство разработчиков, в то же время сейчас можно наблюдать что рынок в этом грейде постепенно переходит в руки рекрутмента. Так, например, поставив задачу перед HR отделом найти middle разработчика - сегодня редко вызывает трудности. Рынок перенасыщен уже кандидатами, которые считают себя достойными этого уровня. Все потому что по сути разницы между Junior и Middle как таковой сильной нет, за исключением наличия коммерческого опыта. Вас также погоняют по теории (а сегодня и джунов гоняют по теории так, что мало не кажется, ведь джунов на рынке уже давно огромное множество), возможно даже попросят решить какую-то прикладную задачку, но я уверен что это происходит не везде и то, что мидл идеально справится с решением - тоже большой вопрос.
Отсюда имеем что и переход между Junior и Middle происходит в кратчайшие сроки - обычно это занимает от 6 месяцев до 1 года. На своем опыте могу сказать так - что если человека не переводят с Junior на Middle по истечению 1 года, то скорее всего в этой компании недовольны его перформансом. В таком случае для кандидата стоит присмотреться к возможности сменить работодателя, тк найти условия труда получше - не составит сложности (да я только что отписался что рынок мидлов уже становится не кандидатским, но тем не менее на текущий момент это все еще переходный процесс).
Структурируя: должен уметь все то же самое что и Junior, но его опыт должен быть подкреплен реальным коммерческим опытом.
Senior
Высший грейд перед переходом в ветку руководителей (Team lead).
Сразу оговорюсь - здесь рынок исключительно кандидатский и еще долго таким будет, поэтому тут можно гнуть пальцы и просить те условия, которые вы считаете нужными вам. Но только при условии что вы действительно Senior.
А что же отличает Senior уровень от других? По себе я бы описал так - наличие опыта решения сложных задач. Тут и кроется вся истина: на работе мы можем столкнуться на первый взгляд с непреодолимыми сложностями: замена архитектуры проекта, настройка новой навигации, переход на другой фреймворк и тд. Обычному мидлу такие задачи очень часто не под силу, в силу того, что такие задачи часто максимально абстрактно описаны и нет четкого плана действий. Чтобы выполнить такие задачи потребуются знания существующих архитектур, их различий, какие существуют паттерны проектирования и многое другое.
Очень часто при обучении какой-либо ИТ специальности - кандидаты не прокачивают свои навыки в этой сфере. А данные сферы в свою очередь являются фундаментальными и порой их изучение может занять продолжительный срок времени. Сюда очень часто можно также отнести тот факт, что у многих "вайтишников" (те, кто пришел в ИТ из другой профессии) - банально нет фундаментальных технических знаний, которые помогли бы изучать вопросы проектирования гораздо быстрее.
Отсюда возникает огромная сложность для перехода между middle и senior для тех, кто ранее не сталкивался с подобным. И в то же время этот переход относительно легко дается тем, кто уже имеет какой-либо багаж технических знаний.
Резюмируя: помимо того, что должен уметь middle уровень - senior в свою очередь должен справляться с недетерминированными задачами. Причем справляться успешно. Если у вас есть негативный опыт внедрения той или иной технологии - безусловно это опыт, но бизнесу нужны те, кто смогут успешно справится с такой задачей.
Переход с middle разработчика на senior уровень может и не состояться вовсе - как минимум не у всех разработчиков на проекте могут быть такие фундаментальные задачи. Поэтому формально вас могут повысить до senior на текущем месте (например, как самого опытного разработчика на проекте), но на рынке вы так и останетесь middle уровнем.
Для изучения фундаментальных вещей, а также "острия" разработки в вашей отрасли - вам потребуется потратить огромное количество времени за пределами простой работы.
На сегодняшний день я бы отметил что это пожалуй самый сложный переход. По моим прикидкам такой переход в лучшем случае занимает год, а в среднем 2 года. В идеале же обычно для достижения этого грейда требуется опыт около 3-х лет.
Отличия на западе
На западе профессия IT чуть постарше, чем у нас - отсюда возникают более жесткие требования к этим грейдам. Поэтому не удивлятесь, что "настоящих" Senior на рынке СНГ могут оценить на middle в Европе или США.
Там, например, очень часто Senior считают только тех, кто в своей отрасли имеет опыт не менее 5-7 лет.
Советы как расти
Ко мне обращались компании с вопросами как им вырастить Senior внутри своей компании. Исследовав этот вопрос - я прихожу к выводам, что в вашей компании должны быть не просто условия для роста таких людей (например, выделение времени на изучение новых технологий или проведение курсов/мастер классов/конференций), а еще и люди, которые двигают ваш проект в нужное направление. Поэтому как бы это не казалось странно, если вы хотите вырастить у себя Senior разработчиков - то вам необходимо сначала нанять таких людей к себе, чтобы они показали какие в рамках вашего проекта можно делать улучшения и давали эти задачи ваших мидлам.
Подписывайтесь на мой канал, чтобы следить за обновлениями
И не забывайте подписаться на мой телеграм канал, где также постятся анонсы.