На главную

Гибкие навыки для программистов

01-07-2019

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

Исследование Марселя М. Робле из Университета Восточного Кентукки позволило выделить десять гибких навыков, важных с точки зрения работодателя. Взяв этот список в качестве совы, попробуем натянуть его на глобус — программистов.

Вопросы, которые будут нас интересовать:

  1. Все ли перечисленные навыки актуальны именно для программистов?
  2. Как развивать эти навыки?

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

Общение (Communication)

Устная и письменная речь; умение выступать и слушать (oral, speaking capability, written, presenting, listening).

О развитии личностных черт Большой пятёрки я писал в предыдущей записи.

Вкратце резюмирую.

  1. Черты характера (и связанные с ними гибкие навыки) поддаются коррекции, что продемонстрировали Хадсон, Робертс и Фрейли в исследованиях 2014 и 2015 года.
  2. Полезно предварительно оценить свои позиции с помощью теста. Если вас всё устраивает, не тратьте время на коррекцию.
  3. Оцените время, которое вы потратите на развитие навыка. Если речь идёт о полугоде или годе, овчинка стоит выделки. Если срок больше, имейте в виду, что работоспособность метода не подтверждена на длительных периодах. Ищите команду, где будут востребованы ваши сильные навыки, а слабые навыки будут прикрыты вашими коллегами. В любом случае корректируйте нужные черты характера, но в фоновом режиме, без расчёта на быструю отдачу.

Поиски информации об эффективности методов коррекции вывели нас на когнитивно-поведенческую или когнитивно-бихевиоральную терапию. Слово бихевиоральная используют потому, что аббревиатура КБТ похожа на английскую CBT.

Есть данные о подтверждённой эффективности КБТ, в том числе по сравнению с классическими методами, такими, как психоанализ.

Важно понимать, что КБТ — это метод лечения, который применяют обученные профессионалы. Мы не рассматриваем маргинальные случаи, которые требуют лечения. Нас интересуют методы и подходы, которые мы могли бы применять самостоятельно, не опасаясь повредить что-нибудь в собственной личности.

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

Вежливость (Courtesy)

Хорошие манеры; знание этикета, в том числе делового этикета; обходительность, уважительность (manners, etiquette, business etiquette, gracious, says please and thank you, respectful).

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

Внутри команды определяющее значение имеют традиции: нормально то, что считают нормальным сами программисты.

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

Общаясь во внешней среде, соблюдайте формальную вежливость. Полезно ознакомиться с правилами этикета и следовать им при общении.

Гибкость (Flexibility)

Адаптируемость; готовность к изменениям; непрерывное обучение; принятие нового; подстраиваемость; обучаемость (adaptability, willing to change, lifelong learner, accepts new things, adjusts, teachable).

Обычно программисты достаточно гибки. Даже самые консервативные консерваторы из нас худо-бедно любят осваивать новые технологии и языки. Особенность индустрии в том, что каждые 5–10 лет кардинально возрастает мощность железа, что приводит к смене технологий. Если в конце 80-х программисты массово писали на языке Ассемблера, C и Pascal, то уже с середины 90-х перешли на C++ и Object Pascal. Когда-то для работы с базами данных использовали dBase, FoxBase, Paradox и Clarion, а сейчас стандартном де факто является SQL, и более чем активно в проекты проникают базы NoSQL.

Интернет принёс в нашу жизнь Perl и PHP, а позже Python и Ruby. В корпоративной разработке прочно обосновались Java и C#. Мир продолжает меняться, и мы уже слышим про Rust, Go и Kotlin.

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

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

Целостность (Integrity)

Честность; этичность; морально-нравственные принципы; наличие ценностей; правильность (honest, ethical, high morals, has personal values, does what’s right).

При обсуждении целостности программисты оказались бессильны. Нет у нас уверенности, что взрослого человека можно перевоспитать. Иногда, наверное, проще уволить.

Чем этика отличается от морали? Если вкратце, то обсуждать коллегу за его спиной неэтично, а приставать к коллеге — аморально.

Хорошим подспорьем в деле самовоспитания команды является разумный кодекс поведения (CoC, Code of Conduct), принятый в компании. Прекрасно, когда непосредственный руководитель являет собой пример целостной личности.

