Почему замена себя приведет к лучшей карьере

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

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

Вот некоторые из факторов, которые сделали их незаменимыми:

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

Но почему это плохо? Разве мы не должны стремиться быть незаменимыми? Сет Годин написал бестселлер «Линчпин: ты незаменим?» В нем он утверждает, что шпильки, или незаменимые люди, составляют основу рабочей силы. Он заставляет вас копить знания и отношения, чтобы стать незаменимым.

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

Почему ты не хочешь быть незаменимым

1. Ваши навыки становятся менее востребованными

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

Компании хотят нанимать людей с соответствующим опытом. Опыт разработки функций в самодельном фреймворке не имеет значения. Зачем нанимать того, кто работал только с jQuery, если я могу нанять того, кто имеет два года опыта работы с React?

Работа с теми же инструментами, что и потенциальные работодатели, повышает вашу конкурентоспособность.

2. Ваши рабочие отношения испортятся

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

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

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

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

3. Сложнее отойти.

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

4. Это останавливает ваш карьерный рост.

Если вы незаменимы на своей нынешней должности, зачем вашему боссу дать вам повышение?

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

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

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

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

5. Вера в вашу незаменимость дает вам ложное чувство безопасности.

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

Даже если вы незаменимы, есть много способов потерять работу. Что делать, если компания обанкротится? Или продукт, над которым вы работаете, теряет долю рынка? Или если ваша компания решит передать разработку на аутсорсинг в низкозатратную область?

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

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

Как сделать себя заменяемым

1. Практикуйте внутренний источник

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

  • Напишите файл README с примерами и пояснениями.
  • Добавьте ДОПОЛНИТЕЛЬНЫЙ файл с информацией о соглашениях и руководством по стилю кода.
  • Создайте шаблон запроса на вытягивание, чтобы товарищам по команде было проще вносить свой вклад.
  • Настройте мощный конвейер CI. Убедитесь, что ваши тесты и линтеры запускаются при каждом запросе на вытягивание.
  • Используйте средство форматирования кода, например prettier, чтобы перестать придирчиво относиться к форматированию.

2. Делитесь своими знаниями и учитесь вместе

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

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

3. Поделитесь ключами от замка.

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

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

4. Никогда не прекращайте учиться

Внедряйте новые инструменты и новые практики в свой рабочий процесс. Изучите новые технологии и фреймворки. Определите болевые точки и придумывайте решения.

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

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

Это также делает меня более заменяемым - эти тесты облегчают другим разработчикам работу с моим кодом.

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