Soft Skills, мягкие навыки для программиста
Soft skills определяется как личные качества, которые позволяют более эффективно и гармонично взаимодействовать/работать с другими людьми. Зачастую это взаимодействие происходит в рамках одной команды, при работе над каким-то продуктом.
Я работаю разработчиком ПО уже достаточное количество лет, и за это время я определил для себя ключевые и полезные качества которыми нужно обладать и развивать. Если бы у меня была машина времени, я вернулся бы в свою совсем юный возраст, или, как минимум, в начало своей девелоперской карьеры, и сказал бы:
Soft skills являются важными качествами, очень часто, важнее, чем технические скиллы (hard skills).
Когда я только начинал карьеру программиста, я был полностью уверен в том, что только благодаря техническим скиллам можно построить, или наоборот, сломать свою карьеру разработчика. У меня было ложное представление о том, что разработчики, имеющие твёрдые и глубокие знания в разработке ПО продвигаются по карьерной лестнице на порядок быстрее остальных. Но, оказывается, это не совсем так, и я ошибался.
Как новичок в компании, я наблюдал за разработчиками, которые имели средний технический скилл, но благодаря отлично развитым мягким навыкам, превосходили в карьерной ступене и условиям работы над другими разработчиками, имеющими более продвинутые технические знания.
Я был в команде с чрезвычайно интеллигентным разработчиком. Он знал применяемый язык программирования в совершенстве, как и его экосистему знал как свои 5 пальцев. Он был одним из самых продвинутых программистов, которых я когда-либо встречал.
Но, к сожалению, прогресс его карьеры был достаточно медленным. По большей части из-за того, что с ним было не просто работать, ввиду его сложной личности и слабо прокачанных soft-скиллов.
Формальное обучение не рассказывает много о подобных навыках, потому я начал делать заметки, анализируя успешных программистов, и то, что они делают. И я начал повторять за ними эти действия, эмулируя их поведение. В итоге, я сделал выводы и замечания о том, какие навыки действительно важны для продвижения по карьерной лестнице программиста.
Скилл #1: Умение представить свою работу и свой общий вклад в неё
В идеальном мире, ваша работа говорит сама за себя. Но, к сожалению, мы не живём в таком мире.
В реальном мире, хорошая работа остаётся незамеченной почти всегда. вы должны принимать активное участие в работе, делать большой вклад в проект, проявлять себя в рамках проекта и решений его проблем. В результате такой работы ваш вклад не сможет остаться незамеченным и неоценённым.
В большинстве случаев, руководство напрямую не оценивает техническую сторону исполнения вашей работы, качество исполнения работы, качество кода и спроектированной архитектуры. Ваш менеджер не должен анализировать каждую строчку написанного вами кода, чтобы оценить вашу производительность.
Впечатления и выводы руководства основываются на их личных наблюдениях. Сума всех их наблюдений формирует представление о вашей продуктивности. И, зачастую, внимание обращается на такие пункты:
- ваше непосредственное общение с руководством (общение 1 на 1, совместная работа над проектом, активное участие в его обсуждении, инициативность)
- посещение тех мест, где вы находитесь, и где видно вашу вовлечённость в рабочий процесс
- демонстрации и презентации, в которых вы участвуете
- общение с людьми, где они пассивно вовлечены. К примеру, email, мессенджеры, и т.д.
- что другие говорят у вас за спиной о вашем вкладе, о вас в целом (да, люди говорят о вас за спиной)
Если вы хотите взять ответственность за вашу траекторию развития карьеры, вы должны научиться правильно представлять свою работу, свои заслуги.
Фраза "представить свою работу" звучит достаточно размыто, и для всех оно может значить что-то своё. Но, для меня лично, это значит передачу важной информации руководству, чтобы они могли составить точную картину вашей работы и по заслугам оценить ваш вклад.
Вы должны адаптировать вашу стратегию представления работы в зависимости от вашей ситуации. А ситуация зависит от многих факторов, таких как ваши личные качества, сильные стороны, личные качества вашего менеджера, ваших коллег, культуры компании и характер вашей работы.
Для меня лично, работают определённые действия, делающие меня более эффективным:
- чёткое объяснение того, какую роль я сыграл в проекте. Самым эффективным местом для этого является общение на встрече 1 на 1, или командной встрече.
- убедитесь, что менеджмент компании знает о любых ваших дополнительных задачах и идеях по собственной инициативе
- не будьте мудаком для своих коллег. Не будьте мудаком впринципе, а не только на работе. Иначе, за вашей спиной коллеги будут отзываться о вас не в самом лучшем свете. Быть мудаком - первое правило по созданию токсичной атмосферы в команде, ухудшению продуктивности работы и общему качеству взаимодействия в команде
- на командной встрече, при обсуждении конечного результата, я спрашиваю мнение коллег, с которыми работал непосредственно. Если я делал свою работу хорошо, и был полезен при работе, они наговорят много положительных вещей обо мне. Мнение других людей обо мне является объективнее, чем собственные восхваления, особенно для окружающих.
И запомните, никогда не распространяйте неверную или ложную информацию при общении с управляющим составом компании, приписывая себе незаслуженные почести. Повышение, полученное подобным способом принесёт вам только краткосрочную выгоду. В один прекрасный день всё тайное станет явным, и вы будете разоблачены. На своём опыте я видел, как такое случалось с некоторым из коллег.
Скилл 2: тайм менеджмент
Как разработчики ПО, у вас есть преимущество в том, что во многом вы сами распоряжаетесь временем, которое вы вольны распределять так, как удобнее вам, в рамках поставленного дедлайна, конечно же. На много больше, чем в других профессиях. Часть этой свободы - это возможность самостоятельно управлять нашим временем в определённой степени.
Управление временем имеется в виду, что мы вольны сами приоритезировать наши задачи. Вначале очень заманчиво работать над захватывающими задачами и игнорировать более важные, но менее интересные.
Очень часто бывают случаи, когда разработчик слишком увлекается более интересной задачей, тратя на неё слишком много времени. В итоге, перед самым дедлайном, понимая, что важные части проекта были забыты и упущены из вида.
Тайм-менеджмент также означает контроль прокрастинации. Как разработчик программного обеспечения, вы можете практиковать просмотр мемов и видео о кошках целыми днями. Подобные действия вызывают панику, когда становится ясно, что предстоит много работы, а сроки кардинально сжались. В результате, паника вызывает постоянное беспокойство, стресс и низкое качество работы.
Другим аспектом тайм-менеджмента является пунктуальность. Поскольку технические встречи редко бывают встречами жизни и смерти, некоторые разработчики делают привычкой опаздывать на встречи, не считая их достаточно важными. Опоздание на встречи на регулярной основе имеет следующие негативные последствия:
- Это раздражает других членов команды.
- Встречи занимают больше времени, потому что всем приходится повторять вам то, что пропустили.
- Это намекает на то, что вы ненадежны.
Тайм-менеджмент - это наука, означает знание, когда можно НЕ работать, не нарушая при этом заданных сроков и не принося вред себе и проекту в целом. Иногда бывают форс-мажорные ситуации, которые вынуждают задерживаться допоздна, чтобы уложиться в важные сроки. Но регулярные переработки и срывание поставленных сроков будет иметь пагубные последствия для нашего здоровья и социальной жизни. И как раз таки этот фактор и показывает ваши проблемы с организацией своего времени и рабочего процесса.
Мы должны знать, когда завершить работу на сегодня и отправиться домой до конца дня. Когда мы не на работе, например, по выходным или в отпуске, мы должны придерживаться дисциплины, избегая работы. Это означает, что не нужно читать электронную почту или кодить «еще одну строку».
При общении на работе очень легко почувствовать давление со стороны сверстников, или чувство вины, что мы не проверяем электронные письма в отпуске. Но мы должны напомнить себе, что перерыв на самом деле улучшает нашу производительность, а не снижает ее. Потому, важно, сохранять определённые рамки: всё что было на работе, остаётся на работе ~почти как в Вегасе~.
Скилл 3: нетворкинг
У меня была возможность получить работу, которую я имею в настоящее время благодаря нетворкингу. Пару лет назад на технической конференции внутри одной компании я поучаствовал в очень увлекательной беседе со спикером. Одно привело к другому, и, в итоге, я начал работать в той же команде, что он.
Знакомство с нужными людьми как внутри, так и снаружи вашей компании имеет огромное влияние на вашу карьеру. Вот некоторые преимущества этого:
- вы получаете лучшие предложения по работе, когда появляется новая вакансия, или возможность новой должности/компании. Ведь все предпочитают работу со знакомым, приятным человеком, чем с "котом в мешке"
- иметь больше контактов для ваших проектов (для совместной взаимовыгодной работы, при поиске клиентов, и т.д.)
- сможете получать помощь от людей, которые формально не обязаны помогать вам
- повышаете шанс пропустить некоторые корпоративные бюрократические процедуры, часто получая возможность договориться "на словах"
- они могут познакомить вас с другими интересными и полезными людьми
Один из способов познакомиться с кем-то новым - это обратиться к коллеге, когда вы сталкиваетесь с их профильной работой. Если вы провели интересную беседу с ним, или прочитали новую статью, вы можете отправить коллеге письмо, чтобы выразить свои честные мысли по этой теме.
Если разговор принимает интересный оборот, вы можете лично встретиться с ним, чтобы спросить, над чем работает его команда в данный момент, или же, пойти на обед, чтобы продолжить обсуждение чего-либо.
Когда я сталкиваюсь с проблемой, которую не могу решить самостоятельно или с помощью тех, кого знаю, я иногда роюсь в интрасети компании, чтобы узнать, работал ли кто-либо еще над подобной проблемой. Если да, то я отправляю "холодное" письмо с просьбой о помощи.
Большую часть времени коллеги отвечали и были более чем рады предложить помощь. Даже если они не могут помочь напрямую, они могут указать вам на человека, который может.
Еще один способ расширить свой круг - попросить познакомить вас с кем-то. Если вы знаете кого-то, кто знает человека, с которым хотели бы познакомиться, вы можете просто попросить своего знакомого представить вас.
Вы также можете получить новые контакты из рабочего досуга. У многих компаний, особенно крупных, есть группы, которые собираются вместе после работы. Я встретил много интересных рабочих контактов, посещая обеды и участвуя в спортивных и развлекательных играх.
Жизненно важно развивать отношения, которые у вас есть. Если вы просто связываетесь с людьми, когда они вам нужны, у них будет впечатление, что вы просто используете их. И они правы. Потому, важно, поддерживать теплые, дружеские отношения, не ограничиваясь только работой.
Мне очень нравится поддерживать связь с людьми, чтобы развивать отношения. Некоторые способы, которыми я обычно делаю это:
- иду на обед, или кофе-брейк вместе с ними
- отправляю им письмо, когда встречаю где-то их имя. Например, при чтении о них в блоге компании или в пресс-релизе
- пересылаю им вещи, с которыми сталкиваюсь, которые относятся непосредственно к ним (часто, вещи несвязанные с работой)
Мне также нравится "перекрестно опылять" мои контакты, представляя их друг другу, когда я вижу такую возможность. Опытным путем я обнаружил, что было бы неплохо спросить обе стороны, заинтересованы ли они, прежде чем я представлю их друг другу. У меня было несколько неудачных случаев, когда одна сторона вообще не была заинтересована в разговоре, и это плохо отражалось на мне.
Скилл 4: восприимчивость
В технологиях восприимчивость является ключевым фактором. Восприимчивость гарантирует нашу способность адаптироваться к динамичному характеру нашей работы: воспримчивость, обучаемость актуальным технологиям и нововведениям профессии.
Одним из аспектов социальной восприимчивости является способность выслушивать мнения и идеи других людей. Если мы правильно выслушаем и поймем, что говорят другие, у нас есть шанс:
- выучить что-то новое
- придумать новые идеи, основанные на идеях других
- более эффективное продвижение задач вперед
- сократить ненужные обсуждения на собраниях
Восприимчивые и внимательные разработчики вступают в дискуссии с целью распространения своих идей и вовлечения в них. Когда другие говорят, они не слушают, они просто ждут своей очереди, чтобы заговорить. Некоторые делают это из-за эго, некоторые из-за упрямства, а другие из-за чистой привычки.
Восприимчивость не означает, что мы должны принимать все, что слышим. Это не значит, что мы становимся неудачниками и вынуждены всё время говорить "да".
Быть непредубежденным означает, что мы можем отложить наше мнение и суждение. Иногда слишком легко скептически относиться к новой идее или новому способу сделать что-то только потому, что мы не знакомы с этим. Это может относиться к новому методу управления проектами, программному инструменту или организационным изменениям.
Вывод
Как и в случае с техническими навыками, нет никакого конца совершенствованию наших мягких навыков. Как разработчики программного обеспечения, мы более технически-ориентированные, и основную базу составляют технические знания. В конце концов, это причина, почему мы выбрали именно этот путь в первую очередь. Именно от твоих личных знаний в области программирования и зависит конечное качество продукта.
Но, мы должны помнить, что пренебрежение мягкими навыками, как вождение автомобиля на дешевых колесах. Было бы невозможно достичь максимального потенциала независимо от того, насколько крут двигатель.
Главная мысль этой статьи - сказать, что совершенное знание теории, обладание большим опытом работы и находчивостью, очень часто - недостаточно для построения успешной карьеры программиста. Существуют и другие, не менее важные, неосязаемые личные навыки, которые могут ускорить ваш карьерный прогресс, если вы уделите им внимание на самом раннем этапе своей карьеры. И в этой статье я написал о том, какие основные soft skills навыки нужно развивать программисту, и как их развивать.
Потому, если вы задаётесь вопросом, как построить действительно успешную и удачную карьеру программиста, и с чего её начать, то, пожалуй, начните с развития soft-skills, и развивайте их наравне с техническими знаниями.
В области программирования технические знания - это необходимый фактор роста как специалиста. Хорошие hard-skill знания - это необходимо, но недостаточно. Для более быстрого карьерного роста обязательно нужно обладать спектром дополнительных навыков, описанных в этой статье.