Soft skills, которые должен иметь каждый разработчик

0
2049
views

Перевод статьи «Soft skills every developer should have».

soft skills, необходимые разработчикам

Несколько недель назад я проводил собеседование с одним человеком, который хочет стать разработчиком. Он был озабочен тем фактом, что недостаточно хорошо подкован в техническом плане, и беспокоился о том, что никогда не сможет достичь нужного уровня. Он спросил меня: «Что делает разработчика хорошим разработчиком, как вы считаете?». И я быстро ответил: «Хороший разработчик должен обладать техническими навыками, тут не поспоришь. Но «хорошим» его делают soft skills».

(Soft skills – «мягкие», «гибкие» навыки – комплекс навыков, не связанных с конкретной профессией, но необходимых для успешной работы. В частности, сюда относятся умения и качества, позволяющие хорошо ладить с людьми, — прим. перев.)

Этот ответ его удивил. Возможно, для кого-то из вас это тоже будет сюрпризом. Но я настаиваю: soft skills важны, даже более важны, чем технические навыки. Потому что, имея правильные soft skills, вы естественным путем приобретете и технические умения. Давайте рассмотрим, что же это за «гибкие» навыки и в чем их значение.

Любознательность и непрерывная учеба

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

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

Любознательность

Терпение и настойчивость

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

(И я не хочу сказать, что все это время нужно провести за написанием кода. Перерывы тоже важны).

Креативность и проактивность

В конечном итоге, решение задач и нахождение новых способов взглянуть на вещи это основа нашего дела. Поэтому для нас важно уметь находить новые решения и смотреть на вещи под необычным углом, чтобы получить другой взгляд на то, как они работают. Улучшая продукты, создавая новые библиотеки или ускоряя работу чего-либо, мы сталкиваемся с новыми сложностями. А решая встающие перед нами задачи, мы совершенствуемся. К тому же – кто знает? – ваш проект вполне может «выстрелить».

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

Например, вы можете предложить создать библиотеку с открытым исходным кодом в качестве части вашего проекта. Это сделает ваш проект (или компанию) более известным в мире open-source. Сами вы при этом покажете себя надежным и проактивным человеком. Единственная оговорка – не следует чрезмерно защищать свою идею и слишком гордиться своими достижениями.

Скромность

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

Если вы чего-то не знаете, это не значит, что вы некомпетентны. Если вы о чем-то спрашиваете, это не признак того, что вы вообще ничего не знаете. И если кто-то знает меньше, чем вы, это не делает вас лучше этого человека. В прошлом декабре Дэн Абрамов составил список того, чего он не знает. Делает ли это его плохим разработчиком? Я так не думаю. Можно быть хорошим разработчиком и не знать многих тем. Главное, чтобы вы разбирались в вашей сфере деятельности и имели правильное отношение к делу.

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

Коммуникативные навыки

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

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

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

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

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

Эмпатия

Я заметил повторяющийся шаблон при появлении новых людей в проекте. Некоторые из них начинают с рефакторинга, и это не лишено смысла. Это хороший способ изучить, как все работает, и при этом принести пользу. Однако, процесс рефакторинга часто превращается в переписывание начального кода в другом стиле. При этом не повышается ни производительность этого кода, ни его читаемость. Такой вид «рефакторинга» обычно сопровождается кучей комментариев в стиле «Что за черт?», «Да кто это написал?», «О, нам надо использовать ххх фреймворк», «Я ничего не понимаю, этот код – говно».

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

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

Готовность помочь и наставничество

Soft skills  - готовность помочь людям

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

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

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

Организованность

Вы бы поручили важное дело кому-нибудь ненадежному? Кому-то, кто постоянно опаздывает? Думаю, что нет, и это целиком логично. Вот и не нужно быть таким человеком. Вы должны быть достойны доверия. Если вы справляетесь со своими задачами вовремя, это означает, что вам можно доверять и давать большую ответственность. А выполнение задач в срок предполагает хорошую организованность. В этом вам помогут to-do приложения, например, Todoist.

Но нужно также уметь говорить «нет». И здесь тоже важны навыки коммуникации. Если вы думаете, что на митинге только время потеряете, особенно с учетом, что вы там и выступать-то не будете, скажите об этом, причем так, чтобы вас поняли. Если брать этот пример, то не следует говорить «Этот митинг бесполезный. У меня есть, чем заняться». Так вы будете выглядеть слишком агрессивно. Вместо этого вы должны показать, что открыты для дискуссии: «Я чувствую, что мое присутствие на этом митинге не обязательно, так что я предпочел бы заняться исправлением того бага. Как думаете?».

Итоги

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

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here