Как frontend-специалисту повысить зарплату
Привет, username-айтишник. Сегодня хочу поделиться с тобой опытом о том, как улучшить свое материальное положение. Приведу практические примеры, чтобы выделяться среди миллиона других статей.
Для повышения вам понадобятся:
— технические навыки (hard skills),
— умение договариваться (soft skills)
Технические навыки
Npm install
Сначала подготовимся. Для кого это статья? Для уверенного программиста уровня senior, возможно для middle. Желательно стартап или небольшая компания.
Если вы junior, то статья умещается в одно предложение: учите технологии, которые используется на вашей работе.
Сеньорам и мидлам предлагаю читать дальше.
Первый и самый очевидный способ повысить зарплату — успешно пройти собеседование и устроиться в новую компанию. На собеседовании на вопрос «какая у вас сейчас зарплата» отвечаем ту цифру, которую вы хотите получить на новой работе, поэтому на вопрос желаемая зарплата говорим еще больше. Придерживайтесь рынка, для этого посмотрите hh.ru (зарплаты в России) / levels.fyi (зарплаты в мире).
Если у вас есть «заначка», рекомендую перед выходом на новую работу взять себе отпуск на 2–4 недели, так как это практически единственный легальный способ провести время без работы если вы уже окончили университет. Если вы еще студент — поздравляю вас и завидую.
Остаетесь ли вы в текущей компании или начинаете свой первый день в новой — важно заявить о себе. В новой компании это сделать легче, в старой компании придется попотеть. Так же не забывайте, что выход на работу — это удачное время для проработки длинной серии повышения зарплат, а не только повышение в момент получения оффера.
Npm start
Повышение зарплаты со стороны ваших технических навыков — это насколько вы полезны компании. Ваша полезность должна в чем-то измеряться. Это ключевой момент.
▍ Подготовка
Запишите текущее состояние системы. Для этого используйте google drive (Таблицы или Документы), Notion, MS Word, и так далее.
Лайфхак: если вы будете использовать продукт, который любят использовать менеджеры, то быстрее получите поддержку. Загляните к коллегам и посмотрите чем они пользуются для «базы знаний» — Notion или Jira Confluence? Заведите себе страницу и работайте там в формате публичного отчета, то есть будьте готовы, что ваш документ могут посмотреть до публикации.
Обязательно думайте о метриках. Это главный аргумент в квесте на повышение оклада.
▶ Пример: прибираемся с ESLint
Плохо: «ну это, эээ стало лучше, меньше неиспользованных переменных, меньше предупреждений»
Хорошо: было 1234 warnings & 12 errors, осталось: 17 warnings
Прибираемся
Остановимся подробнее на теме наведения порядка, так как тема очень хлебная. Давайте взглянем на популярные инструменты:
- ESLint (любой другой анализатор кода, если вы не из frontend галеры). Во-первых есть волшебный
eslint:fix
, во-вторых в чистом проекте и работать приятно. Я не буду напоминать о том, что не доверяйтесь в слепую автоисправлениям, которые уронят ваш продакшен, так как вы же middle как минимум? Проверяйте внимательно вашу работу, особенно в период испытательного срока, - Sentry / Rollup / Datadog / etc — система трэкинга ошибок на устройствах клиентов. Рыбное место для повышения авторитета, а так же прекрасная возможность улучшить жизнь пользователей. Не забывайте, что все подобные системы оплачиваются за события. Меньше событий — меньше платеж. Об этом мы еще поговорим подробно в разделе «сокращение расходов»
Лайфхак: в Sentry есть кнопка «archive» (раньше называлась «ignore»), с помощью которой вы можете игнорировать отчеты об ошибках, которые вам не интересны. Однако, кнопка archive не вычитает ошибки из вашей оплаченной квоты. Чтобы отчет об ошибке не влиял на итоговый платеж, вам нужно воспользоваться фильтром.
Автоматизируем
Друг приборки — автоматизация. Можно один раз прибраться, но затем снова оказаться в…
Поэтому:
- настраиваем eslint проверку, прогон тестов и прочее перед релизом приложения (pre-push или pre-commit хуки в гитхабе),
- настраиваем интеграцию sentry ошибок в Slack если их количество превысило определенный лимит,
- устанавливаем метрику google lighthouse если ваш продукт — вебсайт (например lighthouse orb для CircleCI),
- настраиваем редактор для тех, кто нуждается в помощи, помогаем с автоматическим форматированием под одну конфигурацию
Рецептов масса. Каждый из них так или иначе становится заточен на определенный продукт, который вы используете. Скорее всего у вас Slack или Telegram, Sentry или Datadog, VS Code или WebStorm — для всех есть готовые плагины с необходимым функционалом по наведению порядка и его поддержанию.
Рекомендация: из личного, советую присмотреться к Sonarcloud для контроля качества ваших Pull Requests, не забывайте настроить покрытие тестами (test coverage).
Защищаем
Можно пройтись по базовым проблемам, которые не обязательно даже называть «уязвимостью», но так как слово действенное в переговорах, я бы оставил его в обороте.
Примеры:
- попросить коллег во всех сервисах включить 2FA (особенно github/gitlab…),
- проверить список пользователей, удалить всех кто уже не работает в компании,
- проверить форму регистрации, можно ли с легкостью создать тысячи аккаунтов? (подробнее про это в следующем разделе — «Артиллерия»),
- проверить можно ли затормозить работу веб-приложения или урoнить сайт (так же смотри — «Артиллерия»),
- обновить старую jQuery и прочие legacy зависимости
Артиллерия
Для создания большого количества аккаунтов или любых других данных внутри вашей системы я рекомендую Artillery.io. В конфигах формата YAML можно описать пошаговую инструкцию для скрипта, например:
- зайди на адрес такой-то,
- выполни api запрос 1, 2, 3,
- делай такие запросы в течении 100 секунд, по 100 штук в секунду
▶ Пример: страница сервисов
Дано: страница сервисов. Данные на странице представлены в виде таблицы с бесконечной подгрузкой (infinite scroll):
- название: «починка машины», «покраска крыши»,
- описание: описание услуги
- цена
С помощью Artillery вы можете сгенерировать большое количество POST запросов, чтобы проверить насколько готово ваше API к нагрузке, а бонусом чтобы в POST’ах не было данных в виде «аааббваа»,»1231823» — Faker поможет вам сгенерировать интересные данные, которые могут быстро указать на проблемы в UI, например — CSS сломался, так как название сервиса слишком длинное.
Если вы уже потираете ладошки в предверии интересного исследования, я добавлю: с помощью этого эксперимента вы с легкостью подсветите проблемы с «observability» (перевод мне не нравится — «наблюдаемость») вашей системы. Если часть ваших запросов завершилась с ошибкой, эта ошибка должна быть зафиксирована (Datadog, Sentry, etc…). Всегда думайте о сборе информации об ошибках, это полезная метрика, которую легко продать для повышения, если ошибки исправлять :)
Помогаем
На стыке технического и социального навыка хочу отметить Pull request review (либо любую «оценку чужой работы»).
▶ Пример: Pull request review
Плохо: этот PR надо переделать
Хорошо: посмотри на эти строки, здесь есть проблема «A», почитай про это «здесь».
— Если в вашей компании есть культура «парного программирования» — пользуйтесь этим. Помогайте коллегам улучшать PR и обучайте их. Менторство высоко ценится. Будьте внимательны, если обучаемый не обучается — это не обязательно ваша проблема.
Сокращение расходов (cost reduction)
В зависимости от того, насколько велики ваши права доступа вы можете:
- посмотреть есть ли пользователи, которые уже не работают в компании? (Например GitHub, NPM и подобные, где платится за количество «мест»),
- предложить перейти с месячной подписки на годовую (опять же GitHub, Sentry, etc),
- уменьшить количество информации (например, если вы пользуетесь переводами на разные языки и платите за количество строк в проектах, скорее всего найдутся проекты, которые уже не актуальны и строки можно удалить)
Объединяйтесь с DevOps и посмотрите что можно сделать с хостингом ваших изображений? Может быть выключить тестовые виртуальные машины в ночное время, если вся команда работает в одном часовом поясе?
Поговорите с it-администратором, может быть количество лицензий на WebStorm превышает количество пользователей?
Посмотрите на список оплачиваемых подписок (frontendmasters, browserstack, etc) для команды фронтенда. Узнайте какими продуктами уже не пользуются.
Умение договариваться
Если с технической стороной можно разобраться оперируя фактами, то soft skills — это эзотерика. Знакомо? Тем не менее, с этим нужно совладать и:
- помочь компании с переездом,
- прийти на субботник,
- посетить футбольную тренировку,
- принести торт по поводу и без
Из данного списка под сомнение я поставлю только футбол, так как если вы совсем не умеете играть, вряд ли получится укрепить связи с коллегами. Вектор полета мысли: нужно в меру уметь быть на виду. Если вы в чем-то хороши и это нужно компании — предложите свою кандидатуру. Намечается корпоратив, а вы знаете где самая вкусная пицца? Организуйте доставку.
Ваши шансы на успех возрастают пропорционально количеству довольных коллег. Нет необходимости общаться свысока со всеми кто вас окружает. Если менеджер задает вам странные вопросы во время теста ваших задач, научите его пользоваться developer tools в браузере. Если он забыл как отправить вам cURL, не гневайтесь, научите его еще раз и еще раз.
Общайтесь вежливо. Прежде чем нажать Enter, помните, что хвалить нужно людей, а критиковать процессы. Не надо устраивать публичную «разборку» прикладывая скриншоты и видео бага от конкретного коллеги. Поговорите лично, спросите можете ли вы чем-то помочь?
▍ Действуйте в команде
Ситуация А: вы гениальны, вы посмотрели что в проектах можно настроить несколько eslint правил и убрать огромное количество предупреждний/ошибок, начали исполнять задуманное, потели и пыхтели, в итоге приготовили PR на тысячу строк автоисправлений и с гордостью написали об этом в общем чате: «здоровеньки булы (ц), я тут вам сделал лучше, я молодец»
Ситуация Б: вы решили подогреть аудиторию, задали вопрос: коллеги, хочу пройтись по проекту eslint’ом с таким набором правил, так как я думаю это поможет нам (причины), кто-то уже пытался? Кто-то хочет поработать над этим? Какое у вас мнение?
Ситуация А гиперболизирована, ситуация Б слишком вежливая. Любопытно, но мне кажется русский язык, как будто не хочет общаться вежливо, а только раздавать приказы. В английском с его `could` или `would` есть где разгуляться. Тем не менее, можно собрать больше «классов» организуя свою работу публично:
- вы получаете обратную связь до того как приложили уйму усилий, которые могут обнажить нетривиальный баг в продакшене,
- кто-то, кто уже пытался до вас (и в курсе про этот баг). Вам могут помочь или поделиться опытом
Aнонсируя работу, которая понравится вамшим коллегам вы получаете «лайк» на сообщение анонс и «лайк» на сообщение о результатах. В итоге в два раза больше положительной реакции.
Кажется, что это какой-то каламбур, но посмотрите на это с другой стороны: вы подогрели аудиторию, обрели союзников, обменялись опытом. Не работайте в вакууме, вы командный игрок. Команда достигает большего, команда помогает вам, когда дает положительную характеристику вашему менеджеру или вскользь упоминает о вашем классном проекте на обеде.
Общайтесь с коллегами из разных отделов, спрашивайте что им не нравится, какая рутина в работе занимает слишком много времени. Не забывайте, что большинство задач можно автоматизировать или хотя бы подсказать формулу в Excel.
Поговорите с менеджером, посмотрите как он работает, как он принимает решение, когда ставит вам задачу. Собирает ли он метрики, анализирует данные? Предложите взять в оборот такие сервисы как mixpanel/redash/metabase — все они позволяют проверять гипотезы или получить вопрос по данным не обращаясь к программисту.
▶ Пример: командная работа
Плохо: Вася, сколько у нас пользователей без телефона в базе?
Хорошо: менеджер идет в metabase, там у него есть сохраненный отчет с удобными фильтрами. Вася заранее помог и научил как пользоватся. Вася получил хорошую оценку от коллег при разговоре с начальником.
Npm build
Момент X настал. Вы готовы идти к шефу, чтобы обсудить повышение (здесь отмечу, что я считаю инициатива должна исходить от вас). У вас есть конкретная цифра в голове, которую вы хотели бы получать. К данной цифре вы добавляете 10–20% в зависимости от ситуации на рынке. Цифра не абстрактная, конкретная.
Выберите удачное время: после обеда. Расскажите о том что сделано, покажите метрики. Похвалите коллег, которые помогали вам в этом, расскажите что в компании благоприятная атмосфера и нравится работать, но финансовый вопрос требует движения. Сообщите, что сегодня вам нужно ХХХ, а в течении следующих 2–4 лет вы планируете дойти до YYY.
Если ответ сразу «нет», задавайте вопросы: какие у нас есть варианты? Что необходимо, чтобы достичь желаемой зарплаты? Когда можно будет снова обсудить этот вопрос?
В случае благоприятного исхода, сильный менеджер попробует предложить вам повышение ниже (как раз на те самые 10–20%, которые вы заложили заранее), поэтому можете попробовать добить еще 5% или другой бонус. Помните, что 10 тысяч в месяц, это 120 тысяч в год. Не забывайте так же про варианты: сокращенная рабочая неделя, корпоративный телефон или транспорт и так далее.
Рекомендация: Договориться можно обо всем (Гэвин Кеннеди) — книга, которая поможет вам в этом нелегеком (или как окажется легком!) деле.
Спасибо за внимание и удачи на переговорах!