По уровню компетентности разработчиков принято делить на младших (Junior), средних (Middle) и старших (Senior). На это влияют не только навыки, опыт и качество кода, но и автономность работы. Джунам нужно руководство и надзор, а сеньоры умеют самостоятельно принимать решения и устранять проблемы.
Если кратко, то:
- Junior — это младший специалист, который работает под присмотром более опытных коллег;
- Middle — это разработчик, который умеет проводить ревью кода и контролировать работу джунов;
- Senior — специалист высокого уровня, умеющий решать сложные задачи и проектировать архитектуру программы.
Разбираемся в чем же разница между джуном, мидлом и сеньором.
Какой опыт работы у джуна, мидла и сеньора
Устроиться на работу без реального опыта практически невозможно. А для того, чтобы получить опыт, нужно работать. Из этого замкнутого круга помогут выйти стажировки. Там начинающие разработчики научатся работать с кодом, соберут портфолио и смогут быстрее перейти на уровень джуна.
Junior
От 0 до 1,5 лет
Имеет минимальный опыт коммерческой разработки и учебные проекты. Джун только получил техническую специальность в вузе, закончил онлайн-курс или пришел в разработку из смежной сферы (например, гейм-дизайна или тестирования).
Middle
От 2 до 4 лет
Работал с конкретными коммерческими проектами в продуктовой команде или веб-студии, участвовал в стартапах.
Senior
От 5 до 8 лет
Был ведущим специалистом проекта, разрабатывал его архитектуру, взаимодействовал с командой разработчиков.
Не стоит путать сеньора с тимлидом, который следит за ходом проекта, распределяет задачи в команде разработчиков и участвует в координационных совещаниях с остальной частью компании. Однако зачастую тимлид — это бывший сеньор-разработчик, у которого хорошо развиты управленческие навыки.
Какие нужны hard skills
Разберем для примера необходимые навыки разработчиков разных уровней.
Junior
Неплохо знает синтаксис и знаком с фреймворками, разбирается в популярных алгоритмах и базах данных, умеет работать с контролем версий. Код джуна работает, но нуждается в отладке и оптимизации.
JavaScript
Обязательно: базовые знания синтаксиса JavaScript, HTML5, CSS3.
Важно: Git, знание английского языка для чтения технической литературы.
Дополнительно: фреймворки React, Vue, Angular, Electron.
Python
Обязательно: основные знания языка Python (синтаксис, переменные, условия, циклы), основы работы с виртуальными окружениями (например, virtualenv) и структурами данных (списки, словари).
Важно: Git, понимание основных принципов ООП, опыт работы с основными библиотеками, такими как NumPy, Pandas.
Дополнительно: опыт работы с базами данных, например, SQLite.
Java
Обязательно: знание синтаксиса, структур данных, основных библиотек Java, основ ООП и коллекций.
Важно: Git, понимание основных алгоритмов и структур данных, основных принципов разработки (чистый код, принципы SOLID).
Дополнительно: знание фреймворков, таких как Spring, опыт работы с базами данных (Hibernate, SQL), понимание основ разработки веб-приложений (например, Servlets, JSP).
C#
Обязательно: знание синтаксиса C#, понимание основ .NET Framework и принципов ООП, опыт работы с базовыми структурами данных и алгоритмами.
Важно: Git, знание основ работы с базами данных (SQL), понимание принципов разработки ПО.
Дополнительно: опыт работы с фреймворком ASP.NET, знание паттернов проектирования.
C++
Обязательно: базовые знания языка C++, понимание основных структур данных и алгоритмов.
Важно: Git, знание принципов ООП, опыт работы с основными библиотеками (STL), понимание процесса разработки программного обеспечения.
Дополнительно: опыт работы с многопоточностью, знание инструментов для профилирования кода, опыт работы с фреймворками для тестирования (например, Google Test).
Kotlin (Android)
Обязательно: базовые знания синтаксиса языка Kotlin, понимание основ Android-разработки и компонентов приложения.
Важно: Git, опыт работы с компонентами View и Layout, знание основных алгоритмов.
Дополнительно: опыт тестирования простых функциональных блоков кода.
Swift (iOS)
Обязательно: базовые знания Swift и основ разработки под iOS, опыт работы с Xcode (основной IDE для iOS).
Важно: понимание основных концепций разработки под iOS, таких как UIKit.
Дополнительно: опыт работы с базовыми фреймворками, такими как CoreData.
Middle
К знаниям джуна прибавляется понимание архитектуры программы. Мидл-программисты работают над более сложными задачами, но вероятность ошибок остается высокой. Однако их код оптимизирован и прост в обслуживании.
JavaScript
Обязательно: глубокие знания JavaScript, включая асинхронность, промисы, замыкания, фреймворки React, Angular, Vue, понимание принципов работы с API и RESTful.
Важно: опыт разработки с использованием библиотек для управления состоянием (например, Redux), знание паттернов проектирования.
Дополнительно: навыки тестирования кода (модульное, интеграционное тестирование), опыт работы с Node.js, опыт работы с системами сборки (например, Webpack).
Python
Обязательно: глубокое понимание принципов ООП, уверенное знание синтаксиса.
Важно: опыт работы с фреймворками для веб-разработки, такими как Django, Flask, опыт работы с реляционными базами данных (например, PostgreSQL, MySQL).
Дополнительно: умение оптимизировать производительность кода, опыт работы с системами управления контейнерами, такими как Docker, знание асинхронного программирования (например, с использованием asyncio).
Java
Обязательно: углубленное знание Java, принципы многопоточного программирования, опыт работы с фреймворками, такими как Spring.
Важно: знание принципов и практики разработки безопасного кода, опыт работы с RESTful API и микросервисной архитектурой.
Дополнительно: знание инструментов автоматизации сборки и развертывания (например, Maven, Gradle), опыт проектирования баз данных и работа с реляционными СУБД, опыт работы с системами контейнеризации, такими как Docker.
C#
Обязательно: хорошее знание C# и .NET Framework, опыт разработки многокомпонентных приложений, знание архитектурных паттернов.
Важно: опыт работы с реляционными базами данных и языком SQL, знание ASP.NET MVC и Web API, знание фреймворков для работы с данными, таких как Entity Framework.
Дополнительно: знание принципов разработки под мобильные платформы (например, Xamarin), опыт работы с системами сообщений (например, RabbitMQ), знание инструментов для тестирования и отладки.
C++
Обязательно: углубленные знания C++, опыт разработки высокопроизводительных приложений, знание архитектурных паттернов разработки.
Важно: опыт работы с реляционными базами данных и языком SQL, знание библиотек для параллельного программирования (например, OpenMP), умение оптимизировать код и работать с профилями производительности.
Дополнительно: знание метапрограммирования в C++, опыт работы с библиотеками для разработки графических приложений (например, Qt), знание системного программирования и работа с низкоуровневыми API.
Kotlin (Android)
Обязательно: хорошие знания синтаксиса языка Kotlin и его возможностей, опыт разработки полноценных Android-приложений, знание архитектурных паттернов разработки и умение управлять зависимостями (Koin или Dagger).
Важно: знание Room для работы с базами данных, принципов Material Design, опыт оптимизации приложений.
Дополнительно: опыт работы с многомодульной архитектурой проекта, знание принципов Unit-тестирования и UI-тестирования.
Swift (iOS)
Обязательно: глубокие знания Swift, опыт разработки сложных приложений для iOS, работы с архитектурными паттернами, такими как MVVM или VIPER, умение оптимизировать производительность приложений.
Важно: знание инструментов для управления зависимостями, таких как CocoaPods или Swift Package Manager, опыт работы с тестированием приложений на iOS.
Дополнительно: опыт работы с анимациями и интерфейсами, адаптированными под разные устройства.
Senior
Владеет обширными знаниями и опытом в предметной области, умеет выстраивать архитектуру. Его код практически совершенен — его легко масштабировать и интегрировать. Сеньоры зачастую тестируют код автоматически, и ошибки встречаются крайне редко. Старший разработчик должен знать все то, что знает средний, но гораздо лучше.
В нашей компании, согласно внедренной системе карьерного продвижения, рост из джуна до мидла происходит в течение одного года, до синьора — в среднем за три года. Если специалист показывает отличные результаты, он может добиться повышения и через год. Срок варьируется в зависимости от способностей и мотивации конкретного сотрудника.
Развиваться в профессии IT-специалистам помогает, прежде всего, самостоятельность, ответственность и коммуникабельность. Эти навыки позволяют сотрудникам расти и вертикально, и горизонтально. Росту способствует не только развитие необходимых скилов, но и участие в крупных проектах в команде с опытными наставниками.
Важно умение специалиста искать нестандартные способы для решения ключевых задач бизнеса, способность оперативно адаптироваться к новым условиям. Гибкость и креативность сотрудников помогают закрывать потребности проекта, сохранять спокойствие.
Какие нужны soft skills
Junior
- Готовность развиваться и учиться на собственных ошибках.
- Способность спокойно принимать конструктивную критику.
- Внимательность и целеустремленность.
Middle
- Умение быть наставником.
- Самостоятельность в принятии решений.
- Способность вносить предложения в проект.
Senior
- Навык планирования рабочего процесса и сроков выполнения проекта.
- Стремление постоянно учиться.
- Умение делегировать рутинные задачи.
То, что скрывается за понятиями «джун», «мидл» и «сеньор», может сильно различаться в разных компаниях. Поэтому я рекомендую начать с общения со своим руководителем. Это позволит понять, какие навыки развивать, чтобы перейти на следующую ступень.
Составив список навыков и план работы над ними, важно понять, что ближе всего. Развивая сильные стороны, получите результат гораздо быстрее, чем пытаясь развивать слабые.
Для роста в профессии очень важен навык коммуникаций — без умения доносить мысль быстро и грамотно, том числе и разной аудитории, далеко не уйти.
Второе — умение смотреть на задачу с разных точек зрения: разработчика, заказчика, пользователя. Всестороннее понимание задач позволит решать их быстрее и качественнее.
Универсальных компетенций много. Начать стоит с книги Роберта Мартина «Идеальный программист. Как стать профессионалом разработки ПО» (The Clean Coder: A Code of Conduct for Professional Programmers). Книга дает хорошую базу по универсальным компетенциям для каждого разработчика.
Какая роль в команде и ответственность у специалистов
Junior
Нуждается в помощи менторов и других членов команды. Для него абсолютно нормально задавать вопросы и допускать ошибки. Джуну поручают простые рутинные задачи: написание несложных скриптов, изменение элементов интерфейса и т.д.
Middle
Берет на себя основную часть разработки. Мидл может наставлять младших разработчиков, исправлять их ошибки, но также браться за задачи, на которые не следует тратить время сеньорам.
Senior
Задает темп и тон процесса разработки. Сеньор берет на себя самые сложные части проекта. Он может выступать техническим лидером проекта и принимать ключевые решения.
Как джуну повысить свои шансы на успех
По данным сайта hh.ru в мае 2023 года количество активных резюме в сфере IT было почти в два раза больше, чем активных вакансий. Большинство резюме принадлежит джунам, но вместе с тем есть недостаток специалистов среднего и высшего звена.
Вот несколько шагов, которые нужно пройти новичку.
Определиться с целью
Программист может применить свои навыки в финансовой сфере, образовании, здравоохранении или логистике. Перед поиском работы нужно понять, какая сфера привлекает больше всего, и изучить вакансии.
Найти 10–20 должностных инструкций понравившихся вакансий
Изучите список требований к сотруднику, сравните их и выпишите те требования, которые повторяются.
Понять, каких ключевых навыков не хватает
И приобрести их. В этом помогут курсы, обучающие видео, комьюнити разработчиков.
Устроиться на работу
Даже если многое еще не изучено, стоит начать проходить собеседования. Это отдельный навык, который нужно практиковать. Вдруг повезет?
Создавать свои проекты
Это поможет отточить свои навыки и пополнить портфолио.
Как собрать портфолио
Начать можно с заведения профиля на GitHub. Для того чтобы создавать в нем репозитории, нужно разобраться в системе контроля версий.
В качестве портфолио подойдут учебные и пет-проекты. Пет-проект — это то, что разработчик пишет «для себя». Если это еще и полезный проект, то он будет плюсом при трудоустройстве.
Как подготовиться к собеседованию
Классическое собеседование на программиста состоит из нескольких этапов.
Интервью с рекрутером
Потенциальному сотруднику задают вопросы о его опыте работы, образовании, цели, мотивации. Также просят задать вопросы о компании. Для успешного прохождения стоит подготовить ответы на возможные вопросы и постараться снизить стресс перед собеседованием.
Техническое интервью
Это проверка хард-скилов. На нем проверяют знания, обсуждают проекты из портфолио, ход решения проблем. Перед прохождением интервью стоит повторить теоретическую часть и методологию разработки.
Кодинг-интервью
Здесь соискатель пишет код в режиме онлайн. Чтобы попрактиковаться в написании кода и решении алгоритмических задач, можно воспользоваться онлайн-платформой LeetCode.
Средняя зарплата джуниор-разработчиков в России на 2023 год — 89 085 руб.
Сложно ли мидлу найти работу
Этим вопросом часто задаются джуны, которые готовы перейти на новый этап развития карьеры. Они уже обладают определенным опытом и навыками, что делает их более привлекательными для работодателей. Однако и спрос с мидлов выше, чем с джунов.
На Stack Overflow можно найти часто задаваемые вопросы на собеседованиях.
Видео — пример собеседования на мидла фронтенд-разработчика.
Средняя зарплата мидл-разработчика в России на 2023 год — 197 400 руб.
Как стать сеньором
От сеньоров требуют не только значительного опыта в разработке и управлении проектами, но и умения довести проект до уровня Production-ready.
Должность сеньора — это:
- высокие технические навыки;
- коммуникативность;
- умение быть наставником;
- стремление постоянно самообучаться.
Чтобы стать сеньором, важно постоянно развиваться и прокачивать свои навыки, например поступив в вуз, не бояться брать на себя ответственность за результат.
Средняя зарплата сеньор-разработчика в России на 2023 год — 245 044 руб.