
Полная версия
Разработчик ПО: Путеводитель по карьерной лестнице для будущих сеньоров, техлидов и стаффов
• Гарантия занятости. Центры затрат в первую очередь подвергаются сокращениям в целях экономии средств.
Итак, как же определить, является ваша команда или отдел центром прибыли или центром затрат? Вот несколько способов:
• Отчитывается ли ваша команда или отдел о доходах, полученных за конкретный период времени? Если да, то, скорее всего, вы работаете в центре прибыли.
• Как ваша компания зарабатывает деньги и какие подразделения приносят доход? Все опирается на отдел продаж или, если вы работаете в банке, на фронт-офис? Учитывается ли вклад технологического отдела в генерацию дохода? Какие команды в технологическом отделе считаются «более важными»?
• Изучите организационную структуру компании. Как высоко в иерархии организации находится технологический отдел? Кому подчиняются разработчики и продакт-отдел? Сколько вице-президентов в отделе разработки по сравнению с отделами маркетинга, финансов, операций и другими командами?
• Какие отделы генеральный директор на общих собраниях называет «стратегическими» и благодарит за увеличение доходов? Входит ли ваша команда или отдел в их число?
• Является ли ваша компания публичной? Если да, просмотрите квартальные отчеты, чтобы понять, на чем сосредоточено внимание организации, – скорее всего, там и находятся центры прибыли.
Разработка ПО может быть как центром затрат, так и центром прибыли:
• В техногигантах, в крупных и средних технологических компаниях, а также в стартапах и скейлапах, где технологии являются основой бизнеса, технологические отделы и разработка ПО чаще всего являются центрами прибыли.
• В традиционных компаниях и государственных организациях технологии обычно считаются центром затрат, необходимым для достижения определенных целей организации.
• В консалтинговых компаниях и агентствах разработка ПО является основной услугой, предоставляемой компанией, и, следовательно, центром прибыли.
Работа как в центрах затрат, так и в центрах прибыли открывает определенные перспективы. Работая в центре прибыли, можно легко начать чувствовать свое «превосходство» над центрами затрат, но успешным компаниям нужны оба типа отделов, поэтому полезно уметь работать в каждом из них.
1.5. Альтернативные подходы к оценке карьерного роста
Хотите верьте, хотите нет, но в оценке карьерного продвижения существует гораздо больше важных моментов, чем просто должность и заработная плата. Ваша позиция, репутация компании и зарплата – это базовые положения, они всегда конкретны, а размер заработной платы позволяет легко сравнить разные позиции. Но существуют и другие факторы, которые также влияют на вашу удовлетворенность местом работы, например:
• ваши коллеги и отношения внутри команды;
• ваш менеджер и отношения с ним;
• ваше положение в команде и компании;
• корпоративная культура;
• миссия компании и ее вклад в общество;
• возможности для профессионального роста;
• ваше психическое и физическое здоровье в рабочей среде;
• гибкость. Можно ли работать удаленно? Если да, то как часто и нужно ли об этом уведомлять?
• работа в выходные или «по вызову». Насколько это напряженная работа и источник стресса?
• личная жизнь. Получается ли «оставлять работу на работе»?
• личная мотивация.
Графически это можно представить так:

