чем отличается junior middle и senior разработчик
Чем отличается junior middle и senior разработчик
Данные позиции обозначают опыт разработчика и его уровень владения требуемым набором инструментов:
Junior-разработчик
Опыт младшего разработчика составляет от 0 до 2 лет. В большинстве случаев на должность джуниор-разработчика идут студенты старших курсов, выпускники или стажеры, специализирующиеся в IT-сфере и имеющие соответствующую базу знаний.
Младшие разработчики начинают свой путь с несложных, некритичных задач в маленьких проектах и нуждаются в постоянном ревью их деятельности. Отличны несамостоятельностью – из-за отсутствия опыта им необходим куратор или наставник, который поможет не только поставить задачу, но и выбрать правильные инструменты для ее решения.
Что должен уметь Junior?
Middle-разработчик
Специалист, который решает большинство задач, не задавая вопросов, и не требует проверки каждой строчки написанного им кода является разработчиком среднего уровня или middle-разработчиком.
Среднеуровневые разработчики – это командные игроки. Они уже имеют хороший опыт и могут аргументировать свои решения. Участвуют в процессах работы, предлагают свои идеи по архитектуре, стараются предугадать возможные ошибки, свободно владеют необходимыми языками и технологиями, грамотно подбирают решения и стратегии. Обычно, для роста с позиции младшего разработчика до middle в среднем необходимо 1,5-3 года.
Навыки, необходимые для mid-level-разработчика:
Senior-разработчик
Экспертный разработчик пользуется авторитетом и доверием со стороны своей команды, так как именно он обладает глубоким пониманием всей системы, держит в голове большое количество сложных задач и с легкостью может увидеть и исправить ошибки в коде. Более того, senior-разработчик отвечает за распределение задач и организацию процессов взаимодействия внутри команды.
Что входит в обязанности senior-разработчика?
В данной статье мы рассмотрели возможные позиции разработчика и то, какие навыки необходимы для работы на каждой из них. Отметим, что разница между младшим, средним и старшим разработчиком заключается в количестве опыта, уровне мастерства и объеме багажа знаний.
Несмотря на квалификацию специалиста, каждый член команды играет важную роль и приносит свой вклад в развитие проекта, поэтому, на какой позиции вы бы не находились, необходимо «гореть» своим делом и стремиться быть лучше, чем вчера, тем самым способствуя ускоренному продвижению по карьерной лестнице.
Что должен знать Junior-разработчик
После обучения многие выпускники начинают активно искать работу по специальности. Диплом IT-специалиста чаще всего наводит только на один путь – устраиваться разработчиком в своей области. Для многих вакансия с припиской Junior кажется чем-то непонятным. Джуниор – кто это вообще?
Junior-программист (его еще часто называют джуном) – базовая позиция в IT-компании. Это специалист с минимальным опытом, у которого есть перспективы в развитии.
Что должен знать джун, где искать работу и на какую заработную плату он может рассчитывать – об этом и поговорим в сегодняшней статье.
Градации программистов
Если вы решились стать разработчиком, то будет полезно узнать о градации программистов. Всего их четыре: Junior, Middle, Senior и Intern (стажер).
Одно из главных отличий этих уровней – заработная плата, которая у стажера чаще всего сводится к нулю, а у синьора к максимуму. В разных IT-компаниях требования к программистам могут отличаться – так, например, в одной компании вы можете проходить как Junior, а в другой уже как Middle.
Intern
В некоторых компаниях практикуется брать на работу студентов старших курсов или просто людей без опыта работы. Часто стажеры работают бесплатно и набираются опыта – например, им дается несколько месяцев, чтобы под руководством опытного специалиста дорасти до джуна.
Есть ряд универсальных требований к интернам:
На практике вышеперечисленные знания, конечно, подтягиваются, но в первую очередь нужно надеяться только на себя. Если вы не хотите расти, то никто вам в этом не поможет, а вакансия стажера закончится поиском новой работы.
Junior
Спустя несколько продуктивных месяцев стажер перерастает в Junior-разработчика – это младший специалист, который самостоятельно выполняет приходящие задачи. Если разрабатывается какое-то приложение для десктопа, то он должен запрограммировать один из его кусков. И это не означает, что все будет идеально – джуны могут ошибаться. Зачастую они даже не знают план реализации продукта – все это обсуждается с тимлидом, который также проверяет весь код на наличие ошибок и неточностей.
Качества Junior-разработчика – все те, что у интерна, но с добавлением нескольких пунктов:
Начало пути всегда начинается с малого, поэтому будет тяжело, но помните, что Гугл – ваш помощник. Практически все задачи можно загуглить или найти на них ответы в документации.
Middle
И вот мы подошли к середине, откуда начинаются пути ответственных и успешных программистов. Middle-разработчик – это тот специалист, который понимает требования бизнеса и переводит их в технические решения.
Из этого вытекают следующие качества:
Помимо всего вышесказанного, Middle может рассчитывать на хорошую заработную плату, однако в некоторых компаниях зарплаты джуна и мидла могут быть одинаковыми.
Senior
Гуру программистов, старший разработчик или просто синьор. Это человек, который повидал огромную кучу кода, натыкался на множество ошибок и смог их решить. Его основная задача – принимать правильные решения в ходе проекта. То есть те решения, которые приносят максимум пользы с минимальными вложениями. Если Middle-разработчик четко понимает, над чем работают члены команды, то Senior думает о том, какие задачи в глобальном плане сможет решить текущий проект.
Синьор – это тот специалист, который решает проблемы еще до их появления. Звание Senior невозможно получить быстро. Следует наработать огромный опыт и понять, как выглядит «идеальный» продукт и чем он отличается от недоделанного. Умение принимать важные и правильные решения – одно из важнейших его качеств. Если в итоге что-то будет сделано не так, то вся вина на синьоре.
Резюмируя, можно сказать, что Senior-разработчик – один из главных участников команды, который знает, как будет работать продукт и что нужно для его реализации.
Теперь вы знаете, из каких участников состоит команда в IT-компании. Давайте вернемся к Junior-разработчику – поговорим о том, где ему искать работу.
Как найти работу
Как и в любой другой сфере, можно сказать, что главное – это желание. Просматривайте биржи вакансий, оставляйте отклики, звоните и проходите собеседования. Может быть, у ваших знакомых на фирмах есть вакансии программиста – поспрашивайте их. Практикуйте посещение форумов и помогайте на них другим пользователям. Спустя некоторое время может найтись тот, кто позовет вас в свою компанию, однако для этого нужно потратить немало сил.
Также стоит сказать немного о резюме – не указывайте информацию об опыте, не связанном с профессией. Пишите кратко, но по делу, постарайтесь рассказать о себе так, чтобы работодателю было интересно пригласить вас на собеседование.
Есть еще один лайфхак – оставлять отклики на заявки Middle- и Senior-специалистов. Речь не идет о том, чтобы претендовать на высокие звания – просто узнайте в сопроводительном письме, не нужен ли компании Junior-разработчик. Вас могут позвать на собеседование.
Зарплата Junior-разработчика
Заработная плата джунов сильно разнится, поэтому я укажу лишь приблизительные цифры, на которые можно ориентироваться при поиске первой работы:
Хотя на биржах часто встречаются вакансии, на которых джунам предлагают и вовсе 15-20 тысяч рублей, особенно в регионах, далеких от Москвы и Санкт-Петербурга.
Итог
Junior-разработчик – начинающий программист, который знает базовые вещи и понимает принципы работы своего инструмента. Даже если вы только недавно начали изучать программирование, то уже можете претендовать на звание джуна – в худшем случае это будет вакансия стажера, что неплохо для начала. Помните, что при постоянном совершенствовании своих навыков, вскоре вы получите звание Middle. Удачи!
Чем отличается junior от middle? а Senior?
Вот как это выглядит с т.з. работодателя
Миддл
— собеседование
не глубоко, но уверенно знает ключевые технологии, разницу между абстрактным классом и интерфейсом и три-четыре вежливых ответа на вопрос, «сколько это может занять времени».
— испытательный срок
влился в проект и работает.
— работа
работает стабильно и продуктивно.
Синьор
— собеседование
указывает на ошибку в тестовом задании, предлагает два решения проблемы, над которой команда пыхтела последнюю неделю и альтернативный стек технологий, на который можно перевести проект
— испытательный срок
рефакторит проект, делает билд джун-устойчивым, по ходу дела пишет алгоритм для киллер-фичи, запланированной только на следующий квартал и под конец испытательного срока организует воркшоп, на котором представляет свои наработки «в свободное время» по переводу проекта на другой стек технологий, в которых уже реализована большая часть функционала следующего релиза.
— работа
пинками помогает команде в переходе на одобренный руководством новый стек, в чем его активно поддерживает джун, окрыленный тем, что теперь его накопившиеся косяки точно никто не заметит, переводит проект на новый стек, увеличивает производительность в два раза, через год переводит еще раз, периодически генерирует идеи новых продуктов, может пропасть на неделю и вернуться с новой фичей, а может уйти в накопившийся за несколько лет отпуск и больше не вернуться, т.к. случайно встретил старого знакомого, передложившего другой мега-проект с гига-зарплатой.
Разница между «джуном», «мидлом» и «сеньором». И что делать, чтобы перейти на уровень выше
Уровень разработчика не обязательно определяется многолетним опытом программирования: «джун» вполне может быть старше «сеньора», — всё сводится к профессиональным навыкам. Это не означает, что старший разработчик должен быть специалистом во всём, но можно с уверенностью сказать, что навыки у него гораздо более развиты, чем у разработчиков младшего и среднего уровня.
Но разработчиков различных уровней отличает нечто большее, чем умение собственно программировать. Так в чем именно кроются различия?
Знания
Очевидно, что старший разработчик обладает гораздо более обширными знаниями. Для младшего разработчика изучить шаблоны проектирования, архитектуру, автоматизацию тестирования, методы повышения производительности и обеспечения безопасности и т. д. — отличный способ сократить этот разрыв в знаниях.
Важно знать, как должно создаваться программное обеспечение. Но просто знать всё это — не значит быть разработчиком более высокого уровня. Знания — это не ключевое отличие, а лишь один из факторов.
Фото — Clem Onojeghuo, площадка Unsplash
Программирование
Несмотря на мнение большинства обычных людей, программирование — это не общение с компьютером. Программировать — значит общаться с людьми и отдавать указания компьютерам. Ведь код в итоге компилируется и превращается в нули и единицы.
Код должен нести в себе смысл для тех, кто будет работать с ним в будущем. Команда, подхватившая за кем-то другим проект, должна иметь возможность открыть его исходный код и начать работать над новыми функциями или исправлением ошибок. И здесь кроется существенная разница между «джуном» и «сеньором».
Разработчиков среднего уровня в этом сравнении я учитывать не буду, поскольку в отношении навыков программирования они представляют собой своего рода переходную область — скорее ближе к уровню старшего разработчика. В основном «промежуточное» положение определяется опытом, поскольку обычно «мидл» успевает пройти весь цикл разработки хотя бы раз, а также совершить множество простейших ошибок и извлечь из них уроки.
Как вычислить «джуна»
Младшие разработчики неопытны: иногда это выпускники, которые только начинают работать на полную ставку. В их голове основная задача — заставить код работать. Если приложение работает — значит, оно хорошее.
Писать простой код — это сложная задача. И младшие разработчики этого делать не умеют: обычно код у них довольно своеобразный. Узнать их можно по причудливым однострочникам и чрезмерно сложным абстракциям — так «джуны» стремятся показать себя и пытаются дать понять другим, насколько хорошо они умеют программировать. Но это неверный подход.
Младшие разработчики сосредотачиваются на «компьютерной» части кода, упуская из виду «человеческую».
Как пишут код «сеньоры»
Глядя на код старшего разработчика, можно подумать: и это всё? А где остальное? Достаточно опытный разработчик пишет простой, понятный и, возможно, местами даже чересчур прямолинейный код — и это одно из самых важных качеств, если говорить о программировании. «Сеньор» следует принципу KISS, гласящему, что код должен быть простым и понятным: «Keep it simple, stupid»
Поэтому у старшего разработчика совершенно другой подход к написанию кода: он учитывает удобство дальнейшей поддержки и масштабируемость. Это совершенно не похоже на мышление младшего разработчика: «сеньор» думает о тех, кто будет работать с кодом, а «джуну» важно в первую очередь заставить код работать.
Не программированием единым
Помимо навыков программирования, есть и другие факторы, которые могут подсказать, что за разработчик перед вами.
Младшие разработчики, как правило, выполняют самые простые и не самые важные задачи; они не занимаются разработкой архитектуры. Разработчики среднего уровня тоже не разрабатывают решения, а просто выполняют задачи, однако их меньше контролируют — если задание довольно типовое. А вот «сеньоры» могут разработать приложение совершенно самостоятельно.
Это не значит, что у старшего разработчика по ходу дела не возникает вопросов: у любого из нас каждый день появляется множество вопросов, и «сеньоры» тут не исключение.
Разница в том, что последние знают, как задавать правильные вопросы и что делать с полученными ответами. Менее опытные разработчики могут задавать правильные вопросы, если речь идет о привычных им задачах, но в более сложных случаях им приходится обращаться за помощью.
Старший разработчик никогда не теряется и знает, как правильно действовать, получив ответ на вопрос. Это не значит, что он не будет просить совета у других — иногда лучшим решением бывает именно обратиться за помощью к тем, кто имеет больше опыта в данной области.
Разработчик среднего уровня также должен уметь задавать правильные вопросы, если только это не очень сложные задачи, требующие глубокого уровня знаний.
А вот в случае «джунов» не следует ожидать, что они смогут задавать нужные вопросы: у них недостаточно практики, поэтому ими должны руководить более опытные коллеги. Младшего разработчика следует обеспечить необходимыми ресурсами или хорошенько подтолкнуть в правильном направлении.
Переход на следующий уровень
Мы все хотим совершенствоваться, в том числе профессионально. Но какие шаги можно предпринять, чтобы перейти на следующий уровень?
От «джуна» — к «мидлу»
Начинающие разработчики не обладают богатым опытом, поэтому важно хотя бы пару раз пройти весь цикл разработки — таким образом вы сможете встретить на своем пути множество ловушек и научитесь их избегать.
Что касается программирования — следует научиться писать простой код: представьте, что после вас над проектом будет работать другой человек. Кроме того, придется научиться заниматься отладкой — это углубит понимание того, что происходит во время работы программы.
Также необходимо ознакомиться с лучшими методиками и побольше узнать об архитектуре, производительности, безопасности и т. д. Закройте пробел в знаниях, отделяющий вас от среднего уровня.
От «мидла» — к «сеньору»
Разработчикам среднего уровня подняться выше может быть довольно сложно: некоторые остаются на этом уровне всю свою карьеру.
Старший разработчик знает, в каких случаях можно пойти на компромисс, и когда этого делать ни в коем случае нельзя — потому что он успел проверить это на собственном горьком опыте.
Чтобы перейти на уровень «сеньора», нужно быть готовым к выполнению задач, за которые никто понятия не имеет, как браться. Нужно знать и уметь больше, чем просто делать свою работу.
Кроме того, как старший разработчик вы должны помогать менее опытным: вы для остальных — спасательный круг, за который можно ухватиться, когда не знаешь, как что-то сделать.
В свете этого неудивительно, что «сеньоры» полностью владеют своим техническим стеком. Нужно не просто уметь программировать, а знать все инструменты и приложения, которые используются в нанявшей вас компании.
Заключение
Разница между «джуном», «мидлом» и «сеньором» заключается не только в многолетнем опыте. Да, можно с уверенностью сказать, что у последнего навыки гораздо более развиты, чем у разработчиков младшего и среднего уровня. Но знание — не самый важный фактор.
Опытные разработчики пишут более простой код и подходят к этому иначе. Но кроме того, чтобы уметь программировать, очень важно также знать, какие вопросы задавать и что делать с полученными ответами. Именно старший разработчик — тот человек, чей богатый опыт позволяет не растеряться и в любой ситуации найти решение.
«Джуну», чтобы расти дальше, нужно постараться научиться писать простой код и пройти через несколько полных циклов разработки. Чтобы подняться выше среднего уровня, нужно сосредоточиться на изучении чего-то большего, чем просто рутинные задачи по исправлению ошибок. Вы должны быть готовы брать на себя самые сложные задачи и полностью овладеть своим техническим стеком. Еще одна обязанность старшего разработчика — выручать менее опытных.
Напоследок процитирую Мартина Фаулера:
«Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку»
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.
Junior, middle и senior разработчики: в чём отличие — отвечают эксперты
Нам пришел вопрос от подписчика Tproger, которым мы хотим поделиться с вами:
«Чем отличаются junior, middle и senior разработчики? Как происходит переход между этими уровнями?»
Мы обратились за разъяснением к нашим экспертам, а полученные ответы предоставляем вашему вниманию.
Ольга Чечельницкая, руководитель отдела управления персоналом ISPsystem
Упрощенно различие между уровнями разработчиков можно описать так: Junior — совсем новичок, может мало и часто с чужой помощью; Middle может многое и сам; Senior помогает всем, руководит или является гуру в одной из сфер. Кроме способности решать задачи, в разработчике для нас важны знания и вовлеченность в жизнь команды и продукта.
Конкретное наполнение уровней зависит от стека технологий, который используется в компании. В ISPsystem деление примерно такое:
Junior разработчик — вчерашний студент или даже школьник, имеющий случайный набор начальных навыков, который мы сочли достаточным, чтобы дать человеку шанс. Готов выслушивать критику и много учиться.
Middle разработчик — вчерашний Junior, успешно освоивший весь стек технологий, используемый командой. Его уже не пугает командная строка и Git. Он уверенно, самостоятельно и в срок решает небольшие задачи/баги. Высказывает полезные замечания при просмотре чужого кода.
Senior разработчик— ментор, евангелист. Ему можно поручить новый продукт или направление. Он уже руководит подразделением (teamlead) или является очень крутым разработчиком (techlead). Партнер компании. Он понимает, для кого делается тот или иной продукт. Кто, что и как должен делать.
Внутри этих понятий тоже есть разделение. Кроме Junior, есть Junior+ и Junior++. Аналогично с Middle, а с Senior — нет. Senior он есть, и все. «Он крут! Сам все решает и делает. Имеет авторитет в команде и вне» — так закреплено у нас. Мы ориентируемся на эти уровни при поиске новых программистов и для работы с теми, кто уже в команде. Глядя на требования — а они зафиксированы и открыты, — сотрудники понимают, в какую сторону «копать», чтобы вырасти. Это что-то вроде OKR (Objectives and Key Results).
Как происходит переход между уровнями? Первая оценка идет на собеседовании, далее — каждые полгода. Разработчик и его тимлид (или ментор) встречаются и определяют цели (те самые OKR), которые сотрудник должен достичь для повышения (или смотрят, достиг ли он поставленных ранее целей). Вырос Junior или нет, решает ментор и тимлид. Решение о переходе с уровня Middle на Senior принимает СТО. Предусмотрено также, что в этом могут участвовать и другие разработчики уровня Senior: один из них выдвигает коллегу, а окончательное решение принимают расширенным составом
Саттар Гюльмамедов, руководитель отдела разработки новых программных продуктов IT-компании NEIRIKA
Первое, что приходит на ум при обдумывании ответов на вопросы, – модель приобретения навыков Дрейфуса и матрица компетенций Джозефа Сиджина (Joseph Sijin). Но первая из них слишком общая, а вторая в чем-то чересчур подробная, в другом же – зияет лакунами. Поэтому мы постараемся дать оригинальный ответ, не изобретая вместе с тем велосипеда.
Постановка вопросов подразумевает описание устоявшейся практики, поэтому мы не будем рассматривать ситуацию «как должно быть». Вместе с тем, опустим критерии и подходы, используемые в организациях, исповедующих формализм, в которых движение разработчиков по карьерной лестнице происходит по таким критериям как «выслуга лет», «образование по специальности» и т.п. Так же мы выпустим случаи, когда кого-то «апнули», чтобы удержать и подобные им. Поскольку вопросы обобщенные, мы также не будем рассматривать отдельно специализации разработчиков, их «скилловость», хотя понятно, что они оказывают влияние.
На мой взгляд, при оценке уровня разработчика необходимо учитывать следующие навыки, знания и характеристики:
1. Вычислительные технологии (Computer Science): структуры данных, алгоритмы, системное программирование;
2. Программная инженерия (Software Engineering): VCS, IDE, CASE, CI/CD, middleware, процессы, метрики;
3. Программирование: языки программирования, библиотеки, каркасы, организация кода, организация собственной работы;
4. Коммуникативные навыки;
5. Когнитивные навыки;
6. Знание предметной области;
7. Опыт.
Часто первые две дисциплины незаслуженно обделяют вниманием, однако они играют большую роль при построении эффективного процесса разработки и оказывают значительное влияние на качество разрабатываемых приложений. Случалось встречать разработчиков, претендующих на позицию старшего разработчика, но не знающих что такое стек или граф. Возникает вопрос, если человек не знает, что такое стек, то насколько эффективно он может использовать, например, отладчик? Если человек не обладает знаниями о процессе разработки, то, как он может эффективно участвовать в нем?
Кроме прочих очевидных характеристик и знаний, я хотел бы обратить внимание на когнитивные навыки: профессия разработчика требует постоянного обучения не только для того, чтобы расти, но и для того, чтобы оставаться на своем уровне, идя в ногу со временем. И здесь важную роль играют память, внимание, способность фокусироваться, скорость обработки информации.
Опыт является довольно условной характеристикой, бывают случаи, что человек за 5 лет может достичь уровня эксперта, а некоторым недостаточно и 10, чтобы стать Middle.
Евгений Федореев, руководитель направления по разработке новых проектов, Банки.ру
Junior — разработчик, который только начал свой путь в программировании. Человек освоил синтаксис языка и может писать простейшие программы/скрипты. В коммерческой разработке это означает, что человек может решать простейшие задачи, более сложные задачи он может выполнять с помощью и под контролем опытного коллеги. Давать такому разработчику сложные задачи и ждать от него разумного исполнения (как по качеству, так и по срокам) нельзя. Код junior-разработчика нуждается в постоянном ревью.
Middle — разработчик, который уже имеет некоторый опыт в программировании. Он уже может самостоятельно выполнять сложные задачи, но ему необходимо указать направление. По стеку технологий такой разработчик имеет не очень богатый бекграунд и не всегда может выбрать необходимые и достаточные инструменты для решения задач. Middle-разработчик видит решение конкретной задачи, но не всегда представляет общую картину и то, как решение задачи интегрируется в архитектуру проекта.
Senior — разработчик с широким кругозором. Такой специалист знает несколько языков программирования, может с нуля реализовать архитектуру проекта, выбрать стек технологий, подходящий под техническое задание с учетом будущего развития проекта. Он постоянно изучает новые технологии и решения, появляющиеся в индустрии, сравнивает инструменты и находит плюсы и минусы каждого решения. При решении поставленных задач программист видит общую картину, не привязывается к каким-то конкретным технологиям, а выбирает наиболее подходящие для задачи, и решает ее с учетом дальнейшего развития проекта и его требований.
Переход между уровнями происходит со временем, если разработчик стремится к постоянному развитию. При изучении новых языков и технологий технический бэкраунд программиста растет и этот переход становится возможным. Человек понимает, что хочет и может решать более сложные задачи, чувствует что ему хватает для этого знаний, другие разработчики признают его авторитет и выбор решения.
Для развития своих навыков необходимо: изучать новые языки и подходы программирования (ООП, функциональное программирование), читать исходный код популярных проектов (находить плюсы и минусы представленных решений), изучать разные СУБД, NOSql решения, механизмы кеширования, очереди и тд.
Андрей Кузьмичев, заместитель генерального директора RU-CENTER
Если выделить какой-то критерий оценки — наверное это самостоятельная работа над проектом, степень погружения и качество кода. Например, middle-разработчик способен самостоятельно произвести оценку своей части проекта и приступить к его разработке, без дополнительной помощи. И что важно — без дополнительной проверки и переписки кода за ним. Чего не сможет сделать junior-специалист, которому потребуется консультация коллег и, возможно, помощь непосредственно в разработке. Senior-специалист должен видеть картину разработки в целом, представлять полную архитектуру проекта и понимать, что в итоге должно получится в релизной части. Конечно же, навыки программирования и опыт разработки играют далеко не последнюю роль в этой оценке.
Что касается перехода между уровнями — момент довольно субъективный. Есть случаи, когда сама компания не дает вырасти специалисту, например, простые задачи и плохое качество кода считается нормой. И даже если разработчик перешел на middle-уровень, это совсем не значит, что он действительно стал специалистом на уровень выше. Переход между уровнями должен сопровождаться качественным ростом навыков разработчика, навыков написания кода и, повторимся, самостоятельностью в принятии решений.
Александр Дроздов, директор по инновациям компании \»Иннодата\»
Деление это скорее условное, в большинстве компаний часто используется для определения зарплатных вилок, но по смыслу своему предназначено, в первую очередь, для упрощенного понимания квалификации разработчиков.
Junior разработчик — обычно это стажеры или сотрудники с отсутствующей квалификацией по определенной технологии. Обычно берут в команду к более сильным коллегам, которые помогают им не только с постановкой задачи, но и с выбором инструментов для ее решения. Младшим доверяют простые, некритичные для проекта задачи, на которых они скорее учатся, чем доставляют конкретный результат. В среднем через 1-1,5 года в меру способный junior developer уже готов к переходу в категорию «среднячков».
Middle разработчик – это уже опытный сотрудник, готовый к самостоятельной работе. Пускай он все еще не может правильно определить приоритеты или выбрать наиболее эффективный способ решения задачи, но и контроля со стороны «старших» он требует существенно меньше. Ошибок у него уже намного меньше, а иногда, в первую очередь из-за своей увлеченности и упёртости, он даже может найти нестандартное решение, которое оказывается лучшим как с точки зрения подхода, так и по результативности.
Senior разработчик – это достаточно уверенный и опытный специалист, прошедший боевое крещение реальными проектами, переживший не один дедлайн и в одиночку успешно выбравшийся из-под обломков неожиданно рухнувшей системы. Такими матерыми бойцами ИТ-фронта становятся, за редким исключением, минимум года через 3 после начала карьеры. Основное отличие «старших» в том, что они уже полностью самостоятельны и могут не только единолично принимать правильные решения, но и нести за них ответственность перед заказчиками и пользователями разрабатываемых решений. Достаточно часто они управляют собственной командой менее толковых опытных сотрудников, при этом существенно меньше сами пишут код, зато могут беглым взглядом выявлять ошибки и упущения новобранцев, помогают им с расстановкой приоритетов и определением направления для развития. Кроме того, это уже однозначные эксперты в определенной области, которые высоко ценятся на рынке труда.
Александр Карабасов, директор по развитию бизнеса SoftMediaLab
Путь к уровню Junior разработчика начинается, когда в компанию приходит вчерашний студент с опытом решения некоммерческих задач и так называемых pet projects – небольших проектов, реализованных рамках обучения. Когда он попадает в команду, на него обрушивается множество новой информации, но самое важное он получает наставника. В этот момент человек должен демонстрировать быструю обучаемость, не задавать два раза одни и те же вопросы и постараться максимум времени уделить обучению и задачам. Обычно компании берут человека, если до уровня junior ему осталось не более 6 месяцев. Так происходит, потому что простых задач в разработке не так уж и много. Часто их приходится специально искать под джуна, чтобы он мог на чем-то учиться. В результате компания тратит больше, чем получает.
Достижение уровня Junior означает, что человек перестал отнимать существенное время у наставника и начал самостоятельно и качественно решать задачи в единицы дней. Маркером может быть то, что наставник начал принимать его работу с первого раза после ревью кода. На этапе джуна мелкие задачи – это чаще всего исправление некритичных ошибок, добавление и изменение элементов пользовательского интерфейса.
Middle разработчик– это человек который уже набрал определенный опыт. Он понимает процессы в команде, архитектуру продукта, продуктовый контекст и почему все так, а не иначе. Он уже не боится задач длиной в неделю и более. Может декомпозировать эту задачу, в том числе на задачи в единицы дней, которые можно отдать джуну. Маркеры того, что человек перешел в разряд middle: наставничество, предложения по архитектуре и процессу, конструктивное обсуждение плана спринта, идентификация плохих задач и, самое главное, успешное решение задач средней сложности длиной в неделю и более. Middle – это человек, компетенции которого признала команда. Такой человек может справиться с добавлением новой бизнес-логики в существующий сервис, добавлением новых страниц интерфейса, добавлением новых функций API. В среднем путь от Junior до Middle занимает от 1 до 3 лет.
Senior разработчик — это человек, который решил, кем он хочет быть: тимлидом (руководить командой) или техлидом (заниматься техническими историями). Он перестает оперировать задачами, на вход он получает зону ответственности: продукт, отдельный бизнес-сервис, команду. Он сам понимает, что нужно делать, чтобы сделать хорошо. Senior, в отличие от Junior и Middle обучается сам, никто не говорит, что конкретно ему надо изучить. Senior часто выходит за пределы команды, начинает влиять на соседние команды и на жизнь компании в целом. Главный маркер Senior – он уже обладает серией успешно запущенных продуктов, у него есть ряд историй успеха. Еще один маркер – точность в оценках. За счет опыта решения различных задач senior может выбрать наиболее оптимальное решение и реализовать его самостоятельно или силами команды, при этом довольно точно попав в оценки по времени. Путь от middle до senior может занимать разное время. Кто-то достигает этого уровня за год, кто-то за 5-10 лет, а у кого-то этот переход так и не происходит
Григорий Шварц, директор по производству компании РДТЕХ
Исторически сложилось, что разница между уровнями junior, middle и senior определяется длительностью работы сотрудника на позиции разработчика: junior работает год-полтора, middle – два-пять, опыт senior’а составляет больше пяти лет.
Я не считаю такую градацию верным способом определить компетенцию сотрудника: разработчик может проработать на одном месте в условиях отсутствия сложных задач десять лет, так и не поднявшись на следующий профессиональный уровень. Гораздо более ценным фактором является степень ответственности, которую готов взять на себя разработчик при выполнении проектных задач.
Обычно junior’у достаются несложные задачи, для реализации которых ему необходим куратор, к которому он может обратиться с вопросами. Middle-разработчик справляется с задачами самостоятельно, по своей инициативе берется за задачи повышенной сложности, только в этом случае прибегая к помощи старших коллег. Если же разработчик способен решать задачи любой сложности, а коллеги часто обращаются за его авторитетным мнением, то такого сотрудника пора возводить в ранг senior. Переход между уровнями, как правило, происходит по результатам выполнения крупных проектов или на основании периодической оценки персонала, в рамках которой оцениваются не только профессиональные, но и личностные компетенции разработчика.
Сергей Попов, генеральный директор Лига А.
Многие считают, что у такого разделения есть чёткие границы в рамках всей отрасли, которые можно измерить и вывести в единую систему, по которой определять, к какому типу относится каждый специалист. Моё мнение — это ошибка. Уровень каждого конкретного специалиста необходимо считать по команде или компании, в которой он работает. Приведу пример: разработчик из небольшой студии, которая занимается потоковой разработкой однотипных проектов, может занимать в такой студии должность старшего разработчика(senior), но при этом если он пойдёт в крупную высокотехнологичную компанию, его уровень могут оценить как junior. Таким образом мы получаем человека, который для одной компании слишком силён, а в другую компанию его вообще не возьмут работать.
Если же разделять людей по уровню внутри компании, то, мне кажется, что самый простой способ, по количеству навыков и ответственности. Если человек не может выдавать качественный результат быстро и без контроля в силу своей неопытности — это junior. Если специалист решает много задач, не задавая вопросов и не заставляя кого-либо проверять каждую строчку, написанного им кода, — это middle. Если человек принимает решения по архитектуре всего приложения, проводит ревью кода и определяет, какой код хороший, а какой плохой, то это, скорее всего, senior. Более того, распределение задач между сотрудниками я бы тоже относил к senior, так как он лучше всех должен понимать уровень своих сотрудников.