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

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

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

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

Во время проверки кода я вижу себя равным другим разработчикам. (На самом деле, мы всегда называли их коллегиальными проверками кода. Любой член команды может проверять чужой код. Хотя я просматриваю очень много кода, это потому, что я часто могу сделать это в перерывах между встречами, а что нет.) Это Разработчик сказал мне, что он считает мое одобрение своего кода обязательным, хотя это не является политикой, и было сказано много раз, что он может попросить любого члена команды просмотреть его код.

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

Я вижу свою управленческую роль как поддерживающую роль команды, делая все возможное, чтобы они могли добиться успеха в том, что они делают. Такая же ситуация во всей компании. Мы призываем сотрудников общаться с кем угодно (нет необходимости проходить «цепочку подчинения»), мы предоставляем все необходимое обучение, и почти все восприимчивы к обратной связи, положительной или отрицательной. Я смотрю на вещи объективно и стараюсь предлагать четкие решения четких проблем. Этот разработчик, по-видимому, смотрит на вещи с межличностной точки зрения и сосредоточен на определении основных мотивов каждого, а не на текущей работе.

Я надеюсь, что это дает достаточно информации, чтобы установить сцену. Если нет, попросите разъяснений. Мои вопросы:

  • Как я могу предоставить отзыв этому разработчику таким образом, чтобы этот человек воспринял его таким, какой он есть на самом деле... отзыв, а не личные нападки?
  • Я, конечно, могу снизить свои ожидания, но я считаю, что это плохая услуга для разработчика и компании. Я прав в этом? (Ни у кого из других разработчиков в команде ни в прошлом, ни в настоящем не было подобной проблемы.)
  • Мой менеджер также работал с этим разработчиком напрямую и не смог дать много советов. Он сказал мне, чтобы я тратил большую часть своего времени на моих лучших сотрудников. Хотя я думаю, что этот совет применим, я действительно хочу помочь этому одному разработчику, поскольку я верю, что он способен на хорошую работу, если бы у него была другая точка зрения. Я понимаю, что из этого поста сложно составить полную картину, но так ли безвыходна ситуация? Должен ли я снизить ожидания от этого одного разработчика, сделать для него минимум и уделять больше времени наставничеству других разработчиков?
Могли бы вы сказать, что разработчик считает код своим детищем и хочет его защитить? Это может быть проблема зрелости или взгляд на вещи в другом свете, но сначала потребуются некоторые подробности.
@JBKing В данном случае нет. Проекты, над которыми работает этот разработчик, принадлежат подгруппе из 3 человек. Он всегда сотрудничал с другими разработчиками. Мы передаем работу в команду по мере необходимости, а также чтобы убедиться, что у всех нас есть опыт в различных областях. Этот разработчик искренне приветствовал командный подход. Я также не считаю, что это вопрос зрелости. Этот разработчик, как правило, профессионал, и, хотя он новичок в веб-разработке, ранее имел долгую карьеру в другой отрасли.
Отмечаете ли вы некритические предложения как гниды?

Ответы (5)

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

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

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

Итак, убедитесь, что вы объясняете, почему что- то не так. Некоторые люди (особенно программисты) ненавидят слепо следовать указаниям, даже для их же блага. Убедитесь, что вы даете им возможность высказать свое мнение — прямо попросите об этом. Без такого рода «туда-сюда» указание кому-то, как писать код, может быть воспринято как микроуправление. Обычно это микроменеджмент. Наконец, укажите и на хорошие вещи. Вы упоминаете, что разработчик стал лучше, но если вы не сообщите об этом, они могут плохо вас воспринять.

О, и особенно для начинающих, важно объяснить преимущества процесса проверки кода. Это не просто свалка на n00b-фестивале. Это нужно для того, чтобы сократить количество ошибок, которые раздражают и требуют больших затрат на исправление позже в процессе.

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

Это зависит. Если их роль — роль с более низкой ответственностью, то ваши ожидания должны соответствовать этой роли.

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

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

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

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

Кроме того, вы только указываете на проблемы в обзоре или вы также выделяете то, что сделано хорошо и что другие разработчики могут захотеть включить в то, что они делают? Вы не должны говорить что-то хорошее, что не является таковым, но конструктивную критику легче проглотить ложкой признательности. Я знаю, что как инженер я должен прилагать сознательные усилия, чтобы выразить свою признательность за что-то хорошо сделанное, указывая на проблемы так же естественно, как дышать.
@ColleenV - я упомянул об этом в конце второго абзаца без отказа от ответственности? Было непонятно?
Извините, я, должно быть, пропустил это, пытаясь пролистать на своем мобильном телефоне. Я полностью согласен с вашим ответом, и particularly when I am reviewing itвопрос в вопросе заставляет меня поверить, что большее признание того, что разработчик делает правильно, было бы большим шагом к улучшению качества обзоров, поэтому я хотел это подчеркнуть. Я интуитивно чувствую, что менее опытный разработчик очень уважает менеджера и хочет произвести на него впечатление, но у него есть некоторые проблемы со зрелостью, и он расстраивается, когда не получает более бурного положительного подкрепления, чем «ты становишься лучше». ".
Отличный совет, спасибо за отзыв. В обзорах кода я указываю на то, что разработчики делают хорошо, но, по общему признанию, это только в исключительных случаях. На моих регулярных встречах один на один с этим разработчиком регулярно хвалят его работу, а также предлагают возможности для улучшения. То же самое для официальных встреч. Я согласен, однако, что обзоры кода могли бы быть гораздо большим разговором. С другими разработчиками да, но мне нужно приложить больше усилий, чтобы получить информацию от этого разработчика. Еще раз спасибо за ваш отличный вклад!
@candied_orange - я не уверен, что тряпка имеет здесь такое значение, но я понял - редактирование.

Критика

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

Нет ничего Неправильного, плохого, ужасного, худшего и т.

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

Плохой пример :

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

Почему? Вы хорошо указали что, но вы рискуете заставить Боба защищаться, и вы не объяснили ему, почему. По сути, вы сказали: «Вы пишете ужасный код» с точки зрения Боба.

Хорошо пример :

Привет, Боб, я просматривал этот метод контроллера, который ты написал. Я думаю, было бы лучше, если бы мы обращались к базе данных через отдельный репозиторий, чтобы предотвратить SQL-инъекцию.

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

Хороший пример :

Привет, Боб, я просматривал этот метод контроллера. Я беспокоюсь, что это может быть SQL-инъекция; как вы думаете, имеет ли смысл обращаться к базе данных через отдельный репозиторий, чтобы предотвратить это?

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

Честность лучшая политика

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

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

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

Когда вы нажмете на то место, которое имеет некоторый запах кода, вы скажете: «Хммм… это работает, вы не рассматривали возможность сделать это оператором case Switch? Я беспокоюсь, если мы решим добавить больше значений, это может стать загроможденным».

В этом случае вы не сказали: «Эй, Боб, эти четыре варианта «иначе-если» — беспорядок», вы выразили это как озабоченность, над которой вы оба работаете, и спрашиваете его мнение. Это действительно может помочь, поскольку вы не указываете пальцами на свое сотрудничество. (хотя вы эффективно подталкиваете его к тому, чего хотите, вы также объясняете ему, почему, и помогаете ему обдумать это)

Спасибо за этот замечательный совет и напоминание о важности объяснений. Ваши комментарии заставили меня понять, что я не так подробно объясняю вещи, как когда-то. Частично это связано с тем, что я сталкивался с некоторыми из тех же проблем в прошлых проверках кода, но теперь я понимаю, что мои первоначальные комментарии были написаны несколько недель назад, возможно, не были запомнены и явно не дошли до меня, иначе они бы не была проблема. Еще раз спасибо!
В любое время я сам провожу тонны код-ревью. Ожидайте, что они будут немного повторяться время от времени. (Старые привычки умирают с трудом)

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

Другими словами: «Я не менеджер, я сотрудник службы поддержки».

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

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

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

Значит, вы им не ровесник; вы их менеджер, и иногда вам нужно напоминать им (и себе) об этом факте.

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

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

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

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

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

Несколько принципов, которые должны принять все рецензенты немедленно:

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

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

Со временем, надеюсь, должно быть улучшение.

И только что заметил, что этой ветке 7 лет, и она была поднята всего несколько часов назад. Примите мои искренние извинения за некропостинг по этой причине, буду более бдителен, чтобы не делать этого снова.
«больше нет» подразумевает, что в настоящее время такое поведение существует. Однако в вопросе нет никаких доказательств этого.
@nvoigt Нет явных доказательств этого, верно. Но тот факт, что реакции просматриваемых разработчиков иногда доходят до откровенного гнева, подсказывает мне, что по крайней мере некоторые из этих поведений имеют место, и дает мне разумное основание предположить, что это проблема, которую необходимо решить в команде OP.