Альтернативные подходы к оценке своего места работы
Сравните критерии из диаграмм выше с компенсационными пакетами позиций, на которые вы претендуете. Нередко опытные специалисты готовы получать меньшую заработную плату, но на более гибких и комфортных условиях. Необходимо найти баланс, который будет соответствовать вашим ожиданиям как на текущем месте работы, так и на всех последующих. Так вы будете более удовлетворены своей работой, чем те, кто принимает во внимание лишь базовые условия.
Глава 2. Управляйте своей карьерой
Лучший совет для любого программиста-разработчика – это
УПРАВЛЯЙТЕ СВОЕЙ КАРЬЕРОЙ!
Почему? Потому что никто не позаботится об этом лучше вас самих. Этот урок я усвоил, когда сам стал менеджером и пытался помочь своим сотрудникам расти в профессиональном плане, достигать своих целей и реализовывать амбиции.
В этой главе мы рассмотрим, что значит взять карьеру в свои руки:
1. Вы сами в ответе за свою карьеру
2. Будьте тем, кто всегда добивается результатов
3. Ведите журнал выполненных задач
4. Запрашивайте обратную связь
5. Сделайте своего менеджера своим союзником
6. Не изнуряйте себя
2.1. Вы сами в ответе за свою карьеру
За время моей карьеры у меня было несколько менеджеров – одни из них интересовались моими устремлениями, другие нет. С одними я получал повышение спустя всего несколько месяцев, в то время как другие даже после года совместной работы не давали никакой обратной связи о том, как мне можно профессионально расти.
Когда же я сам стал менеджером, то пообещал себе быть хорошим руководителем и заботиться о карьере каждого из моих подчиненных. Я встречался с ними, обсуждал их карьерные цели и старался сделать все возможное, чтобы помочь им достичь этих целей. И я заметил следующее:
• Многие программисты никогда ранее не обсуждали свою карьеру с менеджером, и я был первым, кто спросил об их целях, причем не только о целях в нашей компании, но и о последующих карьерных устремлениях вне ее.
• С некоторыми людьми было проще, чем с другими. Мне было легче общаться с теми сотрудниками, кто знал, чего хочет, чем с теми, кто еще не определился или вообще не хотел об этом думать.
• Я хотел помочь всем, но как менеджер был ограничен во времени. Я мог уделять лишь немного времени каждому своему подчиненному, так как у меня было множество других задач, требующих внимания.
В итоге мне пришлось признать, что, несмотря на мое желание помочь каждому сотруднику в их карьерном развитии, результат в конечном счете зависел не от меня. В первую очередь все зависело от самого человека. Люди добивались больших успехов только тогда, когда проявляли инициативу, сами ставили цели, отслеживали их достижение и постоянно самосовершенствовались. А те, кто прикладывал мало усилий или ждал, что я сам поставлю цели и буду подталкивать к их достижению, не достигали никаких результатов.
У всех этих сотрудников был менеджер, который искренне заботился об их профессиональном развитии. Но у многих программисов менеджеры не имеют ни времени, ни желания заниматься их карьерным ростом.
Поэтому если вы хотите добиться каких-либо успехов, возьмите ответственность за свой карьерный путь на себя. Не ждите, пока вам поможет менеджер. Даже если вам повезло с руководителем, у него есть еще куча других людей, о которых тоже нужно позаботиться, и он может уделить вашей карьере меньше внимания, чем вы сами.
Есть множество способов управлять своей карьерой: делиться своими целями с менеджером и коллегами, сообщать о выполненной работе, и в особенности о той, которую они могли бы не заметить, всегда просить обратную связь и т. п.
2.2. Будьте тем, кто всегда добивается результатов
Когда я общаюсь с программистами, желающими построить успешную карьеру, они часто спрашивают меня, как обеспечить свой карьерный рост и как стоит себя вести с точки зрения офисной политики. Несомненно, эти моменты важны, но если вас не воспринимают как человека, который всегда достигает поставленных целей, все остальное уже не имеет никакого значения.
Достигайте целей!Выполняйте порученную вам работу – качественно и в поставленные сроки. Когда предоставляется такая возможность, старайтесь перевыполнить план, сделайте больше и лучше, чем от вас ожидается. Для большинства разработчиков это означает предоставлять готовый к использованию рабочий код, запускать фичи, сервисы и компоненты.
Достигайте значимых целейСуществует большая разница между выполнением бессмысленных задач, таких как мелкие рефакторинги, которые не имеют видимого результата для клиентов и коллег, и выполнением значимых задач, которые действительно приносят пользу компании и вашей команде. Будьте тем, кто добивается значимых результатов. С чего начать? Определите приоритеты вашей команды и компании.
Убедитесь, что всем известно о ваших результатахРаспространенная ошибка многих программистов заключается в том, что они полагают, что все вокруг – их команда, менеджер, продакт-менеджер и коллеги из других команд – замечают, когда они внедряют какую-то фичу или завершают сложный проект. Но это не так.
Необходимо сообщать своему менеджеру и коллегам о завершении задач. Если ваша работа оказала значительное влияние на деятельность компании, поделитесь этим с другими. Если какая-то задача, выполненная вами, была особо сложной и требовала нестандартного подхода, расскажите об этом. Иначе многие просто не узнают, с какими вызовами вы столкнулись и какие трудности смогли преодолеть!
Выполняйте порученную вам работу, фокусируйтесь на важных задачах и сообщайте другим об их выполнении. И тогда ваша работа не останется незамеченной.
2.3. Ведите журнал выполненных задач
Над какими задачами вы работали на этой неделе? А на прошлой? А десять месяцев назад? Конечно, недавние задачи вспомнить легко. Однако с течением времени детали начинают забываться, что обычно не приносит каких-либо проблем. Но не всегда.
Проблемы могут возникнуть, например, в конце года, когда вы подводите итоги своего вклада в деятельность компании, влияющие на перформанс ревью и перспективы дальнейшего повышения. Или в случае, когда ваш менеджер готовит перформанс ревью и просит вас сообщить, чем вы занимались весь год. Если вы не ведете какие-либо записи, вы можете легко упустить что-то важное, забыв о каких-то задачах, или потратить много времени на поиск деталей прошлых проектов.
Вместо этого можно каждую неделю записывать ключевые достижения в своей работе, включая важные изменения, внесенные вами в код, код-ревью, проектную документацию, обсуждения и планирования, помощь коллегам, постмортемы инцидентов и все, что имеет значение. Бывший разработчик Stripe Джулия Эванс (Julia Evans) называет такой документ «список достижений»[10] (brag document)[11].
Это очень полезно не только для перформанс ревью, но и для вас самих, потому что помогает осознать, какая работа была вами проделана. Вот пример того, как может выглядеть такой журнал выполненных задач:

Пример журнала выполненных задач. Шаблон можно найти тут[12]
Самые продуктивные разработчики, с которыми мне только доводилось работать, ведут такого рода журнал. Вот как это помогает им:
• Приоритеты. К более продуктивным программистам чаще обращаются за помощью. Разработчикам, ведущим учет выполненной или предстоящей работы, легче определить свои приоритеты, чем их коллегам, которые такой журнал не ведут.
• Ощущение завершенности рабочего дня. В крупных технологических компаниях нередко случается так, что утром планируешь наконец закончить запрос на включение изменений, но в течение дня возникают другие неотложные задачи, и запрос так и остается незаконченным. Если вы записываете выполненные задачи, в конце рабочего дня вам будет легче оценить объем проделанной работы.
• Умение говорить «нет». Если в списке уже слишком много дел и вдруг появляется что-то новое, приходится либо отклонить поручение, либо освободить для него место, убрав что-то из запланированного. Программисты, которые четко отслеживают все свои предстоящие задачи, всегда знают, отказаться ли от новой работы или приостановить выполнение других задач.
• Перформанс ревью, повышение и количественная оценка влияния. Ведение журнала задач – это один из лучших способов гарантировать справедливую обратную связь в процессе перформанс ревью и самоконтроля. Анализ проделанной работы займет меньше времени, а положительная оценка повлияет на возможность повышения.
Ведь это глупо – вести журнал выполненных задачКогда только начинаешь вести журнал завершенных задач, это занятие кажется нелепым. И когда я, будучи менеджером, предлагал подобную практику своим подчиненным, многие из них были настроены скептически.
Некоторые считали журнал лишь констатацией очевидного и не видели смысла записывать то, что уже сделано. Другие воспринимали это как форму самовосхваления и потому считали такое занятие неправильным. А другие сотрудники просто полагали, что это не нужно и к тому же отвлекает их от «настоящей» работы.
Для меня начало ведения журнала задач было чем-то похожим на попытку заняться медитацией. Я знал, что медитации работают, если проводить их регулярно. Меня в этом убедил друг, который сказал: «Я знаю, это кажется глупым – слушать какую-то запись по десять минут каждый день. Я тоже так думал. Но просто попробуй продержаться две недели, и потом ты поймешь, в чем суть». Я попробовал и через две недели понял, что он имел в виду.
То же самое касается и ведения журнала выполненных задач или «списка достижений». Это занятие может казаться глупым, занимать время, но просто попробуйте вести записи в течение двух месяцев, каждую неделю отмечая всю проделанную вами работу. И периодически показывайте их своему менеджеру на индивидуальных встречах. По прошествии двух месяцев вы поймете, почему это так полезно. Я еще не встречал ни одного человека, который бы пожалел о том, что начал вести журнал!
2.4. Запрашивайте обратную связь
Немалое влияние на профессиональный рост оказывает получение обратной связи от коллег. С ее помощью можно понять, что у вас получается хорошо, а над какими навыками стоит поработать.
Всегда собирайте обратную связьДля программиста существует множество простых способов получить обратную связь, и, возможно, вы уже прибегали к некоторым из них:
• Код-ревью. Отличный способ получить мнение другого специалиста о вносимых вами изменениях в код, позволяющий не только выявить возможные ошибки, но и поделиться знаниями, а также получить обратную связь о вашей работе.
• Идеи и предложения. Делитесь своими предложениями или идеями по проекту с коллегами и спрашивайте их мнение.
• Дизайн-документ. Если ваша команда или компания ведет подобную документацию, у вас есть возможность получить обратную связь по предложенным стратегиям реализации проектов.
• Пир-ревью[13]. В вашей компании может применяться и более формальный способ оценки производительности. Например, сотрудников могут попросить предоставить обратную связь о работе своих коллег – что у них получается хорошо, а где есть возможности для совершенствования. Это ценная обратная связь, которую невозможно получить другими способами.
Вы также можете проявлять инициативу, самостоятельно запрашивая обратную связь у коллег, например у других членов команды, вашего менеджера, продакт-менеджера и других специалистов, с которыми вы работаете. Мой совет: не стоит интересоваться общей оценкой своей деятельности, вместо этого лучше узнать о какой-то конкретной задаче или проекте, над которыми вы работали. Например:
• «Что можно сказать о моем коде на основе последних пул-реквестов? Что я мог бы изменить? Были ли случаи, когда я нарушил рекомендации?»
• «На твой взгляд, как я провел встречу по планированию архитектуры? Что понравилось, или, может, есть какие-то предложения, как в будущем сделать подобные встречи более продуктивными?»
• «По поводу вчерашнего сбоя, отладку которого я проводил: как ты думаешь, я все правильно сделал? Это был мой первый сбой, поэтому хочу скорректировать свои действия, чтобы в будущем решить проблему более эффективно».
Фидбэк может оказать неоценимую помощь, и именно так к нему надо относиться. Давать обратную связь может быть нелегко, особенно если она нелестная. Поэтому если кто-то делится с вами конструктивной критикой, не забывайте, что ему было бы намного проще промолчать. Особенно стоит помнить об этом, если ваша первоначальная реакция на критику – защита.
На самом деле большинство людей не дает обратную связь, если их об этом не просят. Поэтому вам придется самим активно просить об этом, задавая вопросы о конкретных рабочих ситуациях и задачах. По моему опыту, обратная связь особенно полезна, когда вы делаете что-то впервые либо все еще осваиваетесь в новой группе или среде.
Проводить анализ своей работы – отличный способ учиться и самосовершенствоваться, и обратная связь помогает в этом.
Давайте обратную связь другимПредоставление обратной связи способствует профессиональному росту коллег, но как правильно давать фидбэк, а особенно в случаях, когда проще промолчать? Вот несколько подходов, которые, по моему опыту, могут помочь:
• Отмечайте хорошую работу! Если вы видите, что кто-то проделал отличную работу, скажите ему об этом. Отметьте, что именно вам понравилось. Например, добавьте положительный комментарий в код-ревью, в котором вы отметите аккуратное выполнение рефакторинга. Или скажите лично, что вам нравится реализация новой функциональности.
• Будьте конкретны. Расскажите, что именно вам понравилось. Слова вроде «молодец» или «отлично» – это не очень полезный фидбэк, поэтому будьте конкретны в том, что в особенности вам понравилось и почему.
• Давайте положительную обратную связь только тогда, когда вы действительно так считаете. Не говорите людям, что вам что-то понравилось или что они хорошо справились с какой-то задачей, если на самом деле это не так. Фальшивые комплименты и лесть еще никому не помогли.
Давать отрицательный фидбэк всегда сложнее, потому что люди могут обидеться на критику. Есть несколько способов минимизировать риск недопонимания:
• Обращайте внимание на саму ситуацию и ее последствия. Например, вы хотите дать обратную связь о возникшем баге, которого можно было бы избежать, если бы ваш коллега провел более тщательное тестирование. В таком случае опишите ситуацию в целом: вы обнаружили баг в продакшене, который привел к ряду последствий. Затем спросите коллегу о его мнении по поводу данной ситуации и о способах предотвратить ее повторение в будущем.
• Избегайте фраз типа «лучше сделать так». Если вы не являетесь менеджером этого специалиста, старайтесь избегать прямых указаний. Вместо этого помогите ему найти решение самостоятельно. Например, можно рассказать, что бы вы сделали по-другому в данной ситуации.
• Давайте негативную/конструктивную обратную связь лично. Недоразумения и недопонимания намного чаще возникают, если обратная связь предоставляется по электронной почте или в переписке. Поговорите с коллегой лично или по видеосвязи, чтобы была возможность видеть его реакцию.
• С самого начала обозначьте, что вы на его стороне. Большинство людей реагируют на негативную обратную связь агрессией либо обидой. Однако эффект от критики можно смягчить, если четко дать понять, что вы действуете в интересах этого человека и что вам было бы проще промолчать, но вы хотите помочь. Попросите его сначала выслушать вас, и помните, что вы делитесь обратной связью, потому что верите, что она принесет пользу.
• Обозначьте, что это лишь ваше мнение, которое он может проигнорировать, если не согласен с ним. Я предпочитаю давать конструктивную обратную связь коллеге, минимизируя нашу разницу в статусе. Скажите ему, что в первую очередь вы коллега, а не менеджер, а поэтому ваши наблюдения еще не означают, что он должен что-то менять в своей работе. В конце концов, это всего лишь ваше личное мнение, которое он может проигнорировать, если не согласен с ним.
• Завершите обсуждение на позитивной ноте. Цель предоставления любой обратной связи – помочь коллеге и команде. Не забывайте, что если от вашего комментария отношения в коллективе ухудшатся, то это вряд ли поможет команде. Поэтому старайтесь завершить обсуждение на позитивной ноте, удовлетворительно для всех сторон. Например, можно закончить обсуждение искренним положительным фидбэком или простой благодарностью за то, что они были так открыты в разговоре с вами.
Как «расшифровать» плохо составленный фидбэкКонструктивная и корректная подача обратной связи требует практики. Поэтому большинство программистов не очень хорошо владеют этим навыком. Да что уж там, даже некоторым менеджерам стоит в этом поупражняться! Вы наверняка однажды столкнетесь с плохо написанным фидбэком, даже если намерения человека будут вам в принципе понятны. Вот как можно извлечь из некорректного фидбэка что-то полезное:
• Попросите предоставить конкретные примеры. Плохая обратная связь зачастую является таковой из-за недостатка конкретики. Например, ваш менеджер может сказать что-то вроде: «Мне кажется, твой код можно бы и улучшить». В ответ можно сказать примерно следующее: «Покажи, пожалуйста, в каком месте я могу его улучшить? Можем рассмотреть проблему на конкретных пул-реквестах?».
• Уточните последствия. Зачастую не всегда ясно, зачем вам предоставили тот или иной фидбэк. Например, коллега может сказать: «Думаю, что тебе не надо было проводить этот рефакторинг». В таком случае спросите, какое влияние это оказало на него и на других членов команды.
• Попросите совета. Обычно некорректная обратная связь не содержит конкретных предложений по улучшению ситуации. Например, если коллега говорит, что вы неправильно развернули код в продакшен, в результате чего возникла ошибка, спросите: «Как можно было бы провести развертывание иначе? Как бы ты это сделал, в какой последовательности?»
• Если вы не согласны, объясните почему. И хотя принимать во внимание полученный фидбэк полезно, совершенно не обязательно соглашаться с ним. Если вы не согласны, то объясните почему. Возможно, человек, предоставивший обратную связь, что-то не учел, и ваше объяснение может заполнить какие-либо пробелы в понимании.
Обратную связь стоит воспринимать как подарок – как при ее предоставлении, так и при получении. И некорректный фидбэк тоже, но только придется немного постараться, чтобы извлечь из него пользу!
2.5. Сделайте своего менеджера своим союзником
Ваш менеджер способен оказать наибольшее влияние на вашу карьеру в рамках конкретной компании. Правильно выстроенные отношения с ним критически важны. Работать с менеджером, который верит в вас, всегда на вашей стороне и поддерживает ваши карьерные цели, намного лучше, чем иметь дело с руководителем, который ничего не знает о вашей работе и профессиональных целях и не предоставляет никакой обратной связи.
И хотя вы не можете контролировать все факторы, определяющие ваши отношения, существует множество способов улучшить и оптимизировать их, тем самым создав основу для взаимовыгодного партнерства и поддержки.
Как же улучшить эти отношения?
Старайтесь проводить регулярные 1: 1В ходе 1:1 (индивидуальных встреч) рассказывайте своему менеджеру о ходе работы, о ваших текущих задачах, обсуждайте свои достижения и возникающие проблемы. Вы можете поделиться с ним своими профессиональными целями и поинтересоваться различными трудностями, с которыми сталкивается он и команда в целом, а также тем, как вы могли бы ему помочь.
Не думайте, что ему все известно, а рассказывайте самиМногие разработчики считают, что их менеджер по умолчанию знает о проделанной ими работе, но это не всегда так. У менеджера много других задач, а поэтому он не будет проверять каждый пул-реквест, и уж тем более никогда не узнает, что вы потратили полдня, помогая коллеге отладить код.
Расскажите обо всем сами! Для этого и нужны регулярные встречи 1: 1.
Узнайте о целяхНемного эмпатии никогда не повредит, а поэтому постарайтесь понять, что для вашего менеджера важно в контексте команды. Самый простой способ это сделать – спросить о наиболее значимых задачах на следующий месяц и полугодие. Возможно, вы можете помочь с некоторыми из них.
Например, если ваш менеджер говорит о своем беспокойстве из-за того, что команда недавно пережила несколько критичных сбоев, то вы можете помочь ему, проявив инициативу и предложив свою помощь в повышении надежности системы.
Выполняйте договоренности и предупреждайте о задержкахЕсли вы согласились сделать что-то к определенной дате, например подготовить и предоставить команде план миграции, то постарайтесь выполнить задачу в срок и по готовности сообщите об этом своему менеджеру либо заранее предупредите его о задержке, если не успеваете.
Менеджеры всегда делят членов команды на надежных и ненадежных. Старайтесь быть в группе «надежных сотрудников». Для этого лучше избегать задач, своевременное выполнение которых вы не можете гарантировать.