Перейти к содержимому

Как стать мидлом в программировании

  • автор:

От новичка до эксперта: джун, мидл и сеньор в IT

От новичка до эксперта: джун, мидл и сеньор в IT

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

Онлайн-магистратура МФТИ «Управление IT-продуктом»

  • Junior — это младший специалист, который работает под присмотром более опытных коллег;
  • Middle — это разработчик, который умеет проводить ревью кода и контролировать работу джунов;
  • Senior — специалист высокого уровня, умеющий решать сложные задачи и проектировать архитектуру программы.

Разбираемся в чем же разница между джуном, мидлом и сеньором.

От джуна до сеньора

Управление IT-продуктом

Онлайн-магистратура совместно с МФТИ

Group 1321314347 (2)

Какой опыт работы у джуна, мидла и сеньора

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

Junior

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

Middle

Работал с конкретными коммерческими проектами в продуктовой команде или веб-студии, участвовал в стартапах.

Senior

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

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

Онлайн-магистратура совместно с МФТИ. Научитесь запускать цифровые сервисы и управлять командой на основе данных.

Какие нужны hard skills

Разберем для примера необходимые навыки разработчиков разных уровней.

Junior

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

JavaScript

Обязательно: базовые знания синтаксиса JavaScript, HTML5, CSS3.

Важно: Git, знание английского языка для чтения технической литературы.

Дополнительно: фреймворки React, Vue, Angular, Electron.

Python

Обязательно: основные знания языка Python (синтаксис, переменные, условия, циклы), основы работы с виртуальными окружениями (например, virtualenv) и структурами данных (списки, словари).

Важно: Git, понимание основных принципов ООП, опыт работы с основными библиотеками, такими как NumPy, Pandas.

Дополнительно: опыт работы с базами данных, например, SQLite.

Станьте разработчиком на Python и решайте самые разные задачи: от написания кода до автоматизации процессов

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).

Станьте Frontend-разработчиком
и создавайте интерфейсы сервисов, которыми пользуются все

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

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

Что прокачать джуниор разработчику, чтобы стать мидлом за год

Разбираемся, над чем стоит работать, если вы джуниор, который хочет стать мидлом.

Реальные требования к кандидатам в плане инструментов разработки сильно различаются в зависимости от компании и задач. В этой статье поговорим про фундаментальные навыки, которые актуальны для роста в бэкенд-разработке и разработке в целом.

Роман Моисеев, менеджер продукта на программе «Мидл Python-разработчик» в Яндекс.Практикуме, рассказывает, над чем стоит работать, если вы джуниор, который хочет стать мидлом.

Роман Моисеев
менеджер продукта на программе «Мидл Python-разработчик» в Яндекс.Практикуме

Четыре грейда джуниор-разработчика

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

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

Первый — стажёр. Это ещё не полноценный джуниор-разработчик, скорее его MVP. На этом уровне человек знает основы языка программирования, его не нужно учить синтаксису. Однако применять этот язык программирования для решения реальных задач он ещё не умеет. Чтобы дать ему задачу в работу, её нужно расписать по шагам: «сделай A, B и С, возьми такую технологию и используй вот эту вот функцию».

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

Второй — джун-новичок. Первая стадия развития джуна: первый оффер на фултайм, первый рабочий месяц и первые боевые задачи. Такой разработчик обладает достаточным набором теоретических (академических) знаний, чтобы делать простые задачи без супердетального описания. Он знает, как работать с документацией и найти в ней ответ на свой вопрос.

Тем не менее процесс коммерческой разработки он знает скорее теоретически, поэтому ошибается на разных этапах написания кода. Он часто приходит к старшим коллегам и говорит: «У меня что-то поломалось. Не могу это сделать. Помоги!» И это нормально.

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

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

Самостоятельно декомпозировать задачи такой разработчик ещё не умеет, но вопросы задаёт более глубокие и конкретные: «Я попробовал сделать так и так, но не вышло, выдаёт ошибку. Нужна помощь, чтобы понять, что идёт не так и где ещё поискать решение».

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

В качестве отправной точки для роста за год я буду рассматривать джуна-новичка. По двум причинам:

  • по моему опыту, рост за год до мидла с этого уровня — это очень хороший темп для разработчика;
  • многие компании готовы рассматривать кандидатов с опытом от года на позицию мидлов. Главное в этой фразе — «рассматривать»: отбор и заветный оффер это не гарантирует.

Эволюция сложности задач

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

  1. Разогреть в сковороде немного подсолнечного масла.
  2. Разбить и бросить в неё два яйца.
  3. Немного посолить.
  4. Подождать 3 минуты.
  5. Яичница готова!

Если вдруг стажёр разобьёт яйца, и скорлупа попадёт на сковородку, сениор объяснит, что так делать нельзя.

По мере роста уровня разработчика растёт уровень самостоятельности. Мидлу уже достаточно сказать: «Нужно сделать яичницу». Он уточнит, какой вид яичницы нужен, например, нужно ли добавить сыр и помидоры, найдёт все ингредиенты и приготовит вкусный завтрак.

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

Кто такой мидл

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

Чисто сениорских задач в разработке мало. Большинство компаний решает достаточно стандартные задачи. И вот с этими задачами мидл должен уметь справляться самостоятельно. Для этого нужен достаточный опыт и накопленный багаж совершённых ошибок.

Hard skills мидла

Перед тем, как перейти непосредственно к списку требований, обозначу три важные вещи:

  1. Здесь не будет конкретных технологий, которые нужно изучить. Во-первых, требования к технологиям в разных компаниях очень сильно отличаются. Во-вторых, если главный критерий мидл разработчика — «самостоятельность в решении своих задач», полезнее всего выделить фундаментальные вещи, которые помогут к этой самостоятельности прийти.
  2. Это не список «сделай 10 конкретных шагов и стань мидлом». К сожалению, такого волшебного пути нет. У каждого разработчика он свой. Советую читать требования ниже так: «Чем больше галочек я набрал, тем более вероятно, что я мидл».
  3. Вы можете переработать этот список в свой чек-лист действий для роста до позиции мидла. Для этого вам понадобятся навыки приоритизации и декомпозиции цели. Небольшой спойлер: это и есть важные навыки мидл-разработчика.

Какие качества ждут от мидл-разработчика

Понимание используемых технологий

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

Чтобы прокачать этот навык, как можно чаще задавайте себе вопрос, как работают вещи, которые вы используете. Вопросы должны начинаться со слов «как» и «почему». Приведу пример с базой данных:

  • Почему подходит для решения поставленной задачи?
  • Как работают индексы в ?
  • Почему они работают именно так?

Каждый новый вопрос будет уводить вас на уровень ниже и давать понимание, как устроена разработка. Как глубоко копать? Универсального ответа нет, всё зависит от того, на каком уровне вы хотите разобраться с технологией. Попробуйте начать с двух–трёх вопросов и посмотрите, как пойдёт.

Прохождение и проведение code-review

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

Код-ревью — важная практика для роста разработчика. Если у вас в компании нет ревью кода, найдите человека, который будет давать обратную связь на то, что вы делаете. Идеально, если этот человек будет уровнем выше. Без практики код-ревью вы не сможете адекватно оценивать, насколько хороший код пишете.

Проведение код-ревью, напротив, — во многом техническая задача. Умение разобраться в чужом коде распадается на два навыка: понять общую структуру программы и увидеть места, где решение можно сделать более оптимальным, лаконичным и красивым. А ещё код-ревью — это отличная возможность поделиться своим опытом.

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

Умение декомпозировать задачи

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

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

Насмотренность

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

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

Понимание алгоритмов и области их применения

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

Рассматривайте алгоритмы и структуры данных именно как фундаментальную базу. Не мучайте себя академическим подходом — приземляйте алгоритмы на практику, изучайте их применение в коммерческих технологиях. Понимайте причинно-следственные связи, почему те или иные вещи работают именно так, как работают. Не зазубривайте бинарный поиск просто потому, что «надо знать алгоритмы».

Умение писать скучный код

Задумайтесь, насколько код, который вы пишете, будет понятен человеку, который видит его впервые. Помогут ли ему ваши нестандартные решения? Мидл всегда выберет простое решение, вместо того чтобы выпендриться.

Soft skills мидла

Что такое мягкие навыки в разработке? Самый простой ответ: все навыки, которые нужны в работе, но не связаны напрямую с написанием кода. Опасность такой формулировки в том, что можно подумать, будто софты — это что-то вторичное и не очень важное. На самом деле это не так.

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

Какие мягкие навыки ждут от мидл-разработчика

Самостоятельность

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

Мидл не требует микроменеджмента. Контроля раз в день с формулировкой «как у тебя дела, что делаешь сейчас?» достаточно, чтобы быть уверенным, что задача будет выполнена.

Умение видеть проблему бизнеса в технической задаче

Мидл должен понимать, что его главная задача ― не просто писать код. Разработчику платят за техническое решение бизнес-задачи.

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

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

Увлечённость разработкой

Покажите будущему тимлиду, что разработка вас драйвит. Объясните, почему вы делали проекты и задачи, которые записаны у вас в резюме. Даже тривиальные и обыденные вещи можно раскрыть через призму выводов и полученного опыта, а не с позиции «я просто писал код на Django на последней работе».

Как рассказать о задачах, которые вас действительно не драйвили, и не обмануть собеседника? Расскажите о том, какими задачами вы точно не хотите заниматься. Это тоже выводы и опыт, которые показывают вашу осознанность. Это ещё и возможность показать свои собственные pet-проекты, где вы реализовывали интересные вам задачи.

Саммари и заключение

  1. Единого понимания грейдов разработчиков в индустрии нет, и это нормально: разные команды выдвигают разные требования в зависимости от своих задач.
  2. Главный критерий роста разработчика — ответственность и сложность задач, которые он может решить самостоятельно.
  3. Мидл должен быть самостоятельным разработчиком и решать большинство падающих на него задач без помощи старших разработчиков.
  4. Фундаментальные навыки вроде умения разобраться с новым инструментом часто важнее, чем опыт работы с конкретной технологией.
  5. Сейчас век командной разработки, поэтому софты не менее важны, чем харды.

Junior, Middle, Senior в разработке — кто есть кто и как перейти на уровень выше

Junior зарабатывает от 40 000 ₽, Middle от 100 000 ₽, а Senior от 250 000 ₽ и выше.

Кто такие Junior, Middle и Senior

Виктория Земскова
Автор статьи
29 марта 2022 в 16:59

Четкой границы между младшим (junior), средним (middle) и старшим специалистом (senior) в IT нет. В одной компании разработчик может быть крепким сеньором, а при переходе в другую компанию стать мидлом, но с сохранением заработной платы и даже ее повышением, потому что в другой компании уровни считаются иначе.

Рассказываем, в чём разница между junior, middle и senior, как понять, что вы уже не джуниор или что мидлу пора становиться сеньором. И что нужно сделать, чтобы продвигаться по карьерной лестнице.

Junior — первая ступень в разработке

Джуниор (junior) — это младший специалист. Он знает теорию, освоил синтаксис одного языка программирования и может писать на нём код. Если джуниор не умеет писать код, то это стажер.

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

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

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

В Skypro на курсе «Веб-разработчик» можно стать джуниором за 10 месяцев и начать поиск работы по новой специальности. Центр карьеры поможет подготовиться к собеседованиям и тестовым заданиям, составить цепляющее резюме. А портфолио с реальными проектами соберете из домашек и курсовых, которые сделаете под руководством опытных наставников.

Опыт. Год — полтора реальной разработки.

Знания и навыки. Хорошо разбирается в языке и технологии, которую использует компания.

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

Задачи: технические задачи — четко поставленные, с подробным описанием, что и как нужно сделать. Например, исправить некритичные ошибки, добавить или изменить элементы пользовательского интерфейса. Пример задачи в frontend-разработке — сверстать слайдер по прототипу.

Станьте Java-разработчиком в два раза быстрее
Ускоренный курс для тех, кто хочет быстрее перейти на удаленку

Ответственность. Минимальная.

Зарплата. 40 000 ₽ — 100 000 ₽.

Junior-разработчик: условия работы, зарплата, навыки и обязанности

Пример вакансии стажера / backend-разработчика уровня junior на хедхантере

Что делать, чтобы перейти на следующий уровень. Джуниор может вырасти до мидла, если изучит весь набор технологий, используемый командой:

  • языки программирования;
  • фреймворки — платформы, набор технологий, который помогает разработчику создавать, масштабировать и обслуживать веб-приложения;
  • системы управления базами данных;
  • компиляторы — программы, которые переводят текст с языка программирования в набор машинных кодов.

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

Работодатели высоко оценивают навыки и знания выпускников Skypro. Часто говорят, что после курсов, например «Java-разработчик», на позицию джуниора претендуют начинающие мидлы, которые смогут рассчитывать на повышение уже через полгода-год.

Сколько это займет времени. Зависит от компании: где-то разработчик остается на позиции джуниора два — три года, а в другой — перейдет на новый уровень за год. Разработчик тоже влияет на развитие своей карьеры. Джуниоры с опытом 10–15 лет не редкость, если специалист не хочет развиваться в профессии и брать больше ответственности.

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

Middle — крепкий середнячок

Мидл (middle) — средний специалист. Это основной разработчик, который выполняет поставленные задачи почти без ошибок. Знает языки программирования и использует дополнительные технологии — например, backend-разработчик погружается во фронтенд и учит Angular. Мидлу не нужна проверка кода, наоборот, он сам проверяет его и исправляет, чтобы тот стал простым и понятным.

Мидл умеет решать нестандартные задачи. Например, если его попросили реализовать назначение прав пользователям, мидл понимает, как выполнить задачу, на какие типы разбить: пользователь, администратор, модератор и т. д. Он не боится задачи на неделю и может ее декомпозировать — разделить на простые и понятные части.

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

Опыт. От двух до семи лет.

Знания и навыки. К техническим навыкам джуниора добавляются новые — они приходят только с опытом. Мидл должен досконально знать базу используемых в разработке языков, не поверхностно, а понимать, как изнутри работает технология или фреймворк, иметь опыт работы и теоретические знания стандартных библиотек.

Софт-скилы (личностные качества). Мидл понимает, что работает не один, и умеет договариваться с другими членами команды. Проявляет самостоятельность, нацеленность на результат, большую ответственность и инициативность.

Задачи. Решает бизнес-задачи, которые закрывают конкретную проблему. Ему по силам изменить существующий сервис, добавить новые страницы интерфейса или функции API (протокол, с помощью которого программы общаются между собой и обмениваются информацией). Если говорить о тестировании, мидл умеет писать автотесты (программы для автоматического тестирования приложений) с нуля,без копирования кода, полностью самостоятельно. Мидл способен закрывать, не срывая сроков, 80% поставленных задач.

Ответственность. Полностью отвечает за проект или задачу, которую разрабатывает.

Зарплата. От 100 000 ₽ до 300 000 ₽.

Middle-разработчик: скилы, опыт работы, задачи, ответственность за проекты

Пример вакансии Python-разработчика уровня middle, от 160 000 ₽ до 260 000 ₽ на хедхантере

Что делать, чтобы перейти на следующий уровень. Для этого программисту нужно изучать новые технологии — например, мультиоблачные среды или блокчейн-технологии. Читать и анализировать исходный код популярных проектов: Facebook (организация признана экстремистской и запрещена на территории России), Uber, Netflix или «ВКонтакте». Изучать разные системы управления баз данных.

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

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

Senior — самый опытный в команде

Сеньор (senior) — старший разработчик. Уровень зависит не только от стажа в программировании. Если разработчик 10 лет занимается одинаковыми задачами, вырасти в сеньора не получится.

Сеньор — это самый опытный специалист в команде. Решает сложные задачи, проектирует архитектуру программ и систем и понимает, что в итоге должно получиться при запуске продукта или программы. Такой специалист проверяет код и помогает менее опытным разработчикам. Нередко занимает управляющую должность. Главный показатель сеньора — успешно запущенные IT-продукты, которые работают.

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

Опыт. От пяти до семи лет.

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

Софт-скилы (личностные качества). Для сеньора характерны наставничество, выработка и принятие решений, многозадачность, клиентоориентирование и планирование.

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

Ответственность. Отвечает за весь проект и работу всей команды: за архитектуру, скорость и эффективность кода.

Зарплата. От 250 000 ₽ и выше, верхней границы нет.

Senior-разработчик: сколько получает, какие задачи решает, какой опыт требуется

Пример вакансии PHP-разработчика уровня senior, от 250 000 ₽ до 700 000 ₽ на хедхантере

Что делать, чтобы перейти на следующий уровень. Возможностей у сеньора больше, чем у джуниора или мидла. Развиваться сеньор может в сторону технического директора, тимлида (руководитель команды), IT-архитектора или создать свою компанию по разработке. Для развития ему нужно повышать технические навыки — глубже изучать языки программирования, их структуру; наращивать софт-скилы — планировать работу свою и команды, брать на себя ответственность за решения и результаты и глубже погружаться в бизнес-процессы компании.

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

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

Куда может развиваться сеньор

Техлид (Tech Lead), он же CTO — Chief Technical/Technology Officer, или CIO — Chief Information Officer, директор по информационным технологиям. Это человек, который строит архитектуру для всей команды. Это самый сильный разработчик в команде. Выбирает техническое решение задачи: предлагает использовать определенные фреймворки, технологии и библиотеки. Он же проверяет код и решает самые сложные или ответственные технические задачи. Например, принимает решение об автоматизации работы с облачным провайдером и рассчитывает ROI (окупаемость инвестиций) этой автоматизации.

Тимлид (Team Lead) — одновременно опытный программист и хороший менеджер. Связующее звено между командой и менеджером проектов. Тимлид следит, чтобы у каждого сотрудника была задача и он понимал, как ее делать. В половине случаев тимлид занят менеджерской работой: согласует, раздает задачи и права пользователям, следит за загрузкой программистов, распределяет задания.

Проджект-менеджер (Project Manager) — руководитель проекта. Он координирует проект, организует взаимодействие между отделами, руководителями и заказчиками. В небольшой компании один человек может сочетать в одном лице тимлида и руководителя проекта. В больших — эти должности занимают два человека, каждый со своим уровнем ответственности.

IT-архитекторы — это разработчики с большим опытом реализации коммерческих проектов, которые умеют закладывать архитектуру (каркас) сложной IT-системы. Главная задача IT-архитектора — найти оптимальное решение между потребностями заказчика и возможностями команды.

Как пройти путь от программиста-одиночки до руководителя отдела IT в 500 человек

Павел Щербинин — технический директор в «Яндекс.Практикуме», руководитель отдела в 500 человек, экс-вице-президент по технологиям в «СберМаркете» в интервью Skypro рассказал о своей карьере в разработке.

История карьеры от младшего специалиста до технического директора

Павел, расскажите о своём образовании.

У меня высшее профильное образование. Я учился в Ступинском филиале Московского авиационно-технического института имени Циолковского (МАТИ), на факультете автоматизированных систем управления.

Какой была ваша первая стажировка или работа? Чему она вас научила?

Моя первая серьезная работа была в компании, которая занималась автоматизацией информационных систем Росздравнадзора. До неё я был программистом-фрилансером, делал сайты на заказ, но это не считается. Своей первой настоящей работой в IT я считаю именно работу в команде.

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

Что, по вашему мнению, больше всего оказало влияние на вашу карьеру в IT?

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

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

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

Кто такой мидл? И как им стать?

Как известно, в программировании есть 3 стадии развития: джуниор, мидл и сеньор. Сейчас мы подробнее узнаем, кто такой мидл и как же им стать.

Что значит быть мидл-разработчиком?

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

А чем мидл отличатся от джуна?

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

Характеристики, которые присущи мидлу:

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

Переход от джуна к мидлу занимает в среднем от 1 до 3 лет. В реальной жизни мидла можно сравнить с подростком, который считает, что он знает все лучше остальных. Эта стадия характеризуется тем, что мидл рассчитывает на то, что он знает все, что ему нужно знать и учить что-то новое нет нужды. Но с другой стороны, имея определенные навыки и знания, соответственно, как и подросток, мидл начинает креативить и экспериментировать.

Возьмут ли тебя в компанию мидлом?

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

Background

Предыдущий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *