Уровни людей в программировании

Джун, мидл и сеньор: разбираемся, кто есть кто

Деление специалистов на junior, middle и senior хорошо знакомо разработчикам — так обычно определяют уровень компетенций. Но каких требований ожидать от работодателя, если ему нужен «джун», «мидл» или «сеньор»? Попробуем разобраться.

Возраст и опыт — далеко не главное

Человек, который мало знаком с IT, может подумать, что senior — это разработчик, который много лет отдал своей профессии, middle — программист среднего возраста, а junior — вчерашний школьник, который начинает осваивать программирование.

Нельзя сказать, что это полное заблуждение. Нередко джуны действительно молоды, мидлам около 35 лет, а у сеньоров уже седеют волосы. Но не так уж редко встречаются солидные джентльмены, работающие на позиции middle и даже junior под руководством молодого senior-разработчика. Все зависит от компетенций человека, его личностных качеств и, конечно, возраста старта в профессии.

Так в чём различие?

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

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

Читайте также:  Политех программирование второе высшее

Если для сравнения взглянуть на код, написанный сеньором, может даже возникнуть недоумение: «Да как так, сложная ведь программа, а так изящно и просто написана!» Этот навык приходит с опытом и далеко не ко всем.

Разница только в коде?

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

Junior

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

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

Скорее всего, на следующий уровень выйдет джун, который:

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

Middle

Джун, который набрался опыта, улучшил компетенции и научился чисто выполнять свои задачи, может претендовать на позицию мидла. Буквальный перевод слова middle — «середина», но на самом деле в разработке мидл ближе к сеньору, чем к джуну.

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

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

Senior

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

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

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

Такой специалист в команде — это фактор стабильности. Он понимает технические риски и знает, как их снизить. Задача сеньора — сделать так, чтобы в коде совсем не было «костылей», которыми грешат джуниоры и мидлы. Без вмешательства опытного руководителя иногда получаются такие продукты, которые ассоциируются разве что с фантастическим гибридом бегемота с носорогом, у которого есть ещё гены утконоса и лотоса. Работает этот монстр Франкенштейна — и ладно.

В сухом остатке

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

В GeekBrains мы готовим и джунов, и специалистов уровня middle. Для первых у нас есть короткие курсы — «профессии», а для вторых — более продолжительные программы на факультетах GeekUniversity. Выбирайте сами, по какому маршруту сократить путь до позиции сеньора 🙂

Источник

Уровни IT-шности в программировании: Junior, Middle, Senior, Team Lead

Нажимая на кнопку «Отправить», вы даете согласие на обработку своих персональных данных.

  1. младший (джун от англ. Junior)
  2. средний (мидл от англ. Middle)
  3. старший (сеньор от англ. Senior)
  4. ведущий (главный программист от англ. Team Lead)

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

1) Младший разработчик (Джун или Junior) обладает:

  • Опытом до 1,5 лет
  • Трудолюбие и старания к обучению
  • Готовность к ненормированному графику
  • Отличные базовые знания об информационных технологиях как с точки зрения программного, так и аппаратного обеспечения или пройти курс компьютерной грамотности
  • Основы компьютерного программирования
  • Способность научиться пользоваться инструментами.
  • Знание по крайней мере одного языка программирования c++, c, java, python, php, mysql, nodejs, reactjs c со способностью писать базовый программный код

Какие задачи будет решать младший разработчик ?

  • Уметь находить и исправлять мелкие, менее важные ошибки
  • Работать с внутренними инструментами
  • Работать над определенными функциями
  • Необходима помощь в первоначальном планировании проекта
  • Компетентный младший инженер-программист обычно является помощником, ориентированным на backend или frontend, в процессе развития навыков

Младший разработчик обычно в начале своего пути будет создавать код с ошибками, поэтому ему требуется больше времени на проверку своего кода, не осведомлён или не имеет опыта работы с лучшими практиками и новейшими технологическими концепциями, а в школе программирования для детей «Айтишка» помогут изучить и познакомят вас с самыми последними передовыми практиками программирования в мире!

2) Средний разработчик (middle — мидл) обладает:

  • Опытом работы в среднем от двух до 5 лет
  • Готов к обучению
  • Имеет опыт работы в нескольких проектах
  • Может работать в одиночку и в команде
  • Могут самостоятельно настроить среду разработки
  • Может быть наставником младших разработчиков команды
  • Демонстрирует инициативу и способы решения различных задач

Какие задачи решает мидл разработчик ?

  • Создаёт программы таким образом, чтобы другие люди могли легко управлять ими
  • Код ревью, чтобы сделать его более эффективным
  • Структурирование задания
  • Составляет планы и графики тестирования
  • Детальное изучение кода в программе
  • Выполняет несколько задач для нескольких проектов
  • Все еще может понадобиться поддержка наставника

Старший разработчик (Senior — сеньор) обладает:

  • Имеет не менее от 5 до 8 лет опыта в программировании
  • Готов к обучению и саморазвитию
  • Экспериментирует и тестирует код, для получения результатов
  • Возможность развивать и наставлять разработчиков джунов и мидлов
  • Работа с проектами с помощью эффективного делегирования задач
  • Обладает глубоким взглядом на развитие проекта и предлагает наилучшие способы развития с учетом конечной рыночной цели

Какие задачи решает старший разработчик ?

  • Может выполнять полный рабочий процесс ‘разработка с нуля -> развертывание -> запуск проекта’
  • Составляет технические спецификации и техническое задание проекта
  • Определяет первоначальные риски при работе над крупными проектами
  • Отвечает за наставничество младших и средних членов команды
  • Проводите регулярные проверки кода для менее опытных коллег
  • Может самостоятельно решать различные проблемы благодаря прошлому опыту
  • Может решать сложные проблемы с помощью применения шаблонов проектирования
  • Может управлять командой, выполняющих задачи от простого до среднего уровня

Ведущий разработчик (Team lead — тим лид) обладает:

  • имеет опыт более 8 лет в программировании
  • регулярно участвует в разработке программных продуктов
  • понимание процесса построения и создания проектов
  • Знания и опыт во всех аспектах разработки программного обеспечения: сбор требований, валидация и управление ими; архитектура/ дизайн; разработка кода; интеграция; и тестирование / контроль качества.

Какие задачи решает ведущий разработчик ?

  • Создаёт и адаптирует шаблоны проектирования в проекте
  • Решает вопрос правильного построения архитектуры проекта
  • Доверяют решать проблемы без определенного подхода
  • Доверяют генерировать идеи в проекте
  • Создание и умения внедрять систему с нуля
  • Полномасштабные архитекторы проектов, чьи навыки разработки программного обеспечения позволяют им работать как над бэкендом, так и над фронтендом

Основные различия между инженерами-программистами, разработчиками и программистами.

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

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

Источник

Оцените статью