Что значит senior в должности

Опубликовано: 03.07.2024

В сфере разработки программного обеспечения сложилась определённая градация специалистов по категориям. Чем отличаются эти категории друг от друга (помимо зарплаты)?

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

Также категории программистов довольно слабо, если вообще связаны со стеком технологий, потому что они отражают совершенно другие профессиональные и личные качества. Кроме того, стек технологий имеет свойство со временем меняться по различным причинам, но наработанный опыт и т.д. остаётся с человеком практически всю его жизнь.

Так какие же бывают категории программистов и чем они отличаются.

Trainee

Читается как «трейни». Именно эта (а вовсе не junior) самая первая категория, с которой начинает свой путь любой программист.

Лучше всего её можно охарактеризовать цитатой из знаменитого фильма: «Я не волшебник. Я только учусь».

По своей сути trainee это ученик или стажёр. Он только осваивает основы профессии и потому самостоятельно может решать только учебные задачи. Рабочие задачи ему пока не по силам.

Junior

«Джуниор» или «джун». Молодой специалист.

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

Опыт у него обычно также минимальный или отсутствует вовсе.

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

Middle

Как следует из названия («middle» в переводе с английского означает «средний») к этой категории относятся программисты средней руки.

«Мидл» это первая категория, в которой допускается самостоятельная работа.

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

Senior

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

«Сеньорам» могут быть поручены задачи самой различной степени сложности не только по разработке или сопровождению, но и по проектированию, но обычно им достаётся сложность выше средней (иногда даже нетривиальные задачи). «Сеньору» можно поставить задачу в общих чертах (он сам сможет найти недостающие части головоломки и при необходимости задать нужным людям правильные вопросы).

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

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

Lead

«Lead», «лид» или «ведущий». Следующая за «сеньором» категория программистов.

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

На этой ступени развития программист оказывается перед выбором одного из двух путей.

Первый путь – это рост в направлении менеджмента. После позиции тимлида уйти в руководители проектов и т.д.

Второй путь – продолжать развиваться как технический специалист и стать так называемым «техлидом». Высококвалифицированными специалистом, который способен принимать ключевые решения по архитектуре и программной реализации всего проекта. Продолжая своё развитие дальше «техлид» может полностью уйти в область проектирования и стать системным архитектором (system architect).

Системный архитектор

Или иногда просто «архитектор». Специалист с очень большим опытом и очень высокой квалификацией, который отвечает за проектирование программного обеспечения.

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

Как правило системные архитекторы работают над крупными проектами в больших корпорациях. Там, где специалистам подобного уровня есть где развернуться. И, собственно, наряду с требованиями к знаниям и опыту это одна из причин почему специалистов данной категории довольно мало.

Переход между категориями

Переход между категориями возможен как «снизу вверх», так и «сверху вниз». Вначале рассмотрим первый вариант.

Самый простой переход между trainee и «джуном». Выпускники ВУЗов и даже просто курсов программирования вполне могут получить статус «джуна» автоматически.

Переход из «джунов» в «мидлы» несколько сложнее, но и здесь тоже ничего особенного не требуется. Обычно необходимые для этого знания и опыт можно накопить за 1-3 года работы. Более того специалисты с опытом более 3 лет вполне могут рассчитывать стать «мидлами» уже на «старте» своей работы в компании.

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

Что касается перехода между категориями «сверху вниз».

Такое в основном происходит при смене стека технологий, когда приходится осваивать принципиально новый инструментарий, особенности работы с которым ещё не известны, или длительного перерыва, когда многое просто забыто.

Категория и должность

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

К сожалению, это далеко не всегда так.

Дело в том, что должность это по сути лишь условное название для той или иной тарифной ставки в штатном расписании компании. Должность можно назвать как угодно и закрепить за ней какие угодно полномочия. Также при желании можно кого угодно на неё назначить.

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

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

Заходят как-то в бар «джун», «мидл» и «сеньор»: чем отличаются уровни программистов Длиннопост

Зачем нужна классификация

Деление айтишников, да и не только, на джунов, мидлов и сеньоров — международная традиция. Поскольку в той или иной степени знать английский язык все равно нужно, у нас в IT-среде не стремятся заменять уже привычные для индустрии маркеры на какие-то свои.

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

Заходят как-то в бар «джун», «мидл» и «сеньор»: чем отличаются уровни программистов Длиннопост

Junior с английского переводится как младший. Этим прилагательным также обозначают студентов младших курсов и начинающих специалистов.

• Год-полтора в профессии или делал только учебные проекты.

• Использует один-два метода для решения задач, остальные не пробовал или не разбирается в них.

• Не ориентируется или слабо понимает, как решать нестандартные задачи.

За джунами требуется контроль и проверка кода. Они не знакомы с деталями и нюансами, с которыми сталкивались опытные коллеги. Но этот этап проходят все специалисты в начале работы в IT-сфере.

На что обращают внимание рекрутеры при подборе

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

2. Знание английского. Требуемый уровень зависит от специфики вакансии. Например, в МегаФоне язык потребуется не только чтобы писать код, но и для коммуникации.

3. Софт-скиллы. Навык аналитической работы желателен почти на всех IT-специальностях. Но ключевым для джуниора станет способность к обучению.

Заходят как-то в бар «джун», «мидл» и «сеньор»: чем отличаются уровни программистов Длиннопост

С английского — середина. Специалист уровня мидл — следующая ступень эволюции джуна.

• Ориентируется в методах решения задач и подбирает оптимальные.

• Умеет писать код аккуратно.

• Осознает свою роль в общей системе проекта, и как его задачи влияют на работоспособность продукта.

• С уверенностью берется за нестандартные задачи.

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

На что обращают внимание рекрутеры при подборе

1. Портфолио и реальные проекты.

2. Знания (измеряются количеством языков, протоколов и систем, которые освоены на практике);

3. Менеджерские качества — например, в МегаФоне смотрят на понимание культуры Agile.

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

Заходят как-то в бар «джун», «мидл» и «сеньор»: чем отличаются уровни программистов Длиннопост

С английского — старший. Это либо гуру в своем направлении, либо тимлид и руководитель отдела.

• Глубоко знает направление, в котором работает, и в достаточной мере прокачан в смежных сферах.

• Набил массу шишек и все их превратил в полезный опыт.

• Умеет выдержать баланс: знает, где на компромисс идти нельзя, а где можно опустить простоту и красоту и сделать костыль.

• Умеет делегировать и распределять задачи в команде, базируясь на сильных сторонах коллег.

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

На что обращают внимание рекрутеры при подборе

1. Софт-скиллы и образ мышления.

2. Уровень экспертизы.

Пути эволюции мидла

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

1. Разработчик-эксперт. Если специалист не хочет бросать код, он волен остановиться и не идти дальше по карьерной лестнице. В этом случае он станет сеньором, который пишет код, развивает свои навыки и углубляет знания. Рост в этом пути развития — это увеличение стоимости компетенций.

2. Техлид (в дальнейшем архитектор). Этот путь выбирают те, кто хочет сконцентрироваться на технической части: придумывать комплексные решения и системы, смотреть на всю картину целиком и решать интересные задачи. Архитектор уже не занимается кодом, а проектирует и продумывает решения.

3. Тимлид (в дальнейшем руководитель разработки). Та самая управленческая должность. Это кардинальная смена деятельности. Вместо кода тимлид занимается мотивацией своей команды, оценкой эффективности и следит за тем, чтобы все процессы работали. Часто бывает, что техлид и тимлид — это один и тот же человек. Он видит общую картину, принимает решения и при этом руководит командой.

Заходят как-то в бар «джун», «мидл» и «сеньор»: чем отличаются уровни программистов Длиннопост

Классифицикация по трем уровням скиллов разработчиков — чисто прикладной инструмент. Он упрощает процесс отбора и помогает обозначить компетенции и требуемый опыт. Но каждый случай индивидуален. В МегаФоне нацелены на быстрое развитие сотрудников и помогают развивать их навыки.

Сергей Кузин (менеджер по подбору персонала, МегаФон):
Рост от джуна до мидла и до синьора сейчас может быть очень стремительным. Многое зависит от инициативы самого разработчика. В МегаФоне для таких переходов есть практически неограниченные возможности по изучению современных технологий и языков и плотная работа с наставниками.

IT в МегаФоне очень разнородно, мы много чем интересным занимаемся. В большей степени команды фокусируются вокруг наших продуктов: есть ребята, которые занимаются мобильным приложением, сайтом. Есть те, кто разрабатывает и поддерживает продукты для корпоративных клиентов (от умных производств, видеоаналитики до крупных проектов безопасных городов и так далее). Есть и те, кто сфокусирован на счастье внутренних сотрудников и делают жизнь каждого из нас — в офисе или на удаленке, — проще и удобнее. Продуктовый подход в разработке позволяет нам быть быстрее и делать действительно важные вещи.

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

МегаФон ищет в свою IT-команду QA-тестировщика, Java, iOS и React разработчиков. И прямо сейчас у вас есть возможность получить приглашение на собеседование без лишних тестовых работ. Если вы в поиске вакансии, выбирайте свою специализацию и пройдите наш Пиратский квест.

Привет всем! Меня зовут Александр Демура, в IT я работаю с 2004 года, сейчас руковожу центром разработки DataArt в Одессе. В мои непосредственные обязанности входят найм и развитие наших специалистов, поэтому рассуждения на тему «синьорности» сотрудников и качеств, необходимых для той или иной роли, для меня актуальны и привычны.

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

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

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

Например, человек может блестяще проявить себя в одном проекте и вдруг сдуться в другом — чего ожидать от него в третьем? Кто-то может гениально отвечать на сложнейшие технические вопросы, но при этом порождать неподдерживаемый код. Кто-то наоборот — теряется на джуновых вопросах, имея за плечами десяток успешно сданных проектов. Вникать в подобные нюансы, помогать людям использовать свои сильные стороны и компенсировать слабости — одна из задач менеджмента. Общего решения она вроде бы до сих пор не имеет, что делает работу менеджера интересной, хотя подчас непростой.

Интерн

В DataArt есть практикантская программа, куда мы берем людей даже без опыта работы. У них есть три месяца, чтобы под руководством опытного ментора дорасти до уровня «джуниор». Для позиции интерна есть два основных требования:

  • Хороший английский.
  • Понимание выбранного инструмента и умение им пользоваться.

Требование к знанию английского у нас, на самом деле, общее для всех. DataArt — международная организация, большинство заказчиков находятся в США и Западной Европе, и даже внутренние коммуникации уже все больше на английском. Если человек — грамотный технический специалист, мы поможем ему разговориться и подтянуть язык — для этого есть корпоративные курсы и куча дополнительных инициатив. Но если человек без технического опыта (а интерн — как раз такой) еще и слабо знает английский, ему нужно обладать уникальными качествами, которые перекроют оба этих недостатка.

Про инструмент мысль тоже, мне кажется, простая. Если вы приходите на роль программиста, инструмент для вас — язык программирования со средствами разработки, которыми нужно уметь пользоваться. Если потенциальный интерн хочет разрабатывать на .NET, но не может объяснить, что делает CLR, чем «Equals» отличается от «==» или реализовать простейший алгоритм — шансов у него нет никаких. Приходить с нулевыми знаниями и надеяться, что всему научат на месте, параллельно выплачивая зарплату, бесполезно — слишком большой конкурс. За плечами многих кандидатов профессиональные курсы, они с легкостью отвечают на все теоретические вопросы и даже имеют опыт программирования «для себя». Конечно, таких людей берут в первую очередь.

Junior

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

Для джуна важны следующие качества:

  • Желание развиваться и учиться (а на своих ошибках — особенно).
  • Энергия и целеустремленность.
  • Способность спокойно относиться к критике.

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

Middle

Основное требование к мидл-разработчику — способность самостоятельно выполнять поставленные перед ним задачи . Очень похоже на то, что было написано в предыдущем пункте, правда? Однако есть важный нюанс — здесь отсутствует слово «технические». То есть на новом уровне нужно понимать требования бизнеса и уметь переводить их в технические решения.

  • Мидл-разработчик понимает, что именно делает приложение. Это позволяет глубже понять задачу, а, значит, точнее ее оценить и качественнее реализовать. Если требования не полностью покрывают какой-то сценарий, хороший разработчик обратит на это внимание на этапе планирования. А не когда приложение начнет валиться при любом нестандартном действии пользователя.
  • Мидл-разработчик знаком со стандартными шаблонами и решениями при построении приложения в своей области, понимает, зачем они нужны, и умеет их применять. Стандартизация решений имеет большое значение при коллективной разработке кода, т. к. позволяет новому человеку быстрее разобраться, что к чему, и минимизирует количество ошибок. Понимание структуры типового приложения делает задачу его построения с нуля достаточно тривиальной, позволяет рассуждать о принципах правильной реализации и отличать хороший код от плохого.
  • Мидл-разработчик понимает, что работает не один. Он умеет взаимодействовать с другими членами команды: может обсудить сложный момент с дизайнером, уточнить у бизнес-аналитика неполные требования или согласовать какое-то важное техническое решение с архитектором проекта (если такой есть) и, конечно, владеет соответствующими инструментами коллективной разработки.

Senior

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

Такой специалист делает удивительную вещь — решает проблемы еще до того, как они появились . Со стороны это напоминает дар предвидения. А вот если ваш проект живет от пожара до пожара, а вам постоянно приходится выкидывать и переписывать куски кода — это симптомы, что проект получает недостаточно синьорного внимания.

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

  • Способность решать несколько более сложные задачи, делать это быстрее или лучше, чем средний разработчик, не имеет практически ничего общего с синьорностью. В нашей классификации человек, который это умеет, называется «Strong Middle».
  • Звание синьора невозможно получить быстро. Нужно наработать обширный опыт и понять, что отличает хорошо сделанный продукт от тяп-ляп-разработки, как проявляет себя технический долг, сколько стоит рефакторинг, зачем на самом деле нужны паттерны и так ли необходимы бесконечные уровни абстракции. Необходимо самостоятельно принять важные решения и дать им пройти испытание временем, иначе оценить их не получится.
  • Синьору необходимы хорошие коммуникативные навыки, потому что он должен не только предложить правильное решение, но и убедить в своей правоте заказчика и команду. Если вы не смогли отстоять хорошее решение и вместо него было принято плохое, винить в этом придется самого себя. Вариант «я же говорил» на уровне Senior уже не работает. С командой то же самое — мало знать, как надо, нужно еще и уметь это доходчиво объяснить. Тогда команда быстро растет и набирается опыта, избегая болезненных ошибок. Авторитарный подход («делайте, как я сказал») зачастую приводит к внутренним конфликтам, и ситуацию на проекте отнюдь не улучшает — нужно стараться этого избегать.
  • Синьор не может обойтись без понимания устройства библиотек и фреймворков. Если инструмент разработки для вас — черный ящик, и вы составляете приложение из готовых частей, не зная, что у каждой из них под капотом, продукт всегда будет неустойчивым и непредсказуемым.

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

Что дальше?

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

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

Куда же развиваться синьорам? Многие программисты любят рассуждать о «потолке» — когда внутренний рейт (т.е. деньги, которые вы получаете за заработу) приближается к внешнему (счету, выставленному клиенту) с минимальной маржинальностью. Они считают, что в этом случае дальнейший рост специалиста становится нецелесообразным для работодателя. Однако это не так, есть множество способов и дальше увеличивать свою ценность. Поэтому позицию Senior Developer стоит рассматривать не как карьерное плато, а как плацдарм для дальнейшего развития, например, в одном из следующих направлений:

Технический эксперт

Статус технического эксперта подразумевает глубокое знание отдельной и специфической области. Например, можно быть экспертом в Azure/AWS и знать разнообразные сервисы, которые предоставляют эти платформы. Уметь делать Machine Learning или Computer Vision, знать все про уязвимости в вебе, понимать, как работают криптовалюты или правильно готовить Sharepoint. Такие задачи встречаются не каждый день, но когда появляются, наступает звездный час технических экспертов. Без них подобные проекты были бы просто невозможны, и компания зачастую готова доплачивать за эти уникальные знания.

Индустриальный эксперт

DataArt старается развиваться в определенных доменных областях (путешествия, финансы, здравоохранение и т. п.). В каждом проекте программисты не только приобретают собственно технические знания, но и получают возможность заглянуть в бизнес заказчика, понять, как устроена индустрия, узнать характерные для нее проблемы и решения. Чего стоит построить свою платежную систему вроде PayPal? Зачем нужна система Sabre? Или что такое HIPAA и какие ограничения она накладывает на разработку решений в области здравоохранения в США? Люди, которые обладают подобными знаниями, зачастую формируют костяк проекта и приносят компании и клиенту огромную дополнительную пользу. Поэтому их компенсация (т. е. деньги, которые они получают за работу) может превышать внешний рейт — компании сами готовы доплачивать таким людям сверх счета, выставленного заказчику проекта.

Фронтмен

Умение правильно и хорошо подать себя и компанию, рассказать о сложных технических вещах простыми словами, быстро собрать прототип и показать первые результаты, говорить на одном языке как с топ-менеджерами заказчика, так и с программистами — отличительные качества фронтмена. Таких людей часто зовут на первые звонки и отправляют в первые командировки к клиенту, их задача — быстро разобраться в проблеме, объяснить, каким именно образом мы можем помочь, и наладить взаимодействие с офшорной командой. Комбинация технической крутизны с презентационными навыками позволяет компании получать новые проекты, соответственно, люди, которые ими обладают, ценятся высоко.

Тимлид

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

Архитектор

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

Я перечислил пять возможных ролей только в технической ветке развития, не затрагивая тестировщиков, аналитиков, менеджеров, дизайнеров, маркетологов или продавцов.

Дополнительно: работа без посредников

Я хочу отдельно написать о работе без посредников, которую некоторые воспринимают как Святой Грааль для программиста. Казалось бы, все логично: находим заказчика, предоставляем ему свои услуги напрямую, весь рейт забираем себе — профит! Однако нужно понимать, что, кроме прибылей, на программиста в этом случае падают все сопутствующие риски. Нужно внимательно читать пункт контракта об ответственности сторон, знать законодательную и налоговую базу, придумывать механизм получения денег, действовать, если клиент не заплатил или неожиданно свернул работу.

В IТ-компаниях эти вопросы решают специально обученные люди (продавцы, юристы, бухгалтеры), и даже если заказчик разорился и вышел из бизнеса с сумасшедшими долгами, разработчики, во всяком случае в DataArt, все равно получат деньги в срок и спокойно перейдут в следующий проект. При работе напрямую — каждый оказывается сам за себя. Кроме того, большинство компаний тратят весьма осязаемые бюджеты на привлечение новых клиентов, поэтому прямые отношения с заказчиками, которых нашла компания, запрещены контрактом с той и другой стороны.

По этому поводу можно отдельную статью писать, но не привести мою любимую цитату с «Баша» я просто не могу:

Так называемые «Junior», «Middle» и «Senior» — это профессиональные жаргоны, разделение уровня разработчиков в IT индустрии. В привычном понимании — это младший разработчик, разработчик среднего уровня или просто разработчик и старший разработчик.

Различаются между собой уровнем компетенций, soft / hard скиллов и навыков в своей специализации.

Давайте рассмотрим каждого из них на примере Frontend-разработчика: какие навыки и знание необходимы каждому из них.

Данные собраны с таких ресурсов как hh.ru и habr.карьера.

JUNIOR

В переводе с английского junior означает «младший/молодой/начинающий». Это начинающие разработчики.

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


Soft skills:

  • Стремится к развитию собственных скиллов и наработке новых;
  • Энергичен и способен добиваться решения поставленных задач;
  • Способен с холодной головой воспринимать критику и перенимать опыт.

Hard skills:

  • HTML5;
  • CSS3;
  • Уверенное знание JavaScript или JQuery;
  • Умение работать с препроцессорами (SASS, LESS, GALP);
  • Кросс-браузерная верстка;
  • Опыт работы с системами контроля версий(в основном Git);
  • Опыт работы с сетками Bootstrap и Grid;
  • Знание методологии БЭМ.

Оплата:
Это самые популярные требования к Джунам на рынке труда на сегодняшний день. В среднем заработная плата колеблется 28 000-35 000 рублей.

Не стоит думать, что джуны это молодые ребята 20-25 лет. Это заблуждение. Начинающим разработчиком реально стать в любом возрасте.

MIDDLE

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


Soft skills:

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

Hard skills:

  • Ранее описанные скиллы джуна;
  • Навыки проектирования архитектуры приложений и сервисов;
  • Уверенное знание Vue.js и / или React.js и / или Node.js;
  • Опыт работы с Angular;
  • Опыт использования SQL, MySQL;
  • Знание CoffeeScript и / или TypeScript;
  • Знание Redux;
  • Писать только чистый и аккуратный код;
  • Понимание принципов UI/UX.

Оплата:
Зарплата может сильно колебаться от региона и задач. Но в среднем это 60 000-130 000 рублей.

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

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

SENIOR

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


Soft skills:

  • Глубокие знания и компетенции
  • Уметь решить любую задачу, даже ту, которая никому не под силу.
  • Уметь пользоваться огромным инструментарием. Знать на порядок выше остальных коллег «по цеху».

Hard skills:

  • Все ранее указанные технологии и скиллы подкрепленные глубокими знаниями и широкой практикой.

Оплата:
Разработчики уровня senior могут получать от 150 000 рублей и выше, в зависимости от количества и сложности проектов.

Труднодоступная ступень эволюции разработчика. Middle может остаться на средней ступени на протяжении оставшейся карьеры и не дойти до уровня senior.

Теперь мы знаем кто такие Junior, Middle и Senior разработчики и, чем они отличаются.

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


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

Но разработчиков различных уровней отличает нечто большее, чем умение собственно программировать. Так в чем именно кроются различия?

Знания

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

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



Фото — Clem Onojeghuo, площадка Unsplash

Программирование

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

Код должен нести в себе смысл для тех, кто будет работать с ним в будущем. Команда, подхватившая за кем-то другим проект, должна иметь возможность открыть его исходный код и начать работать над новыми функциями или исправлением ошибок. И здесь кроется существенная разница между «джуном» и «сеньором».

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

Как вычислить «джуна»

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

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

Младшие разработчики сосредотачиваются на «компьютерной» части кода, упуская из виду «человеческую».

Как пишут код «сеньоры»

Глядя на код старшего разработчика, можно подумать: и это всё? А где остальное? Достаточно опытный разработчик пишет простой, понятный и, возможно, местами даже чересчур прямолинейный код — и это одно из самых важных качеств, если говорить о программировании. «Сеньор» следует принципу KISS, гласящему, что код должен быть простым и понятным: «Keep it simple, stupid»

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

Не программированием единым

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

Младшие разработчики, как правило, выполняют самые простые и не самые важные задачи; они не занимаются разработкой архитектуры. Разработчики среднего уровня тоже не разрабатывают решения, а просто выполняют задачи, однако их меньше контролируют — если задание довольно типовое. А вот «сеньоры» могут разработать приложение совершенно самостоятельно.

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

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

Старший разработчик никогда не теряется и знает, как правильно действовать, получив ответ на вопрос. Это не значит, что он не будет просить совета у других — иногда лучшим решением бывает именно обратиться за помощью к тем, кто имеет больше опыта в данной области.

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

А вот в случае «джунов» не следует ожидать, что они смогут задавать нужные вопросы: у них недостаточно практики, поэтому ими должны руководить более опытные коллеги. Младшего разработчика следует обеспечить необходимыми ресурсами или хорошенько подтолкнуть в правильном направлении.

Переход на следующий уровень

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

От «джуна» — к «мидлу»

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

Что касается программирования — следует научиться писать простой код: представьте, что после вас над проектом будет работать другой человек. Кроме того, придется научиться заниматься отладкой — это углубит понимание того, что происходит во время работы программы.

Также необходимо ознакомиться с лучшими методиками и побольше узнать об архитектуре, производительности, безопасности и т. д. Закройте пробел в знаниях, отделяющий вас от среднего уровня.

От «мидла» — к «сеньору»

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

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

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

Кроме того, как старший разработчик вы должны помогать менее опытным: вы для остальных — спасательный круг, за который можно ухватиться, когда не знаешь, как что-то сделать.

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

Заключение

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

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

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

Напоследок процитирую Мартина Фаулера:

О переводчике

Перевод статьи выполнен в Alconost.

Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.

Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

Читайте также: