Что должен знать junior, middle, senior разработчик: отличия уровней и как расти
Кем ты видишь себя через 5 лет? Рекрутеры и HR-менеджеры не устают задавать это вопрос, а кандидаты продолжают скромно отвечать: middle, senior, team lead.
Но каким путем достичь этих профессиональных уровней? Что нужно сделать, чтобы выбраться из позиции junior и с гордостью написать в LinkedIn middle? И как выглядит дальнейшее карьерное развитие? Чем middle принципиально отличается от senior? Отвечаем на эти вопросы в статье и разбираем ключевые навыки разработчика на каждом этапе.
Как стать junior разработчиком?
Для начала разберемся в терминах. В общем понимании junior — это новичок с минимально необходимым багажом знаний для самостоятельного выполнения задач. Для лучшего понимания поделим junior-специалистов на 4 категории:
- Стажер (trainee) — Это человек, который находится на шаге до того, чтобы стать junior-разработчиком. Trainee уже знают основы языка программирования, однако применять его для решения реальных задач еще не умеют. Каждая задача должна быть разписана пошагово от А до Я. В основном, это стажировка. То есть trainee работает на опыте, но о фиксированной зарплате пока не идет речь.
- Junior-новичок. Это стадия, на которой junior получает первый оффер на фултайм, а вместе с тем свои первые реальные задачи. Такой разработчик имеет достаточно знаний, чтобы выполнять простые задачи без детального описания. Новичок умеет работать с документацией и находить в ней нужную информацию. Главные задачи на этом этапе — «набивать собственные шишки», учиться у опытных коллег и задавать много вопросов..
- Middle junior developer. На этом этапе уже можно покупать футболки с IT-шными приколами. Испытательный срок за плечами, а все процессы командной разработки уже понятны. Теперь этому специалисту можно давать задачу и не контролировать ее выполнение в течение дня. Самостоятельно декомпозировать задачи такой junior еще не умеет, но уже ставит более глубокие и конкретные вопросы.
- Strong junior. Это категория, на которой специалист по техническим навыкам уже middle или очень близкий к нему. Последнее, чего не хватает, — это существенный опыт в решении бизнес-задач.
Как стать middle developer?
Middle — это программист, который, в отличие от junior-специалиста, уже умеет решать свои проблемы самостоятельно. Но старшие коллеги могут помочь, если возникли трудности, с которыми middle не может до конца разобраться без помощи.
Требования к владению технологиями в каждой компании могут отличаться, поэтому мы в общих чертах опишем то, что обычно ожидают от middle-специалистов.
Hard skills
- Понимание технологий, используемых в работе. Middle-специалист должен хорошо разбираться в программе, которую он пишет. Важно понимать, как работают определенные конструкции языка и уметь объяснить это другому человеку простыми словами.
- Проведение code-review. Умение разбираться в чужом коде — прекрасный способ поделиться своим опытом. Кроме того, это позволяет понять общую структуру программы и увидеть места, которые можно улучшить.
- Умение декомпозировать задачи. Обычно программист среднего уровня пишет код дольше, чем junior. Это связано с тем, что опытный специалист сначала должен разбить свою задачу на несколько последовательных этапов и ответить на вопросы, почему план выглядит именно так. В дальнейшем это поможет аргументировать свои решения. Также это тренирует умение разбираться в чужом коде.
- Насмотренность и любопытство. Для того, чтобы принимать правильные решения, необходимо увидеть множество плохих и хороших решений других разработчиков. Специалист среднего уровня (вообще, как и специалист любого уровня) должен быть в контексте всего, что происходит в индустрии: технологии, практики, успехи и неудачи.
- Понимание алгоритмов и того, где их можно применять. Мир программирования меняется очень быстро, но алгоритмы остаются стабильными. Важно понимать причинно-следственные связи работы определенных вещей, а также применять алгоритмы на практике, вместо того, чтобы мучить себя сухим заучиванием.
- Умение писать понятный код. Опытный разработчик всегда пишет простой код, который будет понятен коллегам.
Soft skills
- Самостоятельность
- Умение видеть требования бизнеса
- Понимание конечной цели проекта
- Классные коммуникативные навыки
- Уровень английского Upper-Intermediate и выше
- Умение ясно доносить свои мысли
- Стремление к дальнейшему карьерному росту
Как стать senior разработчиком?
Senior developer — это сильный специалист, который владеет знаниями не только в программировании, но и в смежных областях. Начиная с этого уровня, программист может не только работать самостоятельно, но и вести проекты.
Основное задание senior специалиста — принимать правильные технологические решения в проекте — то есть такие, которые приносят максимальную пользу бизнесу и минимизируют расходы.
Путь к этой позиции долгий и сложный. Опыт — это не то, что всегда можно измерить в годах, но в среднем до уровня старшего можно дойти за 5-7 лет интенсивной работы.
Так что же нужно иметь/знать/уметь перед тем, как подаваться на performance review на этот профессиональный уровень?
- Опыт. Главный показатель опытности — успешно запущенные IT-продукты, которые работают и решают определенную задачу бизнеса.
- Технические навыки. Senior создает и продумывает архитектуру проекта, пишет инструменты для решения задач в разработке и фреймворки, которыми пользуются джуниоры и мидл-специалисты. От senior разработчика требуют не только найти решение, но и убедить в его правильности заказчика и команду.
- Понимание всей картины проекта. Для одной задачи существует множество решений, но именно senior разработчик способен определить, какое является оптимальным в конкретном случае.
- Коммуникативные навыки. Senior программист часто ведет проекты самостоятельно, поэтому очень важно уметь обрабатывать ТЗ (техническое задание) заказчика, задавать правильные вопросы, устанавливать сроки выполнения и строить план работ. Кроме того, работа в команде все еще остается очень важной составляющей. Senior умеет организовать рабочий процесс и не боится таких терминов, как Agile, Scrum и Kanban.
- Навыкиментора и интервьюера. Подбор персонала и обучение новичков часто лежит на плечах senior-разработчика. Опыт позволяет выбрать, какие вопросы ставить, чтобы определить сильные и слабые стороны кандидата, а также как организовать рабочий процесс для тех, кто уже прошел собеседование.
А что дальше? Куди расти senior?
Senior — це dream этап для каждого программиста. Прямо сейчас рекрутеры соревнуются за таких специалистов и делают самые выгодные предложения. На этом уровне можно не беспокоиться, что тебя уволят из-за малейшей ошибки, потому что таких специалистов на рынке мало.
Однако это не повод расслабляться и больше не ставить перед собой целей. Senior программисты, как никто, знают, насколько важно постоянно развиваться, осваивая новые и новые горизонты. Они никогда не ограничиваются одним набором инструментов, потому что в стремлении к оптимизации рабочего процесса так или иначе приходится обращаться к чему-то новому.
Куда может развиваться senior-разработчик?
Техлид (Tech Lead)
Также CTO (Chief Technical/Technology Officer) или CIO (Chief Information Officer). Это специалист, который строит архитектуру для всей команды и является самым сильным разработчиком в команде. Именно техлид выбирает техническое решение задачи: предлагает использовать определенные фреймворки, технологии и библиотеки. В обязанности также входит проверка кода и решение самых сложных или ответственных технических задач.
Тимлид (Team Lead)
Это опытный программист и хороший менеджер одновременно. Основное задание — комбинировать технически грамотные решения с управлением командой.
Проект-менеджер (Project Manager)
Специалист, который координирует проект, организует взаимодействие между отделами, руководителями и заказчиками. В небольшой компании один специалист может объединять в себе роль тимлида и проекта.
IT-архитектор
Разработчик с большим опытом реализации коммерческих проектов, который умеет закладывать архитектуру (каркас) сложной IT-системы. Главная задача IT-архитектора — найти оптимальное решение между потребностями заказчика и возможностями команды.
Можно долго дискутировать о том, сколько времени нужно, чтобы добраться до карьерных вершин. Но у каждого свой темп и свои цели. Неизменным остаётся одно — в IT почти невозможно исчерпать себя и достичь потолка. Постоянное развитие, стремление к крутым проектам, драйвовая команда, амбициозные цели и четкое понимание их воплощения — это и есть план реализации собственного профессионального потенциала.
Если тебе нравится IT сфера и ты только думаешь о карьере в айти, пройди наш профориентационный тест. Узнай, какая специальность подходит именно тебе. Или выбирай один из наших it курсов и успешно расти от Junior до Senior и выше
Как понять что ты middle разработчик
Как понять, вы еще джун или уже миддл-разработчик?
Разбираем требования к джуниорам и мидл-разработчикам и учимся определять собственный профессиональный уровень. А также составляем список скилов, которые нужно прокачать для перехода на более высокую позицию.
Веб-разработка
5 июля 2022
Я все еще джун-разработчик или уже вырос до мидла? Этот вопрос задают себе многие разработчики, проработавшие в профессии примерно год или больше. Часто этого срока бывает достаточно, чтобы дорасти до новой карьерной ступеньки и получить повышение в должности и зарплате. Разберемся вместе, что для этого нужно сделать и как понять, что ваш профессиональный уровень уже соответствует позиции Middle-разработчика.
Что умеют Junior- и Middle-разработчики?
В разных компаниях требования к джуниорам и мидлам напрямую зависят от специфики работы и могут существенно отличаться. Как правило, в задачи Junior-разработчиков входит:
- написание простых программ,
- хорошее знание синтаксиса и библиотек определенного языка программирования,
- понимание принципов совместной работы с кодом, в том числе умение читать и редактировать чужой код.
От Middle-разработчиков требуется уже гораздо более уверенное и углубленное в сравнении с джунами знание рабочих инструментов разработки и ПО. Но ключевое отличие разработчика уровня Middle – самостоятельность в работе, на практике это означает умение:
- своими силами находить ответы на возникающие в ходе работы вопросы,
- придумывать способы решения рабочих задач и подходы к реализации проектов.
Как оценить собственный уровень в разработке?
В этом поможет прием, используемый IT-рекрутерами. Они часто спрашивают соискателей на позицию разработчика, как они поступят, если к ним обратится product-менеджер и поставит задачу создать продукт, аналогичный какому-то популярному сервису (Bitly, Tiny, Booking).
Если первым делом в такой ситуации вы думаете, КАК будете создавать продукт, это свидетельствует о том, что вы — исполнительный Junior-разработчик, и бизнес-процессы пока находятся вне поля вашего внимания.
А если вы уточняете, для чего и зачем нужно такое решение, кто им будет пользоваться и почему нельзя использовать уже действующие аналогичные сервисы, то как минимум задатки мидла у вас точно есть. И нужно продолжать их развивать.
Чтобы устроиться на позицию мидл-разработчика, у вас обязательно должен быть опыт работы по специальности не меньше 1-1,5 лет в продуктовой команде или веб-студии. Причем, чем меньше компания, тем выше у нее технические требования к кандидатам на вакансию Middle-разработчика. Дело в том, что в таких командах разработчик решает задачи самого разного типа, а в корпорации на аналогичной должности он работает в команде и решает точечные задачи.
Часто тимлиды сами замечают перспективных джунов и помогают им вырасти в мидлов. Если это не ваш случай, но вы чувствуете в себе потенциал, обсудите это с непосредственным руководством.
Список скилов для прокачки будущим Middle-разработчикам
Для мидл-разработчика в приоритете soft skills или «мягкие» навыки, включая:
- Способность отвечать за результат своей работы.
- Хорошо развитые навыки коммуникации.
- Понимание принципов работы бизнеса.
- Самостоятельность в поиске ответов и подходов к решению задач.
- Целеустремленность и умение доводить начатое до конца.
- Умение разделять большие задачи на отдельные части.
Учтите, что в погоне за самостоятельностью важно объективно оценивать себя. Прокачивайте способность к автономной работе вместе с постепенным увеличением нагрузки и сложности заданий. Но если вы столкнулись с проблемой, решение которой не можете найти сами, не стесняйтесь просить помощи у коллег.
Заключение
Стремясь стать мидлом, помните, что разработка — один из аспектов работы над продуктом. В ней участвует множество других специалистов (дизайнеры, маркетологи, специалисты техподдержки, product-менеджеры). Поэтому для успешной работы в должности Middle-разработчика важно умение продуктивно взаимодействовать с коллегами из других отделов и мыслить в масштабах бизнеса в целом.
Кто такие Junior, Middle, Senior?
К сожалению, не существует абсолютно точного «реестра навыков» по уровням. А жаль! Было бы круто научиться всему по списку и — хоп! — любая соответствующая вакансия у тебя в кармане!
В каждой отдельной компании под этими словами может подразумеваться что-то своё. Но всё же есть некий усреднённый образ разработчика каждого уровня, который ожидают от нас работодатели.
Junior
или младший/начинающий
Один из самых спорных для определения уровней разработчиков.
Спорный — так как никто не знает, что же он на самом деле должен знать и уметь. Один из самых частых вопросов: «Как мне понять, я уже Junior или мне ещё надо подучиться?»
Им обычно доверяют простые, некритичные для проекта задачи. Давать такому разработчику сложные таски (всё те же задачи) и ждать разумного исполнения нельзя. Код junior-разработчика нуждается в постоянном ревью. В среднем через год-полтора в меру способный junior developer уже готов к переходу в категорию «middle».
Вот примерный «разумный минимум», который хорошо бы знать начинающему разработчику к моменту выхода на рынок труда:
— базовое понимание своего языка и его особенностей;
— типовые структуры данных и ООП;
— как работать со строками, с датами;
— понимать жизненный цикл работы программы;
— знать хотя бы один основной фреймворк для своего языка;
— уметь гуглить типовые проблемы;
— желательно владеть английским хотя бы на уровне чтения документации со словарём;
— хорошее портфолио, за которое не стыдно, и где ты сможешь свой код объяснить — почему было выбрано то или иное решение.
Список примерный, но из года в год требования только растут.
Поэтому, если ты хотела отсидеться и начать входить в IT ещё лет через 5 — знай, потом будет гораздо сложнее, чем сейчас. По одной простой причине — все уже поняли, что в IT действительно хорошо, и с каждым годом всё больше людей стремятся этому научиться.
Представь, что если на одну Junior вакансию будет по 500 человек, как когда-то на менеджеров и бухгалтеров? А это вполне себе скорое будущее, которое ждёт всех, кто не успеет вбежать в последний вагон.
Middle
Основная особенность — способность самостоятельно выполнять поставленные задачи, не задавая миллиона вопросов и не требуя глубокой перепроверки написанного кода.
✅ Код Middle-разработчика прост для понимания и содержит комментарии для разбора сложных участков. Кроме того, умеет отличать хороший код от плохого.
✅ Знает, как именно работает приложение, глубже начинающего понимает задачи, а значит, точнее их оценивает и качественнее реализовывает.
✅ Уже есть хороший опыт, свободно владеет нужными технологиями и старается предугадывать возможные ошибки, аргументирует свои решения. Знаком со стандартными шаблонами и решениями при построении приложения в своей области, понимает, зачем они нужны, и умеет их применять.
Практически полностью автономен, но умеет работать в команде и по возможности помогает начинающим.
Обычно рост с уровня начинающего (Junior) до Middle проходит за 1–2 года.
Junior, Mid- и Senior-ы – в чем разница?
В мире IT-специалистов принято делить уровень подготовки и профессионализма разработчиков на три уровня: Junior-разработчик (младшего уровня), Middle-разработчик (среднего уровня) и Senior-разработчик (старший разработчик). На первый взгляд, эти термины очевидны, но на практике оказывается, что все понимают их по-разному. Порой сами разработчики не всегда уверены, как определить свой уровень или уровень коллег из команды. Но если провести аналогию, все становится сразу понятнее. Давайте попробуем сравнить разработчиков с… водителями! Ведь каждый день многие из нас садятся за руль и хорошо понимают эту «кухню» и правила игры на дороге.
Начнем наше сравнение с обучения: юному разработчику нужно изучить огромное количество информации, прежде чем начинать кодить самостоятельно. Первый этап в познании любого мастерства — это тщательное и структурированное обучение. Точно также курсант автошколы изучает ПДД, устройство машины, прежде чем порулить даже на автодроме.
Следующий этап — стажер-разработчик и стажер-водитель. Стажер водитель водит автомобиль только под пристальным наблюдением инструктора. Сначала на учебном автодроме, а потом — на улицах города. Когда вы видите на дороге машину со знаком «У» (Ученик) на крыше, у вас возникает определенный уровень ожиданий. Да, машина движется, тормозит, разгоняется, но она может заглохнуть в любой момент или повести себя непредсказуемо. Как и разработчик-стажер, который знает синтаксис, знает некоторые конструкции, но работает под постоянным присмотром более опытного коллеги и довольно часто допускает ошибки.
Но вот настает момент, когда вчерашний курсант получает водительские права и самостоятельно ездит по дорогам. Он уже имеет право самостоятельно управлять автомобилем, но все еще испытывает трудности: ему трудно парковаться, ехать задним ходом, проезжать сложные перекрестки и т. д. В иерархии разработчиков это Junior-разработчик. Обычно он работает с командой, выполняет простые задачи, а также требует наставничества и проверки кода.
На следующий уровень выйдет Junior, который:
- Стремится к саморазвитию
- Энергичен и целеустремлен
- Умеет с холодной головой воспринимать критику
Обычный водитель легко доставит вас из пункта А в пункт Б, хорошо справится с повседневными маневрами и ситуациями на дороге. Middle-разработчик — это уже полноценный разработчик. У него есть определенный опыт, он может самостоятельно решать большинство проблем и не нуждается в наставничестве.
Важные качества Middle-разработчика:
- Понимание функций и структуры продукта
- Опыт разработки в нужной отрасли
- Уверенное владение стандартными инструментами и шаблонами и умение их применять
- В ходе разработки он учитывают не только свои интересы и предпочтения — «мидлы» понимают, что работают в команде, и умеют взаимодействовать с коллегами
Следующий шаг самый трудный для объяснения. Каждый из нас, как правило, является знатоком в своей области и может отличить настоящего эксперта от обычного специалиста. Вернемся к аналогии с водителями — есть опытные водители. В отличие от обычных водителей, они могут предвидеть и прогнозировать ситуацию. Они, просчитывая ситуацию на несколько шагов вперед, избегают ненужных рисков. Это Senior-разработчик. Такой специалист в команде — это фактор стабильности. Он может более точно и адекватно оценить сложность задачи. В проекте существует множество ситуаций, с которыми разработчик высокого уровня уже сталкивался и с которыми у него есть опыт работы.
Как понять, каким уровнем навыков обладает разработчик? Существуют ли какие-либо формальные критерии?
К сожалению, формальных критериев, позволяющих быстро и однозначно определить квалификацию разработчика, не существует.
Многие опираются только на опыт работы. Например, до 1 года — младший, от 1 до 3 лет — средний уровень и так далее. Но это очень поверхностный подход. Опыт работы является необходимым, но недостаточным условием для достижения определенного уровня.
Например, не может быть старшего разработчика с 2-летним опытом работы. С другой стороны, есть много младших разработчиков с опытом работы более 5 лет. Стоит отталкиваться от Soft и Hard Skills разработчика. Но сухие теоретические знания — это не ключевое отличие, а лишь один из факторов. Программировать — это не общаться с компьютером. Программировать — общаться с людьми и отдавать указания компьютерам.
Существует интересное наблюдение, по которому можно «вычислить» начинающего разработчика. В голове Junior-специалиста основная задача — заставить код работать. Но это еще не все, нужно писать простой код, а это нелегко. Узнать таких специалистов можно по причудливому коду и чрезмерно сложным конструкциям. Так зачастую новички стараются «показать себя», но стремиться нужно к простоте. Младшие разработчики сосредотачиваются на «компьютерной» части кода, забывая о «человеческой».
Senior-программисты пишут легко. Зачастую, взглянув на такой код, можно подумать: «А где остальное?» Такой код понятный и прямолинейный. Этот подход крайне важен для дальнейшей поддержки кода и его масштабируемости в будущем. Важен для тех, кто будет работать с кодом дальше.
Заключение
Разница между Junior, Middle- и Senior-специалистом основывается не только на годах опыта. Да, Senior-разработчики знают значительно больше остальных, но также важно обладать несколькими другими умениями.
Опытные программисты пишут простой код, опираясь на масштабируемость и дальнейшую работу с ним. Такие разработчики имеют развитые Soft Skills: умеют общаться с командой и всегда остаются в тренде разработки. Опыт Senior-а поможет прогнозировать разработку и риски и найти решение в любой ситуации.
Junior-разработчику нужно учиться писать «легкий» для восприятия код. Важно вырваться из рутины и творить код, словно художник. Junior должен не бояться брать сложные задачи на себя и совершать ошибки (это неотъемлемая часть карьеры). Для поднятия до уровня Middle следует полностью овладеть своим техническим стеком и развивать Soft Skills. Также опытные разработчики стараются помогать своим коллегам стать более грамотными и тоже набираться опыта. Ведь суть команды — это помощь, поддержка, общение и, конечно, создание первоклассного продукта!