Практически в любой профессии есть разделение специалистов на уровни, которые позволяют более-менее корректно определять компетенцию человека при приеме на работу и формировать справедливые зарплаты внутри коллектива. В сфере Ай-ти используется разделение на уровни джуниора, миддла, сеньора. Давайте разбираться, какой уровень знаний и навыков подразумевает каждый из них, каковы основные отличия позиций junior, middle, senior-специалистов, а также как адекватно понять, на какой ступени вы находитесь и грамотно левел-апнуться в карьере.
Содержание
Кто такие Junior, Middle, Senior разработчики?
Сразу нужно отметить, что не существует строго стандартизированной классификации, которая определяет уровень разработчика. На эту градацию влияет несколько факторов – опыт, длительность работы, масштаб компании, поэтому это будет обобщенная информация, отражающая распространенные практики среди менеджеров IT-компаний.
Джуниор
Обычно на позицию Junior претендуют выпускники, которые только закончили профильное образование или имеют небольшой опыт в разработке, делали некоммерческие или pet-проекты.
Такие специалисты имеют базовый набор знаний в программировании и английском языке, могут делать отдельные, зачастую самые простые, задачи. Но их знания и опыт обычно разрозненные и фрагментарные, они не способны выполнять сложные задачи.
Если представить весь проект, как большой дом с множеством комнат, то джуниорам позволяют создавать для него кирпичики. Их работа определенно важна, но они не осознают всего масштаба проекта.
Итак, определить джуна можно по следующим характеристикам:
- Умеет самостоятельно делать простые задачи – писать небольшие программы и скрипты;
- ТЗ более высокого уровня сложности может выполнять только при поддержке наставника;
- Код специалиста нуждается в постоянном контроле;
- Имеет немного знаний в стеке технологий и языках программирования, потому поставленные перед ним тест задания может решить одним, максимум двумя способами, толком не понимая, какая между ними разница.
«Хороший» джуниор, который имеет шансы на быстрое продвижение по карьерной лестнице, должен:
- Постоянно развиваться, набивать руку в работе, стараться получить разносторонний опыт и новые знания;
- Быть целеустремленным;
- Спокойно воспринимать критику, стараясь извлечь из нее пользу и больше не совершать аналогичных ошибок;
- Понимать ТЗ и выполнять его без постоянной помощи наставника.
Про джуниоров часто говорят, что они сами не знают, чтоо они знают. И это действительно так. Поэтому этот этап карьеры важно использовать для систематизации своих навыков, их расширения и углубления, формирования четкого представления о процессах разработки.
Когда специалист-новичок набил руку в работе, справляется самостоятельно с задачами более сложного уровня, наставник не имеет серьезных замечаний к его коду, и ему интересно браться за более ответственные таски, это сигнал о том, что можно задуматься о переходе на следующий уровень.
Миддл
На уровне мидл разработчику уже поручают не только простые и небольшие таски, но и сложные, интересные задания, которые могут занимать недели работы. Предполагается, что ответственность и профессионализм позволяют ему самостоятельно организовать свое время и разобраться с ТЗ, принимать правильные решения по выполнению задания. При этом мелкие задания миддл сможет выполнить гораздо быстрее джуниора и практически без багов.
Если говорить об уровне знаний, то специалист среднего уровня уже уверенно владеет основными технологиями, которые нужны для его специальности, он может придумать несколько вариантов для решения одной задачи и понять, какое из них будет оптимальным для этого проекта.
Как пишет код Junior:
function add (a) {
return function (b) {
return a + b;
};
};
Вариант Middle разработчика:
const add = a => b => a + b;
На этом уровне специалист уже вполне уверенно чувствует себя в работе и понимает, что он сможет справиться самостоятельно даже с нестандартными задачами. И эта карьерная ступенька считается наиболее опасной для специалиста. Достаточно много программистов так и остаются на уровне миддл, не желая развиваться дальше.
Как распознать middle девелопера:
- Способен понять структуру продукта и его функционал, поэтому не просто выполняет свое задание, а находит для него оптимальное решение;
- Имеет хороший опыт в разработке, поэтому может решать задачи быстрее и справляться со сложными;
- Владеет стандартным инструментарием, сервисами и шаблонами в своей отрасли, понимает, в каких случаях логично применять каждый из них;
- Пишет аккуратный код, учитывая интересы команды, делают его понятным не только для машины, но и для человека.
Что делает перспективный мидл, который сможет претендовать на позицию сеньора?
- Не останавливается в своем развитии, даже когда чувствует себя уверенно в работе. Стремится изучить все детали и тонкости используемых инструментов;
- Улучшает свои компетенции, учит дополнительные технологии, приложения, фреймворки и языки программирования, которые уже выходят за рамки его нынешних обязанностей. Если такого миддла перевести в другой отдел, он сможет быстро вклиниться в работу и не ухудшит показатели команды;
- Работает над своими soft skills. Чтобы стать senior разработчиком, нужно не только иметь сильную техническую базу, но и лидерские качества, хорошие коммуникативные скиллы, ведь такой специалист будет обучать команду, помогать сотрудникам.
Сеньор
Большой опыт и багаж знаний позволяют ему глобально видеть продукт и участвовать в стратегических решениях, предлагать более эффективные технологические решение.
Такой разраб знает множество решений одной задачи, может объективно оценить плюсы и минусы каждого из них, после чего выбрать самый эффективный вариант. Он справляется со сложными и нестандартными задачами, может помочь команде найти решение в самых безвыходных ситуациях. Это настоящий эксперт, который отвечает за стабильность и адекватность работы продукта, снижает технические риски бизнеса, поэтому нужен в каждой команде.
Как распознать разработчика-сеньора:
- Он уже набил немало шишек и может найти решение любой задачи, даже самой нестандартной и сложной, с которой не может справиться вся команда.
- Умение писать максимально простой код, в котором нет ничего лишнего.
- Он является лидером и наставником в команде, который помогает менее опытным сотрудникам, может найти подход к каждому и объяснить сложные моменты.
- Глобально смотрит на проект и разрабатывает его структуру. Может сам с нуля реализовать продукт, поскольку уже понимает тонкости построения архитектуры, а широкий кругозор позволяет ему определять оптимальные технические решения для каждого этапа и раздела.
Уровень Senior, как мы уже писали, доступен не всем. Обычно программисты, которые до него доходят имеют особые личные качества – это очень внимательные, целеустремленные (их цель стать lead специалистами), обладают системным подходом, любопытные специалисты с высоким уровнем когнитивных способностей, могут детально анализировать ситуацию, правильно оценивают уязвимости. Они всегда изучают что-то новое и не устают от этого.
Читайте также: Обучение программированию на Unity. ТОП-22 Онлайн-курса + 4 БесплатныхСколько времени занимает продвижение по карьерной лестнице?
Это зависит от его способности и желания учиться, компании и проектов, с которыми он работает. Но можно выделить средние временные промежутки.
- Junior – 1-3 года. Самые старательные и целеустремленные джуны успевают получить необходимую базу опыта и знаний в течение года, чаще всего переход на следующий уровень происходит через 1,5-2 года. Если вы видите, что все задачи уже делаете самостоятельно, ваш ментор не вносит кучу правок в ваш код, то не стесняемся на собеседовании и обсуждаем повышение со своим руководством.
- Middle – 1-3 лет. При хорошем развитие карьеры специалист проведет на позиции миддла от 1 до 3-х лет. При упорной работе за это время можно углубленно изучить необходимые технологии и языки. Но, как мы уже писали, далеко не все специалисты вообще хотят или могут преодолеть этот рубеж. Кто-то не вытягивает по уровню знаний, ведь даже чтобы остаться на своей позиции, нужно что-то учить и развиваться, потому что профессия разработчика не стоит на месте. А для повышения – нужно делать еще больше! Для кого-то становится проблемой вопрос наставничества, ответственности и необходимости быть нянькой для всей команды, а кресло миддла кажется «спокойной гаванью».
- Senior developer – 3-5 лет. Обычно в вакансиях на позицию старшего разраба хотят видеть специалиста со стажем от 5 лет, но на первом месте все равно ваши навыки. Если вы за 3 года освоили весь стек технологий, работодатель наверняка будет только рад заполучить исключительного специалиста. Дальнейшее продвижение по карьерной лестнице уже ведет к руководящим позициям с административными полномочиями – тимлид или архитектор.
Средние зарплаты разработчиков
Помимо чувства уверенности в своей работе и уважения коллег, продвижение по карьерной лестнице имеет еще один немаловажный бонус – рост зарплаты. Так, зарплата старшего разраба вполне может быть в несколько раз больше, чем у джуниора. Согласитесь, получить такой профит всего за несколько лет – очень заманчиво.
Приводим данные экспертизы Хабра, который регулярно анализирует зарплаты в индустрии, в зависимости от их квалификации:
Из этого графика становится понятно 2 ключевые вещи:
- С каждым новым левел-апом, зарплата разраба увеличивается примерно в два раза.
- Опытные разработчики более ценны на рынке труда, их зарплаты продолжили расти даже в условиях пандемии и кризиса 2020.
А вот как обстоят дела с зарплатами в разных специализациях и языках программирования:
Читайте также: Обучение программированию на Python с нуля. ТОП-35 Онлайн-курсов + 5 БесплатныхКого из них нанимать на работу?
Небольшое пособие для рекрутеров и HR
JUNIOR, ЕСЛИ:
- Необходимо решать небольшие, но важные в долгосрочной перспективе задачи, такие как мелкая отладка;
- Вы готовы инвестировать в развитие амбициозного специалиста;
- Профессиональная увлеченность специалиста более ценна для вас, чем его начальные технические знания.
MIDDLE, ЕСЛИ:
- Вашему проекту не хватает опытного, но доступного специалиста, готового управлять определенными областями разработки;
- У вас достаточно молодых специалистов, и вам нужен кто-то более знающий, чтобы их наставлять;
- Вы цените целостность специалиста среднего уровня, который является более универсальным.
SENIOR, ЕСЛИ:
- У вас уже есть команда инженеров-программистов низшего звена, которой нужно управлять;
- Вы можете позволить себе высокоопытных, квалифицированных асов;
- Ваш проект имеет глубокий характер и требует узкого, строгого подхода;
- Вы собираете команду экспертов, но не обладаете должным опытом для эффективного проведения собеседований.
Подводные камни
В начале этой статье, я акцентировала внимание на том, что система разделения разработчиков на бесконечные уровни достаточно схематичная, и ее сложно назвать объективной. Что приводит нас к некоторым подводным камням в продвижении в развитии своей карьеры и профессионализма:
- Застревание в типовых задачах. Такую ситуацию можно встретить и в небольших компаниях, которые идут по пути наименьшего сопротивления и берут простые однотипные проекты, и в отдельных крупных компаниях, которые хотят сэкономить на зарплате и не очень способствуют продвижению сотрудников. Смысл в том, что джуниору дают простые и совершенно однотипные задания изо дня в день. В результате, вы можете проработать на такой позиции и 3 года, а по факту не получить новых знаний и полезного опыта.
- Необъективность. В зависимости от компании, требования к уровню разработчика могут сильно отличаться. Представим, что вы начали работать в небольшой веб-студии. Там вы быстро зарекомендовали себя и начали продвигаться по карьерной лестнице, став через несколько лет старшим разработчиком. Потом вы решили перейти на работу в большую компанию, где зарплата гораздо выше. И тут вас может ожидать большой облом. Небольшая веб-студия имеет небольшой штат сотрудников и, как результат, берется за более простые, немасштабные проекты, поэтому и требования к своим сотрудникам не так высоки. Крупная ИТ-компания работает со сложными и высокотехнологичными продуктами, и здесь требования к соискателю гораздо выше. В итоге ваш уровень senior в маленькой компании может оказаться уровнем middle, или даже junior в крупной фирме.
Выводы
Главный вывод из всей этой информации таков: продвижение в карьере разработки – это не столько про время, сколько про целеустремленность и саморазвитие. И это еще одна вещь, которая делает программирование такой востребованной профессией. Во многих традиционных отраслях рынка труда продвижение по карьерной лестнице до приличного уровня заработка и хорошей должности по-прежнему занимает десятилетия, а разработка позволяет достичь этого буквально за 3-5 лет. И это прекрасно.
Ну а коктейль успешного движения от джуниора к сеньору состоит из прокачки профессиональных скиллов, изучения новых технологий, получения разностороннего опыта, решения нестандартных задач и улучшения своих гибких навыков – коммуникабельности, лидерства, аналитического мышления.