Разрушительное влияние на целостность может оказать и компания. Если она занимается сомнительным бизнесом, платит серую зарплату, имеет дурную репутацию в СМИ, трудно требовать от сотрудников этичного поведения.

Межличностные навыки (Interpersonal Skills)

Приятность; представительность; чувство юмора; дружелюбие; забота; чуткость; самоконтроль; терпеливость; общительность; теплота; социальные навыки (nice, personable, sense of humor, friendly, nurturing, empathetic, has self-control, patient, sociability, warmth, social skills).

Обсуждая юмор и дружелюбие, программисты оказались непреклонны: вежливость — не то же самое, что нерешительность, а решительность не равна невежливости. Опытные участники дискуссии заявли, что важно уметь говорить «нет».

Ваше «нет» не всегда будут слышать. Нужна твёрдость, и, может быть, даже упёртость. Только в таких условиях вы сможете проявлять истинную вежливость.

Очень романтично у нас получилось.

Немного конкретики. Для снятия агрессии программисты советуют:

Позитивность (Positive Attitude)

Оптимизм; энтузиазм; бодрость; жизнерадостность; уверенность в себе (optimistic, enthusiastic, encouraging, happy, confident).

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

Пассивная агрессия действительно раздражает. Открытый конфликт лучше.

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

Возможно, сотрудник считает опасной саму ситуацию? Пассивно-агрессивный сотрудник отказывается брать на себя ответственность, но что ему грозит, если он не справится? Переработка? Нагоняй? Штраф? Лишение премии?

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

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

Профессионализм (Professionalism)

Деловой вид; хорошая одежда; приятная внешность; уравновешенность (businesslike, well-dressed, appearance, poised).

Тут у нас возник даже спор. Термин профессионализм очень двоякий именно как название категории. Неужели хорошая одежда сильнее определяет профессионала, чем, скажем, умение брать интегралы? Вспомним, что мы говорим о гибких навыках — предполагается, что они над-профессиональны.

Скорее всего, вместо слова профессионализм надо дать расширенный перевод, что-то вроде профессиональный внешний вид. По крайней мере, здесь имеется в виду именно это.

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

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

Ответственность (Responsibility)

Предсказуемость; надёжность; доведение дел до конца; находчивость; дисциплинированность; желание преуспеть; добросовестность; здравомыслие (accountable, reliable, gets the job done, resourceful, self-disciplined, wants to do well, conscientious, common sense).

Многое об ответственности написано Робертом Мартином в книге «Идеальный программист». В Google Books можно найти её отрывок для ознакомления. Нас интересует глава 2, которая называется „Как сказать «нет»”. Ищите её на странице 35.

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

Позиция необычная, но интересная.

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

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

Командная работа (Teamwork)

Совместная деятельность; умение ладить с людьми; умение соглашаться; готовность оказать поддержку; полезность; сотрудничество (cooperative, gets along with others, agreeable, supportive, helpful, collaborative).

Книга Даниэля Канемана «Думай медленно, решай быстро» (плохой перевод, если вдуматься) помимо прочего рассказывает об эффекте привязки.

Испытуемые в двух группах должны были оценить долю африканских стран в ООН. Первой группе задавали вопрос: «Доля африканских стран в ООН больше или меньше 65%?», а второй — аналогичный вопрос, но с 10% в качестве «якоря».

Числа 65 и 10 были получены в присутствии испытуемых при помощи рулетки с градациями от 0 до 100. В результате оценки в первой группе были значительно выше, чем во второй (медианы 45 и 25 соответственно). Таким образом люди в обеих группах решали «задачу сравнения с навязанным числом» (в данном случае — c 65% и 10%).

Обескураживает, что эффект имеет силу, даже если участники эксперимента о нём знают.

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

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

Пример с эффектом привязки показывает, почему две головы лучше. Практические советы по организации обсуждений можно найти в книге Сэма Кейнера и соавторов «Руководство фасилитатора».

Деловая этика (Work Ethic)

Трудолюбие; готовность к работе; лояльность; инициативность; мотивированность; соблюдение сроков; присутствие на рабочем месте (hard working, willing to work, loyal, initiative, self-motivated, on time, good attendance).

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

Тем важнее становятся другие навыки из списка.

Для борьбы с прокрастинацией и ленью, кроме уже упоминавшейся книги Корин Свит, рекомендую книгу Келли Макгонигал «Сила воли: как развить и укрепить».