Чем отличается разработчик-сеньор от разработчика-джуниора?

0
2477
views

Перевод статьи «What is the Difference Between a Junior and a Senior Developer?».

Разработчик-сеньор в среднем зарабатывает на 40 тысяч долларов в год больше, чем разработчик-джуниор, а часто даже в два раза больше. Чем обусловлена такая разница и может ли джуниор как-то быстрее преодолеть разрыв в ставках?

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

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

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

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

Определения

Джуниор: 0-3 года опыта. Имеет некоторое знание языка и технологического стека. Обычно жаждет учиться. На момент написания этой статьи (2020 год), разработчики-джуниоры в компаниях, расположенных в США, зарабатывают 59-100 тысяч долларов в год.

Мидл: 1-3 года опыта. Имеет хорошие рабочие знания языка и технологического стека. Предупреждение: разработчики вполне могут застрять на уровне мидла (в том, что касается навыков, должностей и зарплаты) на 10 и более лет. Обычно разработчики-мидлы зарабатывают 110-150 тысяч долларов в год.

Сеньор: больше 3 лет опыта (менеджеры по найму обычно ищут сеньоров с опытом больше 5 лет, но при этом часто делают исключения для отдельных кандидатов). Мастерски владеет языком и технологическим стеком. Знает распространенные паттерны и антипаттерны. Хорошо разбирается в стандартных прикладных протоколах, вопросах производительности программ, распространенных угрозах безопасности (например, вот десятка основных угроз от OWASP). Отличный наставник. Обычно разработчики-сеньоры зарабатывают 125-200 тысяч долларов в год.

Ведущий разработчик (архитектор): больше 5 лет опыта (предпочтительно — больше 10). Ведущий разработчик или архитектор обычно отвечает за техническое руководство при создании всего приложения или основных компонентов крупного приложения. В его обязанности могут входить создание новой архитектуры или переделка старой, проектирование системы. Ведущий разработчик должен быть отличным наставником и иметь глубокое понимание различных архитектур приложений и технологических стеков. Он должен обладать опытом, позволяющим взвесить все достоинства и недостатки различных вариантов разработки ПО. Также у него должны быть навыки работы с людьми — чтобы сплотить команду вокруг выбранных решений. Ведущие разработчики и архитекторы обычно зарабатывают от 138 до 230 тысяч долларов в год.

Как пересечь эту черту

Практически все разработчики проводят некоторое время на джуниорских позициях (с джуниорской зарплатой и обязанностями), но каждый разработчик, готовый приложить усилия и уделить некоторое время учебе, имеет возможность стать сеньором (с соответствующими обязанностями и зарплатой) за 2-3 года вместо 5-10 лет. К сожалению, более распространенным является следующий путь:

  • 1-3 года — джуниор
  • 4-6 лет — мидл
  • 6+ — сеньор
  • 10+ — ведущий разработчик (архитектор).

А ведь можно и так:

  • 1 год — джуниор
  • 2-3 года — мидл
  • 3+ — сеньор
  • 5+ — ведущий разработчик (архитектор).

Разница в зарплате между этими двумя путями может сравняться с зарплатой за целый год (из первых 6 лет стажа), но это не единственное преимущество. Хорошему специалисту интереснее работать. А когда вам интересно, это подстегивает вас показывать лучшие результаты. Ваш работодатель это непременно заметит и вознаградит вас большим доверием, возможностью работать автономно и заниматься более важными задачами.

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

Так что же может помочь быстрее преодолеть расстояние между джуниором и сеньором?

Размеренная практика

Как мы знаем из книги «Максимум. Как достичь личного совершенства с помощью современных научных открытий» («Peak: Secrets from the New Science of Expertise») Андерса Эрикссона, размеренная, непрекращающаяся практика — ключ к учебе.

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

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

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

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

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

Если вы программируете больше трех лет и все еще не считаетесь сеньором, вероятно, вы упустили кое-что, отличающее посредственных разработчиков от 10x-разработчиков (да, они существуют).

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

Разница между наиболее и наименее ценным кодом в глобальных масштабах может быть просто астрономической. Хорошие менеджеры понимают, что найм 10х-разработчика не означает, что теперь в штате будет супергерой, который сумеет довести проект до логического завершения, причем одной левой. Лучший способ получить преимущество от найма 10х-разработчика это организовать обмен знаниями, наладить отличную командную работу и сделать так, чтобы вся команда стала работать лучше в 2-5 раз. Для этого нужны отличные soft skills.

Что нужно изучать?

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

Изучайте современный синтаксис

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

function add (a) {
  return function (b) {
    return a + b;
  };
};

А ведь то же самое можно написать иначе:

const add = a => b => a + b;

Учитесь компоновать программы

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

Изучите основы функционального программирования

Функциональное программирование фокусируется на простых, компонуемых строительных блоках и неизменяемом состоянии, что делает его идеальным для современной архитектуры веб-приложений. Оно также тяготеет к более гибкому, более простому для рефакторинга и более пригодному для повторного использования коду, чем процедурный или объектно-насыщенный код. Почти все самые популярные библиотеки JavaScript являются функциональными или основаны на функциональных подходах (например, React, Redux, Lodash, Ramda, RxJS и т. д.).

Учитесь работать с объектами

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

Учитесь работать с асинхронными процессами

Мы можем пользоваться разными подходами, и некоторые из них лучше других. Нам могут помочь такие инструменты как promises и async/await. Также может быть хорошей идеей научиться работать с потоковыми инструментами, такими как RxJS.

Освойте стандартные инструменты разработчика

Профессиональные JavaScript-разработчики должны понимать работу git и GitHub. Также по состоянию на 2020 год в мире JavaScript для редактирования файлов исходного кода чаще всего используется Visual Studio Code. У разработчиков-сеньоров знание всех этих инструментов должно перейти в мышечную память.

Soft Skills

Чтобы стать отличным разработчиком, нужно нечто большее, чем набор технических навыков. Вот несколько советов по быстрому карьерному росту:

Будьте добры к людям.

Избегайте пустой болтовни (споров о вещах, не имеющих значения). Если у вас в команде возникают диспуты насчет стиля, вероятно, пора установить ES Lint и Prettier и автоматизировать форматирование.

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

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

Заключение

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here