25 апреля 2014 в 12:21

Становимся лучше: тернистый путь программиста. Часть 1 перевод

Эта статья — вольный перевод статьи «The hardest and easiest way to be a better coder» портала medium.com.
В ней выражена идея, которую обычно не принято озвучивать в индустрии разработки программ.
Эта идея о том, что программисты тоже люди. Но люди, живущие в культуре, отрицающей эмоции в общении.
Автор отличненько описывает нам важный путь развития. И это совсем не вкачивание технических навыков или GTD.


От переводчика


Внимание! Статья тяжёлая. Рассчитана «на подумать»!
Зачем перевод?
Меня давно интересует вопрос развития продуктивности и собственной личности именно в рамках профессии программиста.
Один из путей — учить инструменты и практики, оттачивать технические навыки.
Но есть еще один путь — путь человека: улучшение коммуникаций, эмоционального интеллекта, социальных отношений — то, что называется «софт скиллз».

В моем кругу мало кто задаётся вопросом «Как прокачать софт скиллз?», потому что эти навыки считаются вторичными.
А я замечаю, что эти умения чуть ли не основные для становления профессионала.

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


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

В первой части раскрывается идея того, что программирование строится на общении.
Вторая часть описывает роль кода как способа общения.
Третья часть расскажет, почему нас бесит углубление в детали или сильное абстрагирование при объяснении нового.
Четвертая часть посвящена тёмной стороне силы — желанию быть злым и вредным.

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



Программирование — это общение


Разминка


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

Компьютеров нет. Интернета тоже.
Кэп намекает, что видеоигр тоже нет. Непостижимо.

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

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

Кровь программирования


Вопреки устоявшемуся мнению, кровь программирования это общение программиста с программистом, а не общение программиста с компьютером.

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

Цель программирования — это определённо решение специфической проблемы пользователя. Где же тут притаилось то самое «общение программиста с программистом»?

Программирование — это непрерывный процесс. Что это значит?

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

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

Деньги — это «кровь» экономики. Это то, что перетекает от одного участника процесса к другому. Это то, что питает сам процесс.

Единственное, что питает процесс программирования — это общение между участниками этого процесса.

Почему программисты недооценивают общение?


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

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

Наплевательское отношение к «хорошим коммуникативным навыкам» стало традицией.

Даже у программистов есть чувства!


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

Представьте себе, что ваш друг говорит: «Я не хочу менять этот код, потому что я прирос к нему душой!». Звучит стрёмно. О таких стрёмных эмоциях открыто не говорят.

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

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

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

Осознание и контроль чувств и эмоций — главная составляющая понятия «эмоциональный интеллект». Интересная тема, советую поизучать.

Что может быть сложнее, чем контролировать собственные эмоции? Ответ прост: уважать чужие эмоции.
Когда мы пытаемся угадать, что чувствует наш собеседник, нам доступно куда меньше информации, чем нашему собеседнику. И иногда непонятно, что хуже: проигнорировать чужие чувства или понять их неправильно.

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

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

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

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

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

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



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

Как вы решаете конфликтные ситуации?
Вызывает ли ваш код какие-либо чувства?
Вы объясняете товарищам причину ваших решений и поведения?

Переводить дальше или ну его?
Перевод: GaarlicBread
Алексей Мигутский @MrMig
карма
69,0
рейтинг 0,0
Пользователь
Похожие публикации
Самое читаемое Разработка

Комментарии (18)

  • +3
    Пока до конца не понятно, о чем речь. Переведите, пожалуйста, еще кусок и/или напишите собственное понимание сути статьи.
    • +2
      Автор, вероятно пытался донести, что программист может стать лучше, если не будет обращать свое развитие только в технической части, но и будет рости как человек социальный, с эмоциями и коммуникациями. Или, что пропасть между двумя «мирами» программиста – социумом и кодом не такая уж большая как кажется. Может такой вопрос стоит упростить до терминов «интроверт» и «экстроверт»? В целом с автором я соглашусь, тк нахожусь в подобной ситуации по роду должности, когда в равных степенях проводишь за кодом, в общении с программистами и просто с коллегами, которые никак не связаны с программированием. Сложно, но интересно.
    • 0
      Полная статья наводит на идею того, что умение общаться и прокачка «коммуникативных навыков», ровно как эмоционального интеллекта и прочих «человеческих» качеств, могут дать для программиста гораздо больше, чем просто знание технических нюансов.

      В целом, статья довольно сумбурная. Я пытаюсь стилизовать её и упростить, но это довольно сложно. Отсюда и разбиение на части.

      В этой части главная идея такая:
      Посмотрите на процесс программирования не как на вбивание кода в редактор, а как на процесс общения между людьми.
  • +5
    Складывается ощущение, что нас воспринимают как роботов с человеческим туловищем.
    Весьма стереотипная статья.
    По поводу «своего» кода — это естесственное состояние. Код — это творение. А творец к своим творениям относится почти как к детям. И это не касается только программирования. Музыка, архитектура, живопись, лепка из пластилина, в конце концов. То, что сделано своими руками — всегда будет хорошим с субъективной точки зрения. Своя рубаха ближе к телу.
    Конфликтные ситуации в спорах или обсуждениях — это нормально. Главное — оставаться человеком. Нахамить — дело не хитрое. А осадок останется у обоих.
    • –1
      Я, к примеру, местами осознаю, какую профессиональную деформацию испытывает мое сознание :)

      Вы с товарищами обсуждаете код на уровне «это мой кусок, я его люблю, руки прочь!»?
      Вам никогда не говорили, что нужно быть серьёзней и вести себя «профессионально»?

      Вы в конфликтах «чувствуете» собеседника? Ставите себя на его место? А при написании кода?
      • +1
        Ваш комментарий выглядит сам по себе очень агрессивно, поэтому я не удивлюсь, что вопросы, адресованные мне, — вам самим не дают покоя. Отвечу на них со своей стороны. В нашем коллективе код обсуждается на уровне «что лучше для конечного результата».
        Тут нет правильных или неправильных решений. И нельзя никогда рубить с плеча и срываться на коллегу. Во-первых, даже из эгоистических побуждений — вам ещё работать вместе, зачем лишние конфликты? Во-вторых, вы в 99% случаев не знаете ситуацию в которой был написан тот или иной участок кода. Поэтому, стоит сначала обратиться к коллеге и выяснить почему сделано именно так, а не иначе. (заметьте, не «почему сделано криво/плохо», а «почему сделано именно так»). Опять же, возвращаясь к своему предыдущему комментарию — главное — оставаться человеком ;)
        • 0
          А поясните пожалуйста, где вы видите агрессию в моем комментарии?
          Вас вопросы смущают?
          • 0
            Сам стек вопросов подобран, как «наезд» :)
            • 0
              Вы меня сейчас конкретно озадачили :)
            • 0
              Не совсем понимаю, на что в вашем сообщении я вообще могу проявлять агрессию.

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

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

              Автор статьи говорит, что мы ведём себя слишком сдержанно и не говорим нашим товарищам «Друг, я понимаю, что тебе не нравится этот кусок кода, но по-мне он просто офигительный!».
              И иногда стоит услышать «руки прочь от моего кода!» для того, чтобы понять, что в команде есть некий конфликт. Куда лучше, чем инуитивно это чувствовать, не так ли?

              Вам никогда не говорили, что нужно быть серьёзней и вести себя «профессионально»?

              Я, к примеру, сталкивался с такой ситуацией не раз, когда старшие товарищи мне говорили «Почему тебя так сильно волнует этот код? Забей. Написал и забыл. Такое отношение — это несерьёзно». Или «Ты инженер или как? Проявление эмоций на работе недопустимо».
              Это и есть отношение к программисту как к роботу — то, что автор и пытается показать. И это крайне деструктивно.

              Вы в конфликтах «чувствуете» собеседника? Ставите себя на его место? А при написании кода?

              А это прямой и честный вопрос. Вы так делаете?
              Если да, то я могу только позавидовать культуре в вашей компании :)

              За свои пять лет работы программистом, в командах я сталкивался в-основном как раз с той культурой, считающей идеальных программистов роботами: он должен радоваться, злости и зависти быть не может, код не приносит эмоций, эмоции — игры для девочек.
              • 0
                Касаемо моей компании — конфликтные люди тут не работают. Это, скорее всего, заслуга как директоров-основателей, так и hr-команды в последствии. Да и ко всему прочему, я работаю в достаточно крупной студии, которая делает игры. Тут негатива попросту нет.
                Возвращаясь к ситуациям решения спорных вопросов — эмоции, конечно же, есть. И, например, если в результате обсуждения какого-либо участка моего кода мы приходим к выводу, что его (участок) — нужно удалить или переписать — я конечно же вздохну и с фразой «нууу, блииин, а я тааак старался! :) » — нажму shift+delete и сяду переписывать. Вопрос отношения и восприятия этого отношения.
                Конечно, две большие разницы:
                1) Ну и кто это тут накодил, аааа?
                2) А может если использовать вот это и вот это, получится ещё лучше, чем сейчас?
                Вот первых вариантов у нас не бывает :)
  • +1
    > Мы притворяемся, что у нас нет стрёмных эмоций: злости и зависти.

    Чтоа? Как заглядываю в чужой код, так злость, ненависть и желание пообрывать руки. И ещё зависть к программистам, которые имеют счастье писать код с нуля, а не разгребать чужое.
    • 0
      Да, но вы эти эмоции демонстрируете товарищам?

      Основная идея в том, что наши коллеги-программисты ждут от нас спокойствия и отрешенности, но никак не всплеска эмоций типа «Что это за говно тут написано!?»
      • 0
        Ничего они не ждут. То есть совсем.
        Как я понял статью, она как раз про то, что надо задумываться о чём-то большем, чем «но ведь работает же», чтобы уменьшить количество ненависти от коллег. Но далеко не все этим утруждаются.

        Давайте продолжение уже! =)
  • +4
    основная проблема автора — это отказ признать мысль, что «программисты такие же люди, как и мы».
    • 0
      Видимо, я очень плохо перевёл статью :)
      В этой части как раз и подаётся мысль, что программисты — тоже люди. И у них есть чувства, с которыми нужно считаться. А для этого нужно учиться о чувствах говорить и уметь их контролировать.
  • +1
    Переводите дальше.
  • 0
    Интересно наблюдать за тем, как в коментариях строиться наглядный пример того, что изложено в посте.

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