nontech

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

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

Эмпатия

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

Вот как он описывает это понятие: «Эмпатия – это способность влезть в чужую шкуру на время». Это позволяет воспитать в себе умение понимать, что вообще представляет собой продукт, который ты разрабатываешь, и продуктивно общаться каждый день с руководством, коллегами, поставщиками и т.д.

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

  • Учитесь слушать незнакомых людей. Не забывайте интересоваться их планами на ближайшее будущее и время от времени вставлять одобряющие слова вроде «отлично» и «здорово».
  • Ищите возможность пообщаться с конечными пользователями вашего продукта. Можно поговорить с менеджерами по продажам компании и ради эксперимента попробовать себя на «горячих» звонках, где нужно отвечать на конкретные вопросы клиентов.
  • При любой возможности беритесь вести курсы или лекции для студентов. Это еще один отличный инструмент развития эмпатии.

Люди обожают рассказывать о себе. И эту их черту можно эффективно использовать.

Ничего нового. Все то же самое, что сформулировал когда-то проповедник поведенческой психологии Дэйл Карнеги. Но это работает.

В комментариях к этим советам можно почитать несколько жизненных подтверждений этой практики. Например, пользователь xxx превозносит эффект, который получается от правильного упоминания имени собеседника при разговоре. Другие пользователи предлагают чаще интересоваться у своих знакомых планами на выходные, используя это как повод поговорить о забавных и ненавязчивых вещах.

Пользователь nwfunk согласен, что все это чертовски верно, и эмпатия – действительно самый важный навык для технарей. Большинство разработчиков – интроверты и в начале своего профессионального пути игнорируют всех, кто не считает их гениями. Они выбирают место работы, не в последнюю очередь исходя из соображений, что здесь не нужно будет общаться на посторонние темы. Он предлагает смотреть на эмпатию не с точки зрения «ребята, давайте о чем-нибудь поговорим или поделимся своими переживаниями», а с точки зрения интуиции. Интуиции, которая позволяет видеть вещи с позиции других людей. Он называет это нейрологической функцией. Речь не о сглаживании углов в общении или политкорректности и прочих подобных вещах, а о построении эффективных каналов коммуникации. Так проще делать софт, который реально кому-то нужен.

Желание брать ответственность на себя

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

  • Способность коммуницировать с людьми, не знакомыми с тонкостями написания кода.
  • Желание выполнять рутинную организаторскую работу, чтобы повысить продуктивность всей команды.
  • Способность к самоорганизации и желание брать на себя работу и руководство в малой группе.
  • Умение формулировать задачи и отправлять их вовремя для рассмотрения наверх.
  • Желание и способность обучать младших сотрудников.
  • Знание общих принципов организации отрасли: что делается и что продается вокруг.

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

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

«Вы все ошибаетесь, — пишет пользователь tootie: Я знаю лишь одно качество, которое жизненно необходимо старшему разработчику в любой организации. Это умение брать на себя ответственность за решение широкого круга задач и контролировать ход их выполнения с минимальными потерями». Как подбирать ресурсы, заставлять людей следовать указаниям, двигать блоки проекта? Некоторые выполняют эти задачи, придумывая огромное количество кода. Другие – с помощью тщательного документирования и пробуждения в исполнителях их лучших качеств. Главное – не стать человеком, от которого полностью зависит работа коллектива. Это признак дурной компании.

С этим согласен пользователь jwoah12. Под умением брать ответственность на себя он предлагает понимать способность управляться с широким кругом задач самостоятельно, чтобы не пришлось вмешиваться руководителям, стоящим на ранг выше. Он утверждает, что главное различие между обычным разработчиком и старшим разработчиком – это умение формулировать вопросы и находить на них ответы. Говорят, что в китайских IT-компаниях этот скил называется «search IQ». По сути, старший разработчик должен уметь поместить задачу в контекст всего бизнеса компании и потребностей пользователей. Впрочем, мы уже начали повторяться.

Способности прогнозирования

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

  • Генерация идей для новых проектов и проектирование.
  • Понимание того, над чем твоя команда хотела бы поработать. Это помогает соотнести идею нового проекта с реальностью.
  • Умения писать детализированный проект, чтобы облегчить работу с исполнителями.

В общем, смысл в том, что на этой стадии вы выполняете не просто инженерную работу, вы ставите задачи и формулируете подходы.

«Не быть м….ком»

Пользователь onion2k полагает, что все упомянутые в обсуждении нетехнические навыки очень полезны. Но для того чтобы их постичь нужно учиться и практиковаться. То есть отвлекаться от написания кода. Они делают из разработчика обычного менеджера. Если вы хотите все еще писать код, научиться писать его лучше.

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

Но самое удачное, на наш взгляд резюме всей дискуссии о нетехнических навыках старшего разработчика дал в комментариях пользователь clubber:

«Есть два правила успешной работы. Одно дается легко, второе сложнее:

  1. Делать свою работу хорошо.
  2. Не быть м…ком».

Другие интересные статьи в блоге GMS: