Содержание
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. Также опытные разработчики стараются помогать своим коллегам стать более грамотными и тоже набираться опыта. Ведь суть команды — это помощь, поддержка, общение и, конечно, создание первоклассного продукта!
Junior, Middle, Senior: Градация Уровней Разработчиков
Практически в любой профессии есть разделение специалистов на уровни, которые позволяют более-менее корректно определять компетенцию человека при приеме на работу и формировать справедливые зарплаты внутри коллектива. В сфере Ай-ти используется разделение на уровни джуниора, миддла, сеньора. Давайте разбираться, какой уровень знаний и навыков подразумевает каждый из них, каковы основные отличия позиций junior, middle, senior-специалистов, а также как адекватно понять, на какой ступени вы находитесь и грамотно левел-апнуться в карьере.
Содержание
- Кто такие Junior, Middle, Senior разработчики?
- Джуниор
- Миддл
- Сеньор
- Сколько времени занимает продвижение по карьерной лестнице?
- Средние зарплаты разработчиков
- Кого из них нанимать на работу?
- Подводные камни
- Выводы
Кто такие Junior, Middle, Senior разработчики?
Сразу нужно отметить, что не существует строго стандартизированной классификации, которая определяет уровень разработчика. На эту градацию влияет несколько факторов – опыт, длительность работы, масштаб компании, поэтому это будет обобщенная информация, отражающая распространенные практики среди менеджеров IT-компаний.
1
Джуниор
Джуниорами называют новичков-разработчиков, которые только начинают свой путь в карьере.
Обычно на позицию Junior претендуют выпускники, которые только закончили профильное образование или имеют небольшой опыт в разработке, делали некоммерческие или pet-проекты.
Такие специалисты имеют базовый набор знаний в программировании и английском языке, могут делать отдельные, зачастую самые простые, задачи. Но их знания и опыт обычно разрозненные и фрагментарные, они не способны выполнять сложные задачи.
Джун нуждается в постоянной помощи и контроле наставника
Если представить весь проект, как большой дом с множеством комнат, то джуниорам позволяют создавать для него кирпичики. Их работа определенно важна, но они не осознают всего масштаба проекта.
Итак, определить джуна можно по следующим характеристикам:
- Умеет самостоятельно делать простые задачи – писать небольшие программы и скрипты;
- ТЗ более высокого уровня сложности может выполнять только при поддержке наставника;
- Код специалиста нуждается в постоянном контроле;
- Имеет немного знаний в стеке технологий и языках программирования, потому поставленные перед ним тест задания может решить одним, максимум двумя способами, толком не понимая, какая между ними разница.
«Хороший» джуниор, который имеет шансы на быстрое продвижение по карьерной лестнице, должен:
- Постоянно развиваться, набивать руку в работе, стараться получить разносторонний опыт и новые знания;
- Быть целеустремленным;
- Спокойно воспринимать критику, стараясь извлечь из нее пользу и больше не совершать аналогичных ошибок;
- Понимать ТЗ и выполнять его без постоянной помощи наставника.
Про джуниоров часто говорят, что они сами не знают, чтоо они знают. И это действительно так. Поэтому этот этап карьеры важно использовать для систематизации своих навыков, их расширения и углубления, формирования четкого представления о процессах разработки.
Когда специалист-новичок набил руку в работе, справляется самостоятельно с задачами более сложного уровня, наставник не имеет серьезных замечаний к его коду, и ему интересно браться за более ответственные таски, это сигнал о том, что можно задуматься о переходе на следующий уровень.
2
Миддл
Специалисты среднего уровня являются основой любой команды разработчиков.
Они уже имеют хороший опыт работы, достаточный уровень знания языков программирования и понимания стека технологий, могут справляться с задачами самостоятельно, без постоянного контроля
На уровне мидл разработчику уже поручают не только простые и небольшие таски, но и сложные, интересные задания, которые могут занимать недели работы. Предполагается, что ответственность и профессионализм позволяют ему самостоятельно организовать свое время и разобраться с ТЗ, принимать правильные решения по выполнению задания. При этом мелкие задания миддл сможет выполнить гораздо быстрее джуниора и практически без багов.
Если говорить об уровне знаний, то специалист среднего уровня уже уверенно владеет основными технологиями, которые нужны для его специальности, он может придумать несколько вариантов для решения одной задачи и понять, какое из них будет оптимальным для этого проекта.
Как пишет код Junior:
function add (a) {
return function (b) {
return a + b;
};
};
Вариант Middle разработчика:
const add = a => b => a + b;
На этом уровне специалист уже вполне уверенно чувствует себя в работе и понимает, что он сможет справиться самостоятельно даже с нестандартными задачами. И эта карьерная ступенька считается наиболее опасной для специалиста. Достаточно много программистов так и остаются на уровне миддл, не желая развиваться дальше.
Как распознать middle девелопера:
- Способен понять структуру продукта и его функционал, поэтому не просто выполняет свое задание, а находит для него оптимальное решение;
- Имеет хороший опыт в разработке, поэтому может решать задачи быстрее и справляться со сложными;
- Владеет стандартным инструментарием, сервисами и шаблонами в своей отрасли, понимает, в каких случаях логично применять каждый из них;
- Пишет аккуратный код, учитывая интересы команды, делают его понятным не только для машины, но и для человека.
Что делает перспективный мидл, который сможет претендовать на позицию сеньора?
- Не останавливается в своем развитии, даже когда чувствует себя уверенно в работе. Стремится изучить все детали и тонкости используемых инструментов;
- Улучшает свои компетенции, учит дополнительные технологии, приложения, фреймворки и языки программирования, которые уже выходят за рамки его нынешних обязанностей.
Если такого миддла перевести в другой отдел, он сможет быстро вклиниться в работу и не ухудшит показатели команды;
- Работает над своими soft skills. Чтобы стать senior разработчиком, нужно не только иметь сильную техническую базу, но и лидерские качества, хорошие коммуникативные скиллы, ведь такой специалист будет обучать команду, помогать сотрудникам.
3
Сеньор
Senior или старший разработчик – это исключительный специалист, который в полной мере овладел стеком технологий и языками программирования, необходимыми в его работе.
Это профессионал, который может не только справляться с разрозненными задачами-кирпичиками проекта, но и в целом понимать его архитектуру, знать функционал
Большой опыт и багаж знаний позволяют ему глобально видеть продукт и участвовать в стратегических решениях, предлагать более эффективные технологические решение.
Такой разраб знает множество решений одной задачи, может объективно оценить плюсы и минусы каждого из них, после чего выбрать самый эффективный вариант. Он справляется со сложными и нестандартными задачами, может помочь команде найти решение в самых безвыходных ситуациях. Это настоящий эксперт, который отвечает за стабильность и адекватность работы продукта, снижает технические риски бизнеса, поэтому нужен в каждой команде.
Как распознать разработчика-сеньора:
- Он уже набил немало шишек и может найти решение любой задачи, даже самой нестандартной и сложной, с которой не может справиться вся команда.
- Умение писать максимально простой код, в котором нет ничего лишнего.
- Он является лидером и наставником в команде, который помогает менее опытным сотрудникам, может найти подход к каждому и объяснить сложные моменты.
- Глобально смотрит на проект и разрабатывает его структуру. Может сам с нуля реализовать продукт, поскольку уже понимает тонкости построения архитектуры, а широкий кругозор позволяет ему определять оптимальные технические решения для каждого этапа и раздела.
Уровень Senior, как мы уже писали, доступен не всем. Обычно программисты, которые до него доходят имеют особые личные качества – это очень внимательные, целеустремленные (их цель стать lead специалистами), обладают системным подходом, любопытные специалисты с высоким уровнем когнитивных способностей, могут детально анализировать ситуацию, правильно оценивают уязвимости. Они всегда изучают что-то новое и не устают от этого.
Читайте также: Кто такой DevOps-инженер? Обзор профессии, зарплата, где пройти обучение с нуля
Сколько времени занимает продвижение по карьерной лестнице?
Продвижение между уровнями у каждого специалиста происходит в «своем темпе»
Это зависит от его способности и желания учиться, компании и проектов, с которыми он работает. Но можно выделить средние временные промежутки.
- Junior – 1-3 года. Самые старательные и целеустремленные джуны успевают получить необходимую базу опыта и знаний в течение года, чаще всего переход на следующий уровень происходит через 1,5-2 года.
Если вы видите, что все задачи уже делаете самостоятельно, ваш ментор не вносит кучу правок в ваш код, то не стесняемся на собеседовании и обсуждаем повышение со своим руководством.
- Middle – 1-3 лет. При хорошем развитие карьеры специалист проведет на позиции миддла от 1 до 3-х лет. При упорной работе за это время можно углубленно изучить необходимые технологии и языки. Но, как мы уже писали, далеко не все специалисты вообще хотят или могут преодолеть этот рубеж. Кто-то не вытягивает по уровню знаний, ведь даже чтобы остаться на своей позиции, нужно что-то учить и развиваться, потому что профессия разработчика не стоит на месте. А для повышения – нужно делать еще больше! Для кого-то становится проблемой вопрос наставничества, ответственности и необходимости быть нянькой для всей команды, а кресло миддла кажется «спокойной гаванью».
- Senior developer – 3-5 лет. Обычно в вакансиях на позицию старшего разраба хотят видеть специалиста со стажем от 5 лет, но на первом месте все равно ваши навыки.
Если вы за 3 года освоили весь стек технологий, работодатель наверняка будет только рад заполучить исключительного специалиста. Дальнейшее продвижение по карьерной лестнице уже ведет к руководящим позициям с административными полномочиями – тимлид или архитектор.
Читайте также: Профессия геймдизайнер: где пройти обучение, обязанности и зарплата
Средние зарплаты разработчиков
Помимо чувства уверенности в своей работе и уважения коллег, продвижение по карьерной лестнице имеет еще один немаловажный бонус – рост зарплаты. Так, зарплата старшего разраба вполне может быть в несколько раз больше, чем у джуниора. Согласитесь, получить такой профит всего за несколько лет – очень заманчиво.
Приводим данные экспертизы Хабра, который регулярно анализирует зарплаты в индустрии, в зависимости от их квалификации:
Зарплаты за 19-20 годы
Из этого графика становится понятно 2 ключевые вещи:
- С каждым новым левел-апом, зарплата разраба увеличивается примерно в два раза.
- Опытные разработчики более ценны на рынке труда, их зарплаты продолжили расти даже в условиях пандемии и кризиса 2020.
А вот как обстоят дела с зарплатами в разных специализациях и языках программирования:
второе полугодие 20-го года (1 часть)второе полугодие 20-го года (2 часть) Читайте также: Обучение HTML и CSS | ТОП-10 Лучших Курсов — Включая Бесплатные
Кого из них нанимать на работу?
Небольшое пособие для рекрутеров и HR
JUNIOR, ЕСЛИ:
- Необходимо решать небольшие, но важные в долгосрочной перспективе задачи, такие как мелкая отладка;
- Вы готовы инвестировать в развитие амбициозного специалиста;
- Профессиональная увлеченность специалиста более ценна для вас, чем его начальные технические знания.
MIDDLE, ЕСЛИ:
- Вашему проекту не хватает опытного, но доступного специалиста, готового управлять определенными областями разработки;
- У вас достаточно молодых специалистов, и вам нужен кто-то более знающий, чтобы их наставлять;
- Вы цените целостность специалиста среднего уровня, который является более универсальным.
SENIOR, ЕСЛИ:
- У вас уже есть команда инженеров-программистов низшего звена, которой нужно управлять;
- Вы можете позволить себе высокоопытных, квалифицированных асов;
- Ваш проект имеет глубокий характер и требует узкого, строгого подхода;
- Вы собираете команду экспертов, но не обладаете должным опытом для эффективного проведения собеседований.
Читайте также: Обучение Android-разработчиков | ТОП-10 Курсов — Включая Бесплатные
Подводные камни
В начале этой статье, я акцентировала внимание на том, что система разделения разработчиков на бесконечные уровни достаточно схематичная, и ее сложно назвать объективной. Что приводит нас к некоторым подводным камням в продвижении в развитии своей карьеры и профессионализма:
- Застревание в типовых задачах. Такую ситуацию можно встретить и в небольших компаниях, которые идут по пути наименьшего сопротивления и берут простые однотипные проекты, и в отдельных крупных компаниях, которые хотят сэкономить на зарплате и не очень способствуют продвижению сотрудников.
Смысл в том, что джуниору дают простые и совершенно однотипные задания изо дня в день. В результате, вы можете проработать на такой позиции и 3 года, а по факту не получить новых знаний и полезного опыта.
- Необъективность. В зависимости от компании, требования к уровню разработчика могут сильно отличаться. Представим, что вы начали работать в небольшой веб-студии. Там вы быстро зарекомендовали себя и начали продвигаться по карьерной лестнице, став через несколько лет старшим разработчиком. Потом вы решили перейти на работу в большую компанию, где зарплата гораздо выше. И тут вас может ожидать большой облом. Небольшая веб-студия имеет небольшой штат сотрудников и, как результат, берется за более простые, немасштабные проекты, поэтому и требования к своим сотрудникам не так высоки. Крупная ИТ-компания работает со сложными и высокотехнологичными продуктами, и здесь требования к соискателю гораздо выше. В итоге ваш уровень senior в маленькой компании может оказаться уровнем middle, или даже junior в крупной фирме.
Читайте также: Программирование для чайников |ТОП-10 Советов начинающему программисту
Выводы
Главный вывод из всей этой информации таков: продвижение в карьере разработки – это не столько про время, сколько про целеустремленность и саморазвитие. И это еще одна вещь, которая делает программирование такой востребованной профессией. Во многих традиционных отраслях рынка труда продвижение по карьерной лестнице до приличного уровня заработка и хорошей должности по-прежнему занимает десятилетия, а разработка позволяет достичь этого буквально за 3-5 лет. И это прекрасно.
Ну а коктейль успешного движения от джуниора к сеньору состоит из прокачки профессиональных скиллов, изучения новых технологий, получения разностороннего опыта, решения нестандартных задач и улучшения своих гибких навыков – коммуникабельности, лидерства, аналитического мышления.
Квалификационные уровни инженера-программиста: младший, средний и старший
Время чтения: 12 минут
Карьерная лестница разработчика программного обеспечения состоит в основном из трех ступеней : младшая, средняя и старшая. Отрасль применяет эту терминологию для лучшего понимания и присвоения степени квалификации, а также для определения уровня заработной платы и обязанностей.
Знание уровней старшинства разработчиков поможет установить более точные ожидания для конкретного инженера. Кроме того, это различие не только улучшит внутреннюю коммуникацию, но и улучшит общение между клиентами и поставщиками, сделав все взаимодействие более эффективным. Различая эти названия должностей, клиент лучше понимает уровни компетенции в ИТ-индустрии.
В этой статье мы проанализируем стаж разработчика программного обеспечения по следующим критериям: технические знания, повседневные обязанности, самостоятельная работа, взаимодействие с командой и видение.
Подходы к оценке экспертизы в разработке ПО
В рамках анализа уровня стажа опишем несколько существующих подходов к оценке экспертизы программиста. Применение их к данной градации обеспечит более широкую перспективу стажа в разработке программного обеспечения.
Модель приобретения навыков Дрейфуса определяет 5 стадий приобретения и овладения навыками. Энди Хант в своей книге «Прагматическое мышление и обучение: рефакторинг вашего Wetware » применяет модель Дрейфуса к разработке программного обеспечения. Автор использует модель Дрейфуса для структурирования фундаментальных изменений, происходящих на протяжении всего процесса обучения. Это позволяет ему сопоставить, как программисты на разных этапах воспринимают процесс разработки и подходят к проблемам, а также то, как они формируют ментальные модели.
Пять этапов модели Дрейфуса, иллюстрирующие наиболее важные изменения на пути от новичка к эксперту
Источник: Прагматическое мышление и обучение: рефакторинг вашего программного обеспечения Энди Ханта Это еще один подход Мейлир Пейдж-Джонс к классификации знаний в области разработки программного обеспечения. Классификация разбивает компетенцию на семь этапов и использует производительность в качестве ключевого критерия. Хотя изначально он использовался для оценки разработки программного обеспечения в ’90s, этот подход можно легко применить к нашей реальности.
Кривая производительности
Источник: «Семь стадий мастерства в разработке программного обеспечения» Мейлир Пейдж-Джонс
Матрица компетенций программиста. Эта матрица набора навыков программиста была разработана Сиджином Джозефом, лидером в области технологий с более чем 15-летним опытом разработки и создания программных продуктов. Матрица имеет трехуровневую структуру, которая соответствует ролевому распределению Junior-Middle-Senior. Матрица также включает уровень 0, который, по нашему мнению, соответствует уровню стажера-программиста. Мы будем ссылаться на этот источник при описании требований к техническим знаниям для каждого уровня старшинства.
Сравнение подходов к оценке знаний
Стажер: только что окончивший школу
В некоторых компаниях есть программы стажировок, куда берут инженеров начального уровня, которые в основном имеют только теоретические знания и не имеют опыта работы. В этом случае должность новичка будет Стажер.
Применяя этапы опыта Мейлир Пейдж-Джонс, мы разделяем этот ранний период в карьере разработчика на три этапа: Невинный , Разоблаченный и Ученик .
Поначалу инженеры практически не имеют доступа к реальному развитию. Открытые разработчики делают первые шаги к профессиональному программированию. Наконец, ученик уже минимально подготовлен для работы над реальным проектом.
Говоря о технических знаниях, стажеры в основном ограничены использованием IDE в качестве текстовых редакторов для кодирования без использования их дополнительных функций. Они редко имеют дело с API и часто вынуждены обращаться к документации. Помимо основной платформы, на которой они специализируются, стажеры не знакомы ни с какими фреймворками и имеют лишь смутное представление о том, что такое база данных.
Младший разработчик: методом проб и ошибок
Вступить в дверь в качестве младшего разработчика сложно, потому что они часто приходят и уходят. Работодатели, как правило, нанимают младших разработчиков для фриланса или краткосрочных контрактов с целью снижения стоимости контракта.
Тем не менее, козыри юниора — мотивация и энергия, которых уже нет у многих пожилых людей. Юниоры знают, что приложенные ими усилия окупятся, поскольку позволят им быстрее перейти на следующий уровень.
Альтернативные подходы. Ссылаясь на модель Дрейфуса, мы можем разделить младший уровень на две фазы: Новичок и Продвинутый Новичок .
Чтобы начать работу, начинающим разработчикам нужны универсальные контекстно-независимые правила. Будучи нетерпеливыми, они хотят немедленных результатов. В то же время ошибки могут парализовать их, так как они не умеют с ними обращаться.
Продвинутые новички начинают отходить от фиксированных правил и формулируют общие принципы на основе похожих ситуаций, с которыми они сталкивались. Основная проблема в том, что они упускают из виду более широкий контекст, возможно, считая его неуместным.
Используя градацию Мейлир Пейдж-Джонс, мы можем назвать юниора Практик . Именно тогда производительность разработчиков значительно возрастает, поскольку они начинают осваивать новые методы методом проб и ошибок и применять их в корпоративных проектах.
Младший набор технических навыков и обязанностей
IDE. Juniors перемещаются по интерфейсу и эффективно управляют IDE с помощью панели задач.
API. Они знают, как обращаться с наиболее часто используемыми API.
Каркасы. Разработчики Junior работали с некоторыми фреймворками и знают о популярных, которые стоит использовать в своем языковом стеке.
Разработка базы данных. Младший знает основные методы проектирования БД, свойства ACID и транзакции. Кроме того, младший может писать простые операторы выбора для извлечения информации из базы данных.
Языки программирования. Младшие разработчики обычно знакомы с одним языком программирования. Они сразу выберут его и реализуют полустабильное решение, которое решает большинство проблем в определенных вариантах использования.
Платформы и инструменты. Юниоры имеют профессиональный опыт работы примерно с тремя платформами. Их знание внутреннего устройства платформы поверхностно. Они знают об альтернативах популярным и стандартным инструментам.
Ежедневные обязанности. Юниоры обычно получают наименее сложные задачи, которые мало влияют на конечный продукт.
Младший коллектив и перспектива
Самостоятельная работа. Безусловно, за юниорами нужен тщательный присмотр. Им нужно сильное наставничество, чтобы развивать свои навыки.
Работая в команде, младший должен оставаться вовлеченным и получать от команды как можно больше знаний.
Видение. Проблема с джуниорами в том, что они сосредоточены на коде, а не на разработке. Это мешает им получить общую картину.
Средний разработчик: рабочая лошадка в мире программирования
Младшие разработчики с опытом работы более трех лет могут использовать свои навыки, чтобы стать специалистами среднего звена. Разработчики среднего звена, которых иногда называют «рабочими лошадками мира программирования», наиболее эффективно работают с рутинным кодом.
Альтернативные подходы. Модель Дрейфуса описывает среднего разработчика как Компетентного . На этом этапе они также могут выполнять приличную работу по устранению неполадок и отладке.
Компетентные программисты очень инициативны и находчивы. Они занимают руководящие должности в команде и могут наставлять новичков. Тем не менее, компетентным разработчикам все еще не хватает опыта, чтобы расставить приоритеты своего внимания во время работы над проектом, и они едва ли способны размышлять о своих ошибках.
С точки зрения семи стадий экспертизы мы можем считать разработчика среднего уровня Подмастерьем . Они работают над оттачиванием своих навыков и повышением производительности. Подмастерья достаточно компетентны, чтобы быть источником советов по разработке программного обеспечения.
Средний набор технических навыков и обязанностей
IDE. После продолжительного использования IDE средний разработчик запомнил сочетания клавиш для наиболее частых операций, что действительно ускорило работу.
API. Промежуточные уровни обладают глубокими и прочными знаниями основных API.
Каркасы. Миддлы технически подкованы в использовании фреймворков, что помогает им писать более понятный и короткий код.
Разработка базы данных. Средние уровни хороши в управлении базами данных. Они могут разрабатывать нормализованные схемы БД с учетом запросов, которые будут выдаваться. Разработчики среднего уровня хорошо разбираются в использовании представлений баз данных, хранимых процедур, триггеров и определяемых пользователем типов данных (UDT). Они хорошо разбираются в методе объектно-реляционного отображения (ORM), используемом для преобразования данных между несовместимыми системами типов. Чтобы ускорить процесс запроса, они применяют знание синтаксиса индекса для создания пользовательских кластеризованных и некластеризованных индексов.
Языки программирования. Разработчик среднего уровня понимает функциональное программирование и знает, когда и как применять функциональные концепции на любом языке.
Платформы и инструменты. Middles уже работали с более чем четырьмя платформами и обладают глубоким пониманием того, как работает платформа, включая выполнение кода. Они очень удобны с их инструментами управления пакетами.
Ежедневные обязанности. Инженерам-программистам среднего уровня обычно не поручают очень сложные задачи, которые могут потребовать глубоких инженерных знаний. Между тем, им может быть поручено спроектировать часть приложения, чтобы подготовить его к дальнейшей передаче старшему разработчику. Они уже способны превращать тикеты в решения, давать оценки по задачам и помогать в декомпозиции больших участков работы.
Средний коллектив и перспектива
Самостоятельная работа. Средние уровни могут выполнять работу с меньшим надзором, при этом выполняя относительно рутинные задачи.
Работа в команде. Middles активно сотрудничают с членами команды, включая дизайнеров, бизнес-аналитиков и архитекторов.
Видение. Разработчики среднего уровня углубили свое понимание сценариев цикла разработки, что позволяет им более точно применять методы Agile. Они видят результаты возникающих проблем и учатся избегать их в будущем.
Эффект Даннинга-Крюгера
Многие разработчики среднего звена попадают под эффект Даннинга-Крюгера, что препятствует их дальнейшему карьерному росту. Этот психологический феномен описывает, какой опасной вещью может быть небольшое знание. Будучи самоуверенными, разработчики могут склонны переоценивать свои навыки, что препятствует их прогрессу. Тем не менее, это условие является большой проблемой при разработке программного обеспечения. В то время как это когнитивное искажение может случиться с работниками любого уровня старшинства, средние уровни наиболее уязвимы для него.
На самом деле, многие инженеры не могут представить лучших методов и практик, чем те, которые они внедряют в настоящее время. Программисты, у которых была череда неудачных проектов, могут поддаться убеждению, что проект обычно превращается в кошмар.
При противоположном сценарии в какой-то момент инженеры-программисты могут осознать, как мало они знают и как много еще предстоит узнать. Именно тогда программисты начинают переходить на более высокий уровень старшинства.
Графическая иллюстрация эффекта Даннинга-Крюгера для разработчиков в зависимости от их стажа и знаний.
Источник изображения: Младшие разработчики: вы больше не джуниор , Амандо Абреу
Чтобы уменьшить влияние неточной самооценки на приобретение навыков и общий карьерный рост, разработчики должны постоянно работать над повышением своей компетентности. уровень, расширяя область своих знаний и собирая отзывы из разных частей бизнеса. Они всегда должны находить время, чтобы подумать о своем прогрессе и сделать правильные выводы.
Старший разработчик: решает проблемы
Разработчики с глубокими специальными знаниями и исчерпывающим опытом, которые позволяют им наставлять своих коллег, называются старшими. Кроме того, старшие разработчики хорошо разбираются в бизнес-области, которую они поддерживают. Их компетенция может даже расшириться, чтобы помочь с маркетингом и общим развитием бизнеса. Старший разработчик всегда будет думать о том, что он делает, с точки зрения того, какую пользу это приносит бизнесу.
Короче говоря, их работа состоит в том, чтобы предлагать лучшие решения проблем. На самом деле старший пытается предвидеть проблему и решить ее до того, как она произойдет. Как специалист по решению проблем старший должен заранее думать об узких местах системы, а также иметь в виду уязвимости и проблемы, вызванные неправильным использованием инструментов.
Руководя проектом, руководитель принимает обоснованные решения о разработке и внедрении программного обеспечения, основываясь на знаниях передового опыта в этой области.
Альтернативные подходы. Согласно модели Дрейфуса трудовой стаж можно разделить на две ступени: Профессионал (младший эксперт) и Эксперт.
Опытные программисты совершают большой прорыв — они могут размышлять о своей работе, анализировать ошибки и учиться на них, делая правильные выводы. Используя преимущества размышлений и отзывов, опытные разработчики значительно улучшают свою работу. Такой подход является основой Agile-управления проектами.
Теперь разработчики знают, что контекст является ключом к тому, чтобы стать экспертом. Поэтому вместо того, чтобы придерживаться правил, они реализуют различные методы, подстраивая их под определенный контекст.
Эксперт — высший ранг в модели Дрейфуса. По словам Энди Ханта, этого можно добиться за более чем 10 лет напряженной упорной практики. Поэтому эксперты — редкий вид. Эти старшие разработчики превратили свой опыт в интуицию.
Эксперты интуитивно понимают передовой опыт, исходя из своего обширного опыта работы с различными ролями, технологиями и ситуациями.
Что касается семи ступеней экспертизы разработки программного обеспечения, то на этом уровне их две: Мастер и Исследователь .
Мастер — искусный техник и хороший инструктор, имеющий глубокую методологическую базу. Что еще более важно, этот разработчик понимает ценность продукта для бизнеса.
Исследователь — старший разработчик, который переходит от конкретного проекта к общеметодологическим исследованиям. Исследователи отслеживают недостатки в методах разработки программного обеспечения, чтобы улучшить их. Они также ищут новые проблемы, чтобы найти технику, полезную для их решения.
Набор технических навыков и обязанностей старшего
Обладая высокими техническими навыками, старший разработчик может работать с несколькими технологиями. Пожилые люди должны стремиться к приобретению передаваемых знаний, которые позволят им распознавать и писать хороший код на любом языке программирования. Эти знания также помогают адаптироваться к постоянным техническим изменениям.
ИДЕ. Опыт пожилых людей позволяет им писать собственные макросы для оптимизации рабочего процесса.
API. Старший написал библиотеки, чтобы добавить больше функциональности или автоматизировать наиболее частые процессы без необходимости писать для них код.
Каркасы. Пожилые люди обладают достаточными знаниями для создания собственной пользовательской среды.
Разработка базы данных. Старший хорошо разбирается в администрировании баз данных, производительности и оптимизации индексов. Обычно они выполняют тонкую работу по составлению расширенных запросов на выборку. Поскольку старшие знают структуру данной базы данных изнутри, они знакомы с особенностями обслуживания БД, в частности, с зеркалированием БД и репликацией БД. Это методы передачи данных из первичной базы данных во вторичную. Пожилые люди понимают двухэтапный алгоритм фиксации (2PC), применяемый для координации распределенной транзакции (фиксация/отмена). Там, где это возможно, они могут заменить медленные операции с курсором гораздо более эффективными операторами JOIN.
Языки программирования. Помимо функционального программирования и ООП, они работают с параллельными и логическими языками, т.е. Эрланг и Пролог соответственно.
Платформы и инструменты. Seniors имеют профессиональный опыт работы с более чем 6 платформами. Они уже создают отладчики или другие инструменты, необходимые для улучшения платформы. Пожилые люди являются источником советов по внутреннему устройству платформы.
Ежедневные обязанности. Многогранные обязанности выходят далеко за рамки написания кода. Пожилые люди проводят мозговой штурм по поиску правильных технологических решений сложных проблем. Они берут на себя ответственность за команду, координируя ее рабочий процесс, чтобы постоянно создавать ценность для бизнеса.
Старший командная работа и перспектива
Самостоятельная работа. Старший дает указания.
Пожилые люди ставят команду на первое место и всегда пытаются понять, что они могут сделать, чтобы помочь членам. Обладают хорошими soft skills, балансируя между клиентом и командой.
Видение. Seniors видят конечную цель — проблемы, которые должно решить готовое приложение. Долгосрочное видение является решающим моментом в создании ценности для конечного пользователя.
Компетенции уровней старшинства разработчиков
Что идет после старшего разработчика?
Старший разработчик — хорошая отправная точка для перехода на другую ступеньку карьерной лестницы. Некоторые пожилые люди хотят перейти на более технические должности, другие предпочитают управленческие роли. Вот несколько вариантов, на которые пожилой человек может подумать о переходе.
Архитектор. Это самый высокий ранг на служебной лестнице технического специалиста. Работа архитектора заключается в разработке сложных систем, которые будут реализованы командами старших и младших разработчиков. В зависимости от направленности бизнес-проблемы существуют корпоративные, технические архитекторы и архитекторы решений. Подробнее об этом вы можете прочитать в нашей специальной статье.
Менеджер по продукту . Менеджер по продукту с опытом кодирования будет чувствовать себя более комфортно, руководя поставкой продукта. Зная процесс разработки изнутри, они смогут гораздо эффективнее управлять работой над продуктом.
Старший руководитель. Работа старшего руководителя не имеет ничего общего с программированием и полностью связана с умением работать с людьми: вдохновлять, мотивировать, руководить и разрабатывать стратегию. Принимая решения на высоком уровне, определяющие направление компании, старший руководитель следит за тем, чтобы все сотрудники следовали этим решениям и верили в миссию.
Внешние условия, влияющие на уровни квалификации
При определении уровня старшинства разработчика важно учитывать следующие переменные факторы, которые существенно влияют на градацию.
Технический стек. Можно быть экспертом в области машинного обучения, но оставаться на среднем уровне в веб-разработке. При этом во многих других областях разработчик может оказаться даже джуниором.
Проект. Проект может масштабироваться как по горизонтали, так и по вертикали, что влечет за собой различные наборы навыков и опыта.
Организация. Следует также учитывать характеристики нанимающей организации. Учитывайте размер компании и индивидуальные требования, которые они предъявляют к кандидату. Небольшие предприятия обычно ищут специалистов с более широким набором навыков и обязанностей. Например, инженер в малом бизнесе может отвечать как за разработку продукта, так и за его развертывание. Напротив, более крупной организации может потребоваться узкоспециализированный опыт, например инженер для определенного этапа жизненного цикла DevOps, который будет работать с определенным инструментом автоматизации.
Более того, каждая организация придает этим терминам свое значение. Таким образом, в зависимости от рабочего места два старших программиста могут сильно отличаться друг от друга. Роберт Риз, старший менеджер по развитию группы цифровых разработчиков газеты The Guardian, комментирует этот момент: « Однако при найме мы должны объяснить, что такое старший разработчик, не только себе, но и людям за пределами организации. Иногда нам также приходится нелегко объяснять людям, которые в настоящее время имеют звание «старший разработчик», почему мы не думаем, что они являются старшими разработчиками здесь, в Guardian».
Советы по выбору разработчика с нужным опытом для вашего проекта
Важный вопрос, связанный с трудоустройством, — какой опыт требуется для той или иной задачи. Наем разработчика часто может стать утомительным, если у вас есть только абстрактное представление об уровне компетенции, который может удовлетворить ваш проект. Ниже приведены несколько полезных советов, которые помогут вам сориентироваться в процессе найма и сделать правильный выбор.
- Иметь четкую цель проекта и базовое понимание уровня знаний, необходимого для ее достижения.
- Рассмотрите время и бюджет в вашем распоряжении. В то время как юниору нужно больше времени для обучения, старшему не требуется много разгона, и он сразу же начнет вносить свой вклад. Однако такой сотрудник будет стоить существенно дороже.
- Сосредоточьтесь на команде и организационном составе талантов. Наличие старшего разработчика в качестве лидера с первого дня необходимо для организации рабочего процесса, поскольку только старший разработчик имеет полную квалификацию для выбора подходящих технологий и платформ для проекта.
- Прекратить прием на работу в соответствии с должностями.
Наличие звания отличается от наличия навыков и способностей, позволяющих преуспеть в работе. Опыт, который человек получает на пути к тому, чтобы стать старшим разработчиком, значит гораздо больше, чем полученное звание. Поэтому, чтобы сохранить значимость существующих ролей, мы должны противостоять инфляции названий должностей.
Пять уровней квалификации разработчика программного обеспечения; Дорога к дзен-мастеру
Первоначально опубликовано → https://thejs.dev/jmitchell/the-file-expertise-levels-of-a-software-developer-the-road-to-zen-master-9e7
Разработка программного обеспечения — это карьера, которую выбирают многие из нас. Нам всем приходилось с чего-то начинать, и для подавляющего большинства из нас это было с самого низа. Некоторым повезло, они начали свой собственный бизнес и карьеру, полностью избежав необходимости усердно работать с первого дня.
Редко бывает, что даже немногим счастливчикам разработчик программного обеспечения пропускает пять основных этапов личного и карьерного роста, изо дня в день стремясь к максимально возможному уровню.
Для тех из вас, кто не знает, где вы находитесь, или даже в начале пути, и хотите понять свой карьерный путь, вот пять уровней опыта и стажа в разработке программного обеспечения.
Карьерная лестница разработчиков программного обеспечения обычно состоит из трех ступеней; младший, средний и старший. Промышленность применяет эту шкалу по ряду причин — для лучшего понимания и присвоения степени квалификации, вознаграждения, ожидаемого опыта, а также обязанностей.
По мере того, как вы переходите от младшего к старшему, ожидания работодателей в отношении ваших навыков, опыта, способности решать проблемы, исследований и обязанностей, включая лидерство и наставничество, будут расти, и, таким образом, ваше вознаграждение будет отражать ваш статус.
Хотя эти уровни обычно используются рекрутерами и компаниями для определения вашей пригодности для данной роли, они ограничивают то, как они могут описать ваш соответствующий опыт.
Это подводит нас к двум недостающим уровням — стажеру и лидеру. Оба уровня вписываются в существующую парадигму старшинства, от стажера до младшего и от лидера до старшего.
Источник: altexsoft.com
Разработчик-стажер
Стажер — это человек, который часто узнает о своей роли и приобретает практический опыт на рабочем месте. Стажер — это тот, кто впервые открывает для себя, что значит практиковать разработку программного обеспечения в отраслевой среде, в рамках своего обучения или как путь в компанию по своему выбору.
Многие крупные работодатели предлагают стажировки, возможности обучения без отрыва от производства (IBL) и программы для выпускников, особенно IBM как международный работодатель.
Ожидания от стажера различаются в зависимости от работодателя, но, как правило, они ищут кого-то с некоторыми знаниями в области разработки программного обеспечения или со страстью и желанием учиться.
На этом этапе становления вы решаете, подходит ли вам разработка программного обеспечения и есть ли у вас страсть и навыки, чтобы сделать ее своей карьерой.
Первоначально стажеры практически не будут иметь доступа к реальной разработке, но будут делать шаги к профессиональному программированию, в конечном итоге приобретая минимальный уровень навыков и знаний для работы над реальным проектом.
Младший разработчик
Младшие разработчики и стажеры часто взаимозаменяемы и во многих случаях сливаются в одну и ту же роль. Устроиться на работу джуниором может быть сложно, потому что они часто приходят и уходят, а работодатели, как правило, нанимают джуниоров в качестве подрядчиков, чтобы сократить долгосрочные расходы.
Тем не менее, хороший джуниор на вес золота, потому что часто именно на этом этапе, когда вы впервые по-настоящему ощутили вкус работы над проектом, вы приносите энергию, страсть, мотивацию и энергию. Это настоящие сильные стороны юниора.
Тем не менее, юниоры часто нетерпеливы и хотят немедленных результатов за свои усилия, часто не учитывая контекста, или сокращая путь для достижения результатов. Это часто приводит к выгоранию юниоров, когда джуниоры возлагают на себя гораздо более высокие ожидания, а работодатель отвечает им взаимностью.
Очень важно, чтобы джуниор находился под пристальным наблюдением, потому что ему нужно, чтобы его страсть и энергия направлялись в правильное русло, и он должен быть знаком с как можно большим количеством технологий, практик и идей, чтобы помочь построить свою карьеру.
На этом уровне от вас не ожидается, что вы будете экспертом в какой-либо области или будете знать множество различных технологий, идей или подходов. Как правило, вы получили дополнительное образование, например, колледж или университет, и у вас может быть некоторый практический опыт работы в реальной среде в результате трудоустройства, опыта работы или стажировки.
Жизненно важно помнить, что на этом уровне вы будете учиться гораздо большему, чем практиковаться.
Разработчик среднего уровня
Обычно младшие разработчики с 2-3 годами работы могут использовать свои навыки и опыт и стать специалистами среднего звена, которых часто называют «рабочими лошадками мира программирования».
Стадия среднего уровня достигается, когда у вас есть опыт, знания и навыки для самостоятельного выполнения проектов, но все же их следует выполнять под ограниченным контролем. Это также этап, когда вы можете начать брать на себя обязанности лидера, обычно посредством наставничества младших разработчиков.
Компетентные разработчики очень находчивы и проявляют чрезмерную инициативу, но часто нуждаются в руководстве, чтобы правильно сфокусировать и направить свою энергию, поскольку им часто не хватает опыта, чтобы сделать это самостоятельно, и им трудно размышлять о собственных ошибках.
На данный момент ожидается, что вы очень хорошо знаете один язык программирования, хотя и не совсем бегло, но, безусловно, можете начать свой собственный проект. Тем не менее, компетентные разработчики часто хотят доказать свою ценность, и часто именно здесь командная работа и сосредоточенность могут отставать.
Важно, чтобы внимание разработчика среднего уровня было направлено. Если вы сможете использовать страсть, энтузиазм и мотивацию разработчика среднего звена, он быстро станет одним из самых важных ресурсов в вашей команде.
Источник: altexsoft.com
Многие разработчики среднего звена попадают под действие эффекта Даннинга-Крюгера, который тормозит дальнейший карьерный рост. Это явление описывает, насколько опасным может быть небольшое знание. Будучи уверенными в себе, разработчики на этом уровне часто могут переоценивать свои навыки, что тормозит их развитие, тормозит их развитие.
Это когнитивное искажение характерно не только для разработчиков среднего звена, его испытывают все уровни старшинства, просто разработчики среднего звена более восприимчивы к нему.
Только когда вы поймете, что еще так много нужно узнать, вы сможете перейти на следующий уровень. Доказать, что вы вне этой предвзятости, так же просто, как расширить свои знания, доказав, что вы можете не только приобретать новые знания, но и применять их на практике.
Ведущий разработчик
Старших разработчиков часто называют решателями проблем из-за их глубоких специализированных знаний и исчерпывающего опыта. Они часто хорошо осведомлены в области бизнеса, которую они поддерживают, что позволяет им эффективно переключаться между проектами и продуктами.
Старший всегда будет рассматривать то, что он делает в контексте своей области, и какие преимущества или выгоды это может принести бизнесу. Настоящая польза от старших заключается в их способности заранее предвидеть проблемы, проектировать вокруг них или решать их до того, как они произойдут.
Часто это результат сочетания опыта, интуиции, глубокого понимания предметной области и использования знаний и опыта своей команды и других экспертов в предметной области.
Руководя проектом, руководитель часто принимает решения, основываясь на лучших стандартах и практиках в своей области, а также на том, что является приемлемым и может привести к наилучшему результату для его команды, а также на относительном уровне навыков их команды.
Существует несколько уровней старшинства для старших разработчиков. Те, кто переходит от среднего уровня к старшему, являются младшими старшими, те, у кого есть значительный опыт и знания, известны как эксперты, а затем есть лидер.
Junior Senior — опытный и высококвалифицированный разработчик, совершивший большой прорыв; они могут размышлять о своей работе, анализировать ошибки и учиться на них. Их способность размышлять, учиться и приспосабливаться — это подход, лежащий в основе гибкого управления проектами и жизненно важный для развития карьеры.
Именно в этот момент следует искать возможности для лидерства, оттачивать свои социальные навыки и развивать навыки для следующего этапа своей карьеры, которым они, возможно, еще не научились.
Эксперт — это уровень старшинства, который достигается примерно через 10 лет упорной, целенаправленной практики. Они часто опираются на свой обширный опыт и знания в ряде (часто во всех) областях, технологиях и опыте.