Как развить soft skills, если ты программист

Как стать востребованным программистом и получать зарплату выше средней по рынку? Вместе с основателем и CEO школы разработчиков Elbrus Bootcamp Георгием Бабаяном разбираемся, какие социальные навыки отличают хорошего программиста и стимулируют карьерный рост.

Герои «Кремниевой долины» рассматривают перспективу развить мягкие навыки Источник

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

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

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

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

Работа в команде

Повторюсь: все известные нам приложения и сервисы разработаны командами, которые состоят из десятков, сотен или даже тысяч специалистов. Профессионал, который не умеет работать в коллективе, быстро столкнётся с невидимым потолком в карьере.

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

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

Как прокачать

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

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

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

Дисциплина и организованность

Организованность и дисциплина у многих ассоциируются с муштрой и рутиной, но на деле показывают ваше уважение ко времени коллег и заказчиков и делают предсказуемой работу над проектом. Мы стараемся донести до студентов простую мысль: если ты ставишь свои интересы выше интересов группы, от этого страдают все (и ты в том числе).

Чем серьёзней задача, над которой вы работаете, тем дороже обойдётся привычка опаздывать и факапить дедлайны. Избавиться от неё, к сожалению, не так-то просто, особенно если ты вырос в России, где к своему и чужому времени до сих пор относятся довольно легкомысленно.

Помню, каким откровением стала для меня реакция американского друга в ответ на сообщение об опоздании на десять минут: «Прости, Джордж, — сказал он. — Но мне придётся отменить встречу: не могу позволить себе сдвиг в расписании, потому что от него пострадают другие дела».

Особенно дорого могут обойтись пропущенные дедлайны фрилансерам, но и штатные сотрудники, привыкшие работать расслабленно, могут нарваться на штрафы и увольнение.

Как прокачать

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

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

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

Навыки коммуникации

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

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

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

Как прокачать

Навыки общения прокачиваются многократным повторениям. Чтобы учиться писать без мусора и по делу, можно пропускать готовый текст через «Главреда» — он чистит текст от канцеляризмов и другого мусора. И обязательно, обязательно пользуйтесь функцией проверки орфографии! На русском она встроена в большинство текстовых редакторов, с английским здорово помогает Grammarly.

Умение выступать и строить рассказ понятно приходит с опытом выступлений. На защите проектов мы просим ребят представить работу в виде связной истории и задаём наводящие вопросы:

  • В чём была проблема?
  • Как вы её решили?
  • Что было самым сложным?
  • Чем получившееся решение отличается от других?

В итоге получается развёрнутый рассказ: это приложение решает такую-то проблему такой-то аудитории, оно потрясающее, потому что умеет то и это, а ещё никто не мог использовать вот эту технологию, а мы смогли, потому что сделали A и B. Да, в процессе обнаружилось ещё и C, но с этим мы справились вот так.

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

Эмпатия и эмоциональный интеллект

Эмпатия — важный рабочий инструмент программиста. Это умение поставить себя на место другого: коллеги, который будет работать с вашим кодом, пользователя, который зайдёт на сайт. Развитая «эмпатия программиста» помогает писать чистый и рациональный код без экзотических переменных или методов, которые вызовут затруднения у других разработчиков.

Часто среди программистов встречаются «собственники кода»: они ревностно относятся к написанным строчкам и отказываются принимать критику и отвечать за проект целиком. «Мой код хороший, у меня всё работает, ничего не знаю». Так не работает: код — это командная работа, поэтому и отвечать придётся за проект целиком.

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

Как прокачать

Тренируйтесь ставить себя на место другого. Пишите код так, чтобы его можно было понять без вашей подсказки. Если нужно, пишите комментарии. Если комментариев слишком много, пишите документацию (кстати, умение писать документацию — отдельный и весьма ценный навык). Не заставляйте коллег называть вас теми же нехорошими словами, которыми вы поминаете непутёвого автора кода, полученного «по наследству».

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

Лекция о том, почему программисты не любят людей

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

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

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

Решение задач

В английском для этого навыка есть специальный термин “problem solving”, и поверьте, он дорого ценится эйчарами. Умение решать проблемы делает из рядового сотрудника руководителя и незаменимого члена команды.

Как прокачать

Учитесь правильно понимать задачу: убедитесь, что понимаете, что именно ждёт от вас начальник или клиент. Сформулируйте задачу своими словами и начинайте работу, пока не проверите, что заказчик согласен с вашим видением.

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

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

0
18 комментариев
Написать комментарий...
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Василий Петров
> Пишите код так, чтобы его можно было понять без вашей подсказки. 

и при чем здесь soft skills?

Ответить
Развернуть ветку
Антон Васильев

Выборка по моим знакомым-программистам: развивайте soft skills и упрётесь в потолок зарплаты в 250-300К. Развивайте технические навыки - и потолок уйдёт. 

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Bulat Ziganshin

неужели CTO янлекса получает 250К? а веь это чисто менеджерская должность

Ответить
Развернуть ветку
Антон Васильев

СТО Яндекса - не программист. Это другая работа.
По менеждерской ветке конечно можно развиваться. Просто в статье вопрос "как стать востребованным программистом".

Ответить
Развернуть ветку
vic buynoff

Элементарно, Ватсон. Надо кидать понты так, чтобы это понравилось прямым руководителям - лиду и диру. Ну и работу как-нибудь делать, чтобы не придраться.

Ответить
Развернуть ветку
Xieergai

он пишет про программистов, а не про CTO и менеджеров

Ответить
Развернуть ветку
Ринат Г.

Где записаться на курсы эльфов 80ого уровня?

Ответить
Развернуть ветку
vic buynoff

Очевидно, у Леголаса.

Ответить
Развернуть ветку
Антон Васильев

Вы ответили на мой комментарий, но я совсем не понимаю, что вы имели в виду.

Ответить
Развернуть ветку
Владислав Степанов

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

Ответить
Развернуть ветку
Аккаунт отморожен

Когда из тебя обещают сделать разработчика за 10 недель - конечно нужны soft skills 80 lvl чтоб получить хоть какую-то работу.

Ответить
Развернуть ветку
Evgeny Zakharov

Софтскилы безусловно важны - в первую очередь, чтобы не перегореть и не бросить все на фиг от напрягай и усталости! Есть отличный онлайн курс "Эксперт Эмоций", реально начинаешь чувствовать и понимать что к чему и как управлять. Ссылку не оставляю, чтобы не было рекламы. Гуглите, если кому нужно. 

Ответить
Развернуть ветку
Максим Кураков

Курс белорусский? Я что-то только белорусский сайт нашел

Ответить
Развернуть ветку
Evgeny Zakharov

да.

Ответить
Развернуть ветку
Наталья Антонова

Можно тренинги проходить разные. Например в Петербурге есть центр Курсоф, у них есть целый проект по Soft Skills (ссылку не буду оставлять, загуглите), вроде и онлайн дают, точно не знаю. 
Да и вообще много таких. Я сторонник того, что тренинги лучше всего помогают какие-то навыки и качества развивать, самому тяжко) 

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
15 комментариев
Раскрывать всегда