Для повышения вам понадобятся:
— технические навыки (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 тысяч в год. Не забывайте так же про варианты: сокращенная рабочая неделя, корпоративный телефон или транспорт и так далее.
Рекомендация: Договориться можно обо всем (Гэвин Кеннеди) — книга, которая поможет вам в этом нелегеком (или как окажется легком!) деле.
Спасибо за внимание и удачи на переговорах!
Комментарии (18)
azizoid
06.11.2023 10:34+1Подключился к проекту в июне. Первое что сделал это добавил файл
pull_request_template.md
и теперь все пишут описание к PR
потом создал пару алиасов путей и перевел все относительные пути в абсолютные.
третье через eslint сгруппировал их по алфавиту и по путям (react, external, internal, sublings). усилил контроль ща ревью
kirillbelash93
06.11.2023 10:34+1Тупо придти с офером от другой конторы, по другому никак, копейки в 5-10-20% это не о чем
maxfarseer Автор
06.11.2023 10:34в какой-то момент 5-10-20% это уже "о чем", нет же роста зарплаты в космос на 50% и больше постоянно. Рано или поздно сеньор подходит к большой цифре где 20% уже отлично, а 10% "не дурно".
Katenk_aa
06.11.2023 10:34киньте ссылочку на гит
maxfarseer Автор
06.11.2023 10:34где настроен lighthouse/sonarcloud? к сожалению не могу, это скриншоты из рабочих проектов :) может доберусь до стрима там поднастроим и примеры (гит репо) появятся.
Sfinx88
06.11.2023 10:34+3Все эти хождения с графиками ничего не дадут. Вам скажут "Да, Петр, вы отличный работник, мы и так это знали. Увы текущая ситуация (причину вам обоснуют, не сомневайтесь) не позволяет мне поднять вам зарплату, потерпите пожалуйста и мы вернемся к этому вопросу в следующем году (после того как компания погасит кредит, заключит сделку, выиграет тендер, закончит реконструкцию - ну вы поняли... ). Есть только один рабочий способ:
Приходите с офером, (можно фальшивым) и задвигаете "Я оказался в сложной ситуации, я не планировал менять работу, я привык к коллективу, (стеку, локации, блинчикам, цвету кресел, корпоративной культуре) и хотел бы остаться, но, честно говоря инфляция берет свое, жизнь становится тяжелее. Да и профессиональное развитие никто не отменял, я теперь уже не тот, что был год назад, вы это знаете. Поэтому я хотел бы обсудить с вами возможность повышения заработной платы. "
Что касается эффективных менеджеров, то это глупость, нужно разговаривать не с ними, а с теми кто платит вам деньги.
maxfarseer Автор
06.11.2023 10:34Я с вами отчасти согласен: оффер действенная штука и аргументы отличные (про "я оказался в сложной ситуации" - очень хорошо написано и действует отлично), но все же есть компании где на графики смотрят. Статистики чтобы подветрдить у меня нет, но работал и в тех и в других.
nronnie
06.11.2023 10:34+1Как frontend (или вообще любому) специалисту повысить зарплату
Освежить резюме.
Сменить работу.
JordanCpp
Если ваша зарплата зависит от эффективных менеджеров, то почти никак:)
maxfarseer Автор
:) Если они не планируют сократить количество рабочих мест, то шансы есть!
JordanCpp
Сокращать количество эффективных менеджеров, точно не будут.
dprotopopov
+ дополнительно можно нанять менеджера, который будет контролировать работу программиста ;)
anonymous
НЛО прилетело и опубликовало эту надпись здесь
maxfarseer Автор
Если причины не совпадают с реальностью, то я бы начал искать другую работу. Если же текущая работа очень нравится, то попробовал бы поговорить с начальником выше если таковой имеется, либо с кем-то, кто тоже решает данные вопросы в компании.