Содержание
Ранги программистов: юниор, миддл, сеньор, что они означают?
Основные ранги программистов — это юниор, миддл и сеньор. Иногда перед юниором идет стажер или интерн, но это временные ранги, которые можно и не учитывать, так как обычно они занимают всего несколько месяцев.
Обычно ранжирование программистов можно встретить при поиске открытых вакансий. Таким образом, компания, которой нужен сотрудник, обозначает, специалиста какого уровня она хочет видеть в своей команде. Ведь каждому уровню будут соответствовать свои требования: у юниора— одно, у сеньора — совсем другое.
Как и во многих других профессиях, различие между программистами напрямую зависит от опыта и знаний. К примеру, только пройдя какой-либо курс по программированию, устроиться сразу сеньором будет очень сложно, даже если на курсе вы изучили сразу три языка программирования и кучу фреймворков с библиотеками. Если опыта «ноль», то и статус будет соответствующий.
Ранги программистов
Когда мы видим следующие ранги у программистов, то подразумеваем:
юниор (junior) — это новичок;
миддл (middle) — это программист с каким-то опытом, который уже может больше, чем юниор;
сеньор (senior) — это эксперт в программировании с большим опытом.
Юниор — это кто?
Обычно в эту категорию входят программисты с опытом от 0 и примерно до 2-х лет. На такую позицию в разработке могут претендовать студенты IT-специальностей различных учебных заведений или специалисты, окончившие специализированные курсы обучения.
В зоне ответственности этой категории специалистов лежат несложные и некритичные задачи. Обычно их работу перепроверяют программисты других уровней, которые по совместительству являются их наставниками.
Юниор-разработчик — это:
много постоянных вопросов, так как он только начинает серьезно практиковаться;
понимание сути программирования и инструментов, которые при этом используются;
отличные навыки чтения кода и хорошая теоретическая база;
знания основ в сфере, где он планирует состояться программистом.
От компании к компании требования к юниор-разработчику будут меняться. В некоторых для трудоустройства хватит небольших теоретических знаний и большого упорства стать программистом. А в других список требований к юниору будет намного значительнее.
Миддл — кто это?
Это уровень разработчика, у которого за плечами есть уже несколько успешных проектов. Он практически не задает вопросов, потому что сам знает, где на них можно получить ответы. Он легко берет на себя ответственность в проектах, и его «кодинг» уже не нужно проверять. Он может «присматривать» за юниором и контролировать его работу.
На этом уровне разработчик уже может вносить свои предложения в проекты. Он может активно участвовать в выборе инструментов и архитектуры для программного обеспечения. Это «костяк» команды разработчиков. Обычно до такого уровня нужно проработать 1,5-3 года юниором.
Класс мидл-разработчиков знает и умеет:
быстро кодить, применяя «горячие клавиши» своей IDE;
писать понятный и беспроблемный код;
правильно пользоваться инструментами программирования;
на отлично язык или языки программирования, на которых работает;
налаживать взаимодействие всех систем, с которыми имеет дело: серверы, базы данных, облачные технологии, API и т. д.;
сотрудничать и разговаривать с заказчиками и членами команды;
высказывать свое мнение по поводу разработки;
решать нестандартные задачи;
и др.
У миддл, как и у юниоров, требования к этому классу разработчиков могут меняться от компании к компании.
Сеньор — кто это?
Это разработчик с опытом более 4-7 лет. Он экспертно знает свою область программирования, плюс отлично понимает другие области. Именно он принимает окончательное решение по поводу архитектуры или инструментов разработки. Сеньор очень часто отвечает за работоспособность всей команды и несет ответственность за разработку всего продукта.
Зачастую именно сеньор становится связующим звеном между заказчиком и остальными членами команды. Это авторитетный специалист, к чьему мнению прислушивается даже руководство компании.
Если юниор — это самое начало, то сеньор замыкает ранги программистов. Обычно сеньоры должны:
быть технически подкованными и соответствовать продукту, над которым трудится команда;
иметь качества лидера и профессиональную авторитетность;
понимать до мелочей, с чем приходится сталкиваться его команде;
помогать и поддерживать своим опытом программистов, которые ниже его рангом;
понимать все фазы развития программного продукта от идеи и до релиза;
решать задачи любой трудности.
Заключение
На любом уровне: сеньор или юниор — неважно, программиста ждет постоянное самообучение и повышение квалификации. Только дополнительные знания помогают удержаться на уровне и плыть дальше. Типичный вопрос: «А после сеньора есть что-то?». В плане ранжирования больше ничего нет, просто у сеньоров дальше идет другая карьерная лестница, связанная с занимаемой должностью, например: руководитель проекта, отдела, отделения, филиала, представительства и т. д. Также сеньор может сделать переориентацию профессии, например, стать DevOps.
В общем, рост в профессии программиста может быть постоянным, потому что расти можно как в высоту, так и в ширину, например, овладевать новыми направлениями в программировании.
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 лет упорной, целенаправленной практики. Они часто опираются на свой обширный опыт и знания в ряде (часто во всех) областях, технологиях и опыте.