Я руководитель небольшой команды разработчиков (5 инженеров, включая меня).
Несколько месяцев назад по предложению другого коллеги мы ввели обязательное форматирование кода в базу кода, для нашего основного проекта. Наш проект написан на Python, а инструмент форматирования black
(наверное, не актуален).
Я нахожу ценность в одинаковом «внешнем виде» кода во всех файлах проекта, для меня это часть обеспечения качества для всего проекта. Запросы на слияние кода должны быть отформатированы с помощью инструмента, иначе они не могут быть добавлены в программное обеспечение.
С тех пор коллега всегда жалуется и выражает несогласие с этим решением при каждом удобном случае.
Как бы вы поступили в такой ситуации?
Что бы вы ответили на «форматирование кода — полная ерунда» , «это как цвета, кому-то нравится красный, кому-то синий, вот и все» , «оно ограничивает мою свободу» , «оно усложняет чтение кода, не добавляя никакой ценности» и т. д. ?
Честно говоря, моя реакция была бы следующей:
Боб, я ценю обратную связь, но как команда мы решили использовать Black в качестве обязательного инструмента форматирования кода, и это решение является окончательным. Я понимаю, что это не ваше личное предпочтение, но боюсь, вам придется научиться с этим работать.
А если бы я хотел вступить в дискуссию?
"форматирование кода - полная ерунда"
Это не очень конструктивный отзыв, можно поконкретнее?
"это как цвета, кому-то нравится красный, кому-то синий, вот и все"
Конечно, но стандартизация этих «цветов» очень полезна, и нам пришлось выбрать один!
"это уменьшает мою свободу"
Как и согласие писать код на том же языке и версии этого языка, но можете ли вы представить себе хаос, если бы мы этого не сделали?
«это делает код более сложным для чтения без добавления ценности»
Это не правда. Через некоторое время после прочтения кода в этом формате его вообще не будет сложнее читать — на самом деле его будет проще читать (добавленная ценность), потому что вам нужно будет изучить только один стиль для всего проекта. Кроме того, это означает, что PR-менеджерам намного удобнее читать различия, мы можем подключать других разработчиков и быстрее настраивать их, а разработчики не будут зацикливаться на том, какое форматирование может выглядеть немного красивее в данной ситуации.
Чтобы было ясно, если его отзыв был конструктивным , скажем о формате: «Я не думаю, что Блэк полезен для нас по причинам x, y и z, поскольку большая часть нашего кода следует стилю кодирования bc, с которым Блэк плохо справляется, рассматривали ли вы (другой инструмент) вместо этого», то это совсем другой сценарий. Именно тогда вы должны приложить все усилия, чтобы участвовать в обсуждении, чтобы подтвердить его опасения, и работать с ним над их решением.
but I'm afraid that if you want to stay in this team
В моей голове я мог бы подумать об этом, но я бы определенно не сказал об этом таким образом, по крайней мере, в начале. Этот парень кажется человеком, который может быстро обостриться, и эта формулировка, вероятно, заставит его обостриться быстрее. Я бы сказал что-то вроде: «Я понимаю, что это не твое личное предпочтение, но я должен был сделать выбор за команду, и это все». Я думаю, что общая цель состоит в том, чтобы помочь всем понять преимущества и присоединиться к группе. Если он продолжит бунтовать, то вы заговорите.but as a team we've decided that we're using Black as our mandatory code formatting tool
, ОП никогда не заявлял, что это было командное решение.Как бы вы поступили в такой ситуации?
После приятного утешения, что вы уже сделали, пришло время твердо сказать им, чтобы они с этим разобрались . Это не индивидуальный кодекс, а код компании. Как менеджеру вам нужно, чтобы код был как можно более удобным для поддержки вашей командой, а в будущем вы должны внести новые дополнения в команду.
"форматирование кода - это полный б***ь хит"
Поскольку я сам кодер, в компаниях, в которых я участвовал, соблюдаются некоторые стандарты форматирования. Как ведущий разработчик, я действительно ожидал бы, что они будут поклонниками.
"это как цвета, кому-то нравится красный, кому-то синий, вот и все"
Как ваш менеджер , я люблю красный цвет, смиритесь с этим.
"это уменьшает мою свободу"
Форматирование кода не влияет на свободу создания элегантного решения. Я звоню в BS по этому поводу, и вы тоже должны.
«это делает код более сложным для чтения без добавления ценности»
Эммм нет. Это на самом деле заставляет меня задаться вопросом, действительно ли ваш ведущий разработчик вообще является ведущим ....
Повторюсь — вы установили стандарт, как менеджер или команда это не имеет значения. Ведущий должен принять это или, возможно, двигаться дальше .
Я бы попытался убедить его в положительных эффектах единообразного форматирования кода. Дифференциалы Git становятся намного проще для восприятия, когда коммиты n и коммиты n+1 имеют одинаковое форматирование. Сопровождение упрощается, если форматировщик применяет передовые методы. В конце концов, разработка корпоративного программного обеспечения — это командный вид спорта.
Если ваш форматировщик кода позволяет определять правила, спросите его, есть ли определенные правила, которые ему не нравятся, и рассмотрите возможность обсуждения их с вашей командой.
Как бы вы поступили в такой ситуации?
Я бы попытался понять точку зрения непокорных разработчиков. У них могут быть хорошие доводы, которые я игнорирую.
Мы внедрили автоматическое форматирование в нашу кодовую базу несколько лет назад, и это вызвало множество проблем, частично из-за того, как оно было введено, но в основном из-за того, как оно повлияло на наш рабочий процесс. Это вызвало так много дополнительной работы по исправлению конфликтов слияния, что в конце концов мы отключили многие аспекты автоматического форматирования, поэтому оно автоматически исправляло только те вещи, которые не создавали больше проблем, чем решали. Мы также прошлись по всем настройкам и включили только те, с которыми все согласились.
Одна из проблем с автоматическим форматированием заключается не только в том, что оно «стандартизирует» плохое форматирование, но и в том, что оно «стандартизирует» хорошее форматирование.
Автоформатер не может отличить случайно добавленный двойной пробел от двойного пробела, добавленного для выравнивания элемента в одной строке с элементом другой строки. Эта визуальная ассоциация может значительно облегчить чтение кода, поскольку может быть гораздо более очевидно, что две вещи в двух строках связаны между собой.
Если вы собираетесь внедрить автоматическое форматирование, вам нужно, чтобы в этом участвовала вся команда.
Вам нужно применить форматирование глобально, в ветке, и объединиться в этой ветке только после того, как у всех будет возможность просмотреть влияние, которое оно оказывает на их рабочий процесс, высказать свои возражения и согласовать дальнейшие действия.
Большинство людей купились бы на автоматическое удаление пробелов с концов строки, мало кто хотел бы, чтобы их тщательное ручное разделение строк для удобства чтения было бездумно повторно разделено на бессвязный беспорядок, который производят многие инструменты автоматического форматирования.
Я подозреваю, что этот разработчик расстроен, потому что они гордятся своей работой, потратили много времени на то, чтобы сделать свой код как можно более читабельным и удобным для сопровождения, и это автоматическое переформатирование уничтожило все их тщательно созданное форматирование.
Несмотря на то, что синтаксис Python уже предъявляет ряд требований к форматированию, он по-прежнему оставляет большую свободу для отдельного разработчика.
Суммируя. Прислушайтесь к возражениям ваших разработчиков, возможно, вы сможете улучшить кодовую базу для всех. Как говорится в PEP 8, в Руководстве по стилю кода Python.
Глупое постоянство — это хобгоблин маленьких умов
Он находится прямо в верхней части руководства по очень веской причине.
Принимая во внимание комментарий jrh , иногда смеются над людьми, которые описывают программирование как «скорее искусство, чем науку», но я не согласен, когда дело доходит до аспектов программирования, связанных с программированием. Программы не просто разговаривают с компилятором/интерпретатором, они разговаривают с программистами, которым, возможно, придется исправлять, улучшать или поддерживать этот код в будущем.
Что касается комментария VGR , я не думаю, что это хорошее место для критики черного цвета . Я не использовал этот инструмент, но, читая описание, я вижу в нем в основном хорошие вещи, особенно для долгосрочного обслуживания и дифференцируемости (проклятие сложных слияний).
Однако это не поможет, если вся команда не согласится на использование такого строгого и бескомпромиссного автоматического форматирования.
Если бы у меня была пекарня, я мог бы захотеть, чтобы мои пекари использовали буханки стандартного размера. Например, это упрощает покупку пакетов для хлеба. У меня может быть постоянная цена на хлеб, который я делаю.
Моим пекарям может показаться, что это ограничивает их творческий потенциал. Некоторым может понравиться испечь очень маленькие или очень высокие буханки хлеба.
Другим пекарям может показаться, что они предпочитают буханку гораздо большего размера.
Это не означает, что нет веских причин для установления стандарта.
Однако некоторые пекари могут указать, что запрошенный размер буханки не поместится в духовке. Я был бы очень разумным владельцем пекарни, если бы слушал этих пекарей.
Член вашей команды уже соответствует целому ряду стандартов, которые могут ограничивать его творческий потенциал и противоречить его предпочтениям. Это связано с работой в команде. Это не означает, что вы не должны устанавливать стандарты, но, вероятно, разумно разрешать и поощрять конструктивную, ненавязчивую обратную связь.
"форматирование кода - полная ерунда"
Даже если это имело смысл (а это не так), подобные черно-белые утверждения часто намекают на очень незрелое понимание :
Нам нужны профессиональные и конструктивные мнения, а не фанатичные аксиомы.
«это как цвета, кому-то нравится красный, кому-то синий, вот и все» / «это ограничивает мою свободу»
Нет, это не похоже на цвета. Речь идет о читабельности и общих стандартах .
Люди, делающие эту жалобу, идут по эгоистичному пути и не осознают дополнительную ценность общих стандартов в работе с кодом и, прежде всего, в понимании кода других людей и в том, чтобы заставить их понять ваш.
Напротив, тот факт, что у каждого свои предпочтения, как раз и является причиной того, что у вас должны быть стандарты кодирования, от комментариев до именования и форматирования.
Жертвовать своими «личными предпочтениями» часто приходится ради большего блага, хорошая командная работа — это компромисс для достижения наилучшего результата.
Представьте, если:
Это сбивает с толку и утомляет, потому что вашему мозгу приходится адаптироваться к разным стилям и постоянно переключаться между ними . С одним общим стандартом вам достаточно один раз адаптироваться . В общих проектах, даже если они с открытым исходным кодом , вы применяете стандарты по очень веским причинам.
А что, если они редактируют один и тот же файл/класс? Придет ли это к разным стилям кодирования?
«это делает код более сложным для чтения без добавления ценности»
Думаю, того, что я изложил выше, достаточно в качестве ответа на эту полнейшую чепуху.
Изменить: пожалуйста, посмотрите также на ответ @nitarshs , он дает еще один интересный угол с точки зрения групповой психологии, который мне показался интересным.
Возможно, основная причина проблемы связана не с форматированием кода, а с чем-то другим ?
По моему опыту, эта ситуация ясно показывает, что несогласный человек не выразил себя зрелым и рациональным образом, независимо от того, правы они или нет.
Я не уверен, как долго этот человек был с вами и командой, но я действительно думаю, что вы должны лучше знать характер этого человека, чтобы знать, как справляться с такими ситуациями.
Я заметил, что даже рациональные люди ведут себя иррационально, когда их что-то не устраивает. Даже они могут не знать истинной причины своего раздражения.
Или просто возможно, что человек незрелый по своей природе, и в этом случае вы можете игнорировать его, пока он выполняет свою часть работы должным образом.
Может быть, пригласить их выпить/поужинать и уделить им немного внимания и заботы. Вы должны открыться им и позволить им открыться вам. Постарайтесь лучше узнать своих товарищей по команде и пусть они лучше узнают вас и остальную часть команды.
Дело вовсе не в форматировании кода. Это худшая из возможных форм микроменеджмента. Всякий раз, когда совершается коммит, глупый бездумный микроменеджер изменяет код глупым микроуправлением. И этот разработчик в бешенстве. (Кажется, некоторые этого не поняли — когда я говорю «микроменеджер», я имею в виду инструмент форматирования кода).
Ваш выигрыш и выигрыш ваших команд от всего этого неотличим от нуля. Ваша потеря в том, что у вас были споры, вы зря потратили время и разозлили кого-то, кто до сих пор был приличным разработчиком. В лучшем случае вы потеряете его поддержку и участие. В худшем случае вы полностью потеряете ценного члена команды.
Просто выключите инструмент и покончите с этим. Это нанесло и нанесет больше вреда, чем оно того стоит. Просто решите: вы хотите показать, что у вас есть самый большой xxxx, которым можно помахать, или вам нужна команда, которая счастлива и выполняет свою работу?
Это не касается форматирования кода. Речь идет о том, чтобы быть хорошим и эффективным менеджером и обеспечивать выполнение принятого вами решения о том, как работает команда, что, как вы сказали, считается и, вероятно, пойдет на пользу команде в целом.
Я думаю, что проблема лучше всего проиллюстрирована удалением деталей из вашего вопроса:
Я руководитель небольшой команды разработчиков
-- Я принял решение о том, как мы будем работать --
С тех пор коллега всегда жалуется и выражает несогласие с этим решением
Это проблема людей - трудная часть работы менеджера. Заманчиво попытаться обратиться к содержанию жалоб, потому что это знакомая, удобная территория и с ними можно поспорить в некотором роде объективно.
Но не поддавайтесь этому искушению, потому что на самом деле вам нужно прямо и недвусмысленно сказать этому члену команды, что он должен принять решение и прекратить его обсуждение.
Это личное, это неудобно, но это часть работы, и это то, что остальная часть команды хочет и ожидает от вас, уверяю вас.
Несколько месяцев назад по предложению другого коллеги мы ввели в кодовую базу обязательное форматирование кода.
С тех пор коллега всегда жалуется и выражает несогласие с этим решением
Основная проблема заключается не в решении как таковом, а в том, что мнение этого коллеги не было учтено при принятии решения, которое сильно влияет на них. Это как следует обсуждалось, тщательно взвешивались все плюсы и минусы (это касается и автоматической части правоприменения) или вы просто приняли решение в одностороннем порядке, "потому что лично мне это нравится"? Практика показывает, что человек гораздо более склонен защищать групповое решение, если чувствует, что его мнение было услышано и учтено, даже если оно не вошло в решение в итоге.
На самом деле люди уходят из команд. Использование подобных стилей облегчает другому человеку возможность взяться за проект в будущем и понять фактический контент вместо того, чтобы говорить время, разбираясь в его форматировании.
Попробуйте ответить положительно на их использование. Например, «программы форматирования кода — это бред», «ну, может быть проще найти простые ошибки в коде, когда вы знаете, как он должен выглядеть» и т. д. Еще лучше, если они могут иметь прямое отношение к вашему проекту/команде.
Если бы в команде было больше одного члена, я бы предложил провести встречу, на которой объяснялось бы, почему используется этот инструмент форматирования, какую пользу он приносит и почему так важно, чтобы ваши разработчики использовали его. Людям не нравятся перемены, когда они не понимают их причин.
Далеко не полный ответ, но здесь есть один момент, который мне бросается в глаза. Форматирование кода в ваших коммитах никоим образом не должно совпадать с форматированием кода, используемым в IDE разработчика, пока они работают с локальной копией репозитория. Я не знаю, чтобы я когда-либо работал над совместным проектом, где код каждого разработчика не был бы отформатирован именно так, как они хотели. Применение форматирования при фиксации достаточно легко настроить с помощью git hooks .
Я нахожу большую разницу между настаиванием на хорошо отформатированном коде и автоматическим форматированием, навязываемым при регистрации.
На моей работе у нас есть своего рода мандат на форматирование кода, который загружается в IDE, но когда дела идут очень плохо, мы действительно можем что-то с этим поделать, потому что никто не будет пытаться повторно применить его во время фиксации .
Я готов поверить, что у вас есть реальная проблема в том, что ведущий разработчик намеренно делает вещи так, чтобы их было труднее подобрать, но вполне возможно, что на самом деле здесь происходит то, что автоформатер искажает отформатированные вручную блоки, где язык был преобразован во что-то другое, и поэтому ему нужен другой формат, соответствующий структуре, которую он имеет на самом деле, а не тому, что, по мнению синтаксического анализатора, он имеет.
Эти случаи не отличимы от вашего поста. В зависимости от того, что происходит, вы можете или не можете поговорить с другими разработчиками и выяснить, что это такое. Однако остерегайтесь позиции «Я считаю, что так лучше, потому что так считает босс»; это не будет говориться с вами, но я видел, как это падало раньше.
На самом деле возможно, что у всех есть проблемы с этим, и они все позволяют этому парню быть их представителем. Может быть, вы можете узнать.
Но при должной осмотрительности, если вы обнаружите, что он находится на грани власти, пришло время избавиться от него.
У вас откровенный разговор о том, что означает слово "профессионализм".
Ваш «ведущий разработчик» ведет себя как надутый ребенок. Он/она может обладать техническими навыками лидера, но ему явно не хватает профессиональных навыков лидера. Речь идет не только о написании кода: технические навыки являются необходимым , но недостаточным условием для этой должности. Быть ведущим означает, по крайней мере для меня, понимать, что дело не в тебе . Это не означает, что вы не ведете переговоры и не защищаете себя, это означает , что вы не устраиваете истерику по поводу того, что является передовой отраслевой практикой, даже если в частном порядке вы считаете это чушью (смотрите на вас, JIRA ).
Я бы начал с того, что ему/ей нужно преодолеть это дипломатическим путем, затем перешел бы к недипломатическим высказываниям, а затем перешел бы к PIP. Вы уже потратили слишком много своего драгоценного времени на чужую истерику.
Один комментатор правильно отмечает, что авторитет технического руководителя мог быть несправедливо подорван, что вызвало недовольство. Хотя я, конечно, согласен, что это может иметь место, публичное ворчание по поводу инструмента является непрофессиональной и неприемлемой реакцией на ситуацию . О подрыве следует говорить напрямую и в частном порядке .
В конечном счете, как уже говорилось в других ответах, как менеджер вы имеете право просто применять стиль кода, и если кому-то это не нравится, они могут уйти. Тем не менее, это, вероятно, не очень хорошо для морального духа или вовлеченности, и сотрудник, который неохотно переводит свой круглый код в квадратный стиль, вероятно, не будет счастливым или продуктивным.
В связи с этим вам, вероятно, лучше всего будет убедить их в том, что наличие единообразного стиля в кодовой базе полезно. Некоторые ответы уже представили некоторые моменты, но есть статьи и фактически целые книги, доказывающие в пользу. Они правы в том, что это похоже на цвета — у каждого есть любимый цвет, но если бы каждый разработчик пользовательского интерфейса, работающий над проектом, просто выбрал свой любимый цвет для дизайна, конечный продукт выглядел бы совсем не очень хорошо.
Пара хороших статей, которые я только что нашел с помощью быстрого поиска:
Я собираюсь предположить, что ваши представления комментариев вашего ведущего разработчика точны.
Это не комментарии компетентного ведущего разработчика. Я говорю это как опытный программист и менеджер инженеров-программистов.
Обратная связь неконструктивна и крайне неверна. Ведущий разработчик, который не понимает ценности стандартов форматирования, — это ведущий разработчик, который не понимает динамики совместной разработки.
Вполне возможно, что у них есть законные и действенные опасения, и я бы начал с этой точки зрения. Вы их менеджер; помогите им хорошо выполнять свою работу.
Во-первых, в частном порядке сообщите им об их дерьмовых отзывах. Они плохо делают свою работу, если только хныкают.
Затем продемонстрируйте, что вы открыты для действенных отзывов о том, как улучшить реализацию стандартов кодирования, если они есть у вашего разработчика. Если им нужно время, чтобы понять, как лучше сформулировать это, дайте им его.
Если у них нет ничего конкретного, то скажите им, чтобы они взялись за программу и перестали скулить. Это не просто непродуктивно. Это вредно для команды.
Вы также должны начать обращать внимание на их работу в качестве лидера команды в целом. Они на самом деле обеспечивают лидерство другим членам команды или они просто люди, которые работают дольше всех? Такие люди действительно могут подорвать продуктивность команды, если они просто действуют как привратник к росту (что и делает этот человек прямо сейчас).
С прагматической точки зрения, я люблю форматирование кода просто потому, что оно значительно упрощает сравнение кода. Это также значительно упростит отправку, поскольку, если все используют один и тот же форматировщик кода, то, в принципе, добавление глупого несущественного изменения в файл не приведет к тому, что git подумает, что код изменился.
Лично я не в восторге от того, как выглядит код, но преимущества, описанные выше, более чем помогают мне не обращать на это внимания.
Многие другие ответы обсуждают, стоит ли форматирование кода того или нет. Это совершенно не имеет отношения к этому вопросу.
Речь идет об общении, а не о том, чтобы убедить его в том, что стандартизированное форматирование кода — это здорово. Сделать шаг назад. Что вам нужно для общения:
Этот дополнительный бит информации позволит им увидеть вещи с вашей точки зрения, чего часто бывает достаточно, чтобы их успокоить. Вторая часть (измерение успеха) необходима, чтобы продемонстрировать, что вы на самом деле вкладываете в это некоторые мысли и помогаете им доверять вам. Это также позволяет им найти альтернативы или модификации политики, которые удовлетворят как ваши, так и их запросы.
Если это не поможет, есть два основных способа справиться с сотрудниками, которые не согласны с изменением политики:
*Речь идет не о списке преимуществ, а о вашей мотивации для внедрения изменений. Может быть, вы хотите расширить возможности команды, и именно поэтому вы попросили команду определить стандарты кода и форматирование. Может быть, вы только что реализовали предложение сверху. Возможно, вы планируете несколько изменений в автоматизации и/или анализе, которые выиграют от стандартизированного форматирования. Может быть, вы хотите использовать стандартизированное форматирование, чтобы лучше продавать свою команду вышестоящим руководителям. Возможно, вы навязали стандартизированное форматирование просто потому, что оно вам нравится.
форматирование кода полная ерунда
Это можно легко опровергнуть, взяв пример кода (неизвестный разработчику), удалив все новые строки, табуляции и сократив несколько пробелов до одиночных, и попросив сотрудника рассказать вам, что делает этот код.
это как цвета, кому-то нравится красный, кому-то синий, вот и все
Ага. Это относится практически к любому спору о программировании. Табуляции и пробелы, скобки в стиле C или египетские скобки... Но ответ всегда один и тот же: кому-то нравится левостороннее движение, кому-то правостороннее. Любое из них прекрасно, но одновременное допущение того и другого ведет к безумию.
Или, если очень хочется использовать его аналогию против него самого: но сочетание синего и красного дает фиолетовый, а это значит, что никто не получает того, что хочет.
Было принято исполнительное решение, чтобы выбрать этот формат. Ваш сотрудник не имеет права пренебрегать этим обсуждением. Конец истории. Я бы не стал больше терпеть эту линию расспросов.
Я всегда открыт для конструктивной обратной связи, но аргумент вашего сотрудника — это упрямство, это неконструктивно. Не позволяйте им превратить это в соревнование на звание самого упрямого. Даже если вы выиграете, вы дадите понять своим сотрудникам, что упрямство — это приемлемый способ выражения несогласия.
Это не значит, что вы не можете ему помочь, если дело просто в неопытности. Может быть, вы можете найти автоматический форматировщик, чтобы он мог напечатать свой собственный формат и преобразовать его.
Я сказал своим подчиненным, что меня не волнует читабельность их кода до того, как они его проверят. Я не ожидаю, что они будут каждую секунду полностью соблюдать руководство по стилю. Пока код очищается до того, как он будет объединен с веткой, это приемлемо. Я часто начинаю с быстрого и грязного кода и очищаю его только после того, как он заработает. Некоторые люди работают таким образом, и это нормально, пока они не пропускают необходимую очистку в конце.
это уменьшает мою свободу
Ни у кого нет свободы делать то, что они хотят. Необходимость платить сотрудникам также снижает свободу компании.
Усилия, необходимые для форматирования кода с самого начала, окупятся, когда кому-то другому придется читать их код.
Учитывая замечания этого сотрудника, я подозреваю, что он, вероятно, жаловался на форматирование кода или соглашения об именах других людей. Укажите, что другие будут относиться к его форматированию и названию так же. Единообразие означает, что каждый может читать код каждого, независимо от личных предпочтений каждого.
это делает код более сложным для чтения без добавления ценности
Теперь ему труднее читать, потому что он к этому не привык. Чем больше он сопротивляется переменам, тем дольше он будет с ними бороться. Решение принято, оно происходит, конец истории.
Я бы сосредоточился на том, что сотрудник был проинформирован о новом формате, и теперь ожидается, что он будет его поддерживать. Если они не соблюдают требования (или не прикладывают реальных усилий), любые задержки, вызванные отклонением их запросов на вытягивание, полностью ложатся на их плечи.
Запросы на слияние кода должны быть отформатированы с помощью инструмента, иначе они не могут быть добавлены в программное обеспечение.
Когда вы говорите «нельзя», вы имеете в виду, что это не разрешено или что это невозможно (например, рецензент всегда отклонит запрос)?
Если второе, то это палка, которая вам нужна. Если разработчик не соблюдает правила форматирования, его запросы не принимаются, и любые задержки, связанные с этим, являются его ответственностью, что приведет к плохой оценке производительности.
Если это первое, то вы действительно полагаетесь на то, что все добровольно примут участие в системе, которая работает только в том случае, если все так делают. В настоящее время вы имеете дело с кем-то, кто держится. Возможно, он держится именно потому, что знает, что вы не навязываете, а только просите.
Вы менеджер, поэтому давайте попробуем управлять им (и этим), а не просто отчитывать его или рассматривать его как проблему:
«Джон, моя обязанность — сделать это как можно проще для всех и для будущих сотрудников, а не только для некоторых людей, присутствующих здесь сегодня».
«Когда большинство разработчиков просматривают код, будет быстрее, если они смогут принять некоторые вещи как должное, например способ выполнения кода и способ стандартизации некоторых вещей . аудит кода? Ответственность? Должная осмотрительность?] , лучше, если он будет стандартизирован. Вы правы, что некоторым нравится синий, а некоторым красный, и вне работы мы с вами оба можем кодировать так, как нам нравится. Но пока мы при написании кода, который команда должна поддерживать, а будущие инженеры должны быстро и точно понимать, я верю, что стандартизация поможет, и я возглавляю команду — не вы, не Боб, не Алиса, поэтому я должен сделать такого рода звонки, если я чувствую необходимость — и я это делаю».
«Когда вы обнаружите, что будете управлять такими проектами в будущем, вы можете сделать звонок, который вам нравится, и ожидать, что другие будут следовать вашим указаниям . это правда, если не опустить] - что вы пересмотрите и увидите преимущества, которые это дает, даже если это налагает дисциплину, в которой вы не видите никакого смысла прямо сейчас».
«Я считаю, что это сэкономит небольшое количество времени в повседневной работе, когда код переделывается, я считаю, что это уменьшит количество ошибок, и я считаю, что это профессионально. Я хотел бы, чтобы вы уважали это, даже если вы не согласны с это."
Пробелы на самом деле являются частью python
синтаксиса. Удобочитаемость уже разработана в языке. На самом деле у python есть свои рекомендации по форматированию кода. Лучшие практики, соглашения об именах и т. Д. Это называется PEP (точнее, PEP8). Начните там! Знание PEP — это то, что они могут добавить в свое резюме!
Как бы вы поступили в такой ситуации?
Я думаю, что четыре других разработчика правы в этом споре, а вы, возможно, ошибаетесь. Честно примите отзывы своих сотрудников и примите их близко к сердцу. Поставь себя на их место. Если там зарплата зависит от производительности, а этот инструмент снижает ее, вы, по сути, берете у них деньги в их сознании .
Я думаю, что хорошим следующим шагом будет решить, продолжать ли использовать этот инструмент. Если вы считаете это полезным, объясните, почему . Например, если Конечный пользователь/Клиент дает вам лучшие обзоры или будущие проекты, потому что код красивый — скажите об этом своим сотрудникам! Это означает, что у них в кармане больше денег!
Помните, что ваши KPI для обеспечения качества могут не совпадать с должностными инструкциями членов вашей команды. Сделайте так, чтобы ваша команда была заинтересована в своих проектах. Сделайте это чем-то, чем они гордятся. Когда сильное чувство сопричастности является нормой на рабочем месте, гарантия качества становится естественной.
Два дополнительных момента, возможно, заслуживают внимания.
Мое личное эмпирическое правило, когда я возглавляю команду, состоит в том, чтобы настаивать на строгих правилах только тогда, когда чей-то код выглядит действительно уродливым... и если это произошло, мы могли бы рассмотреть более глубокую проблему, чем просто форматирование кода. Проблема, которая начинается с HR и найма не того человека. В противном случае, если код выглядит более-менее понятным и организованным, а его архитектура/дизайн хороши, придирки к форматированию часто вызывают больше проблем, чем пользы.
Последовательность - слабый аргумент. Человеку, который не согласен с определенным правилом форматирования, может показаться, что проблема в микроменеджменте или в жадном до власти архитекторе. Форматирование почти никогда не имеет значения - "это как цвета, кому-то нравится красный, кому-то синий".
Реальное преимущество автоматизированных правил форматирования заключается в том, что программисты не тратят время на обсуждение того, что не имеет значения. Слишком много времени тратится на обзоры кода на комментарии об отступах. Гораздо больше умственных способностей следует сосредоточить на реальных проблемах с кодом.
Познакомьте разработчика с термином Bikeshedding . Дайте понять, что вы считаете его комментарии большим вкладом в дизайн сарая для велосипедов. Он тратит время других. Он плохой командный игрок. Это будет использовано против него во время оценки.
В дополнение к другим ответам, которые уже довольно хорошо освещали The Talk , — методология внедрения форматирования в ваш процесс, нравится это Бобу или нет:
Делайте обзоры кода, используя принцип четырех глаз для каждого мерж-реквеста. Вы master
должны быть изменены только с принятым запросом на слияние, никак иначе. Все запросы на слияние должны проходить проверку качества, т. е . другой член команды должен просматривать код. Включите форматирование и позвольте MR Боба быть отклоненным из-за неправильного форматирования кода.
Если Боб откажется подчиниться, то его мерж-реквесты застрянут в подвешенном состоянии. На вопрос «Почему функция XY не реализована, несмотря на то, что крайний срок уже давно прошел?», Боб может ответить: «Это было сделано некоторое время назад, но коллега Y отклонил ее». Можно возразить, что это потом не делается. Для этого и существует контроль качества. Коллеги должны отклонить такие запросы и переназначить Боба, тогда работа Боба должна справиться с этим.
Существуют различные степени агрессивности, если вы действуете таким образом, поэтому, если вы хотите, чтобы тон оставался максимально дружелюбным, будьте осторожны с тем, как вы это реализуете. Тем не менее, вы все равно должны делать код-ревью.
От себя лично - предполагаемые заявления Боба о полезности форматирования склоняют меня к мысли, что они, возможно, не подходят для главной роли или просто не имеют определенного образования в определенных областях. Может быть, они знают кодовую базу от и до, но из-за отсутствия лучших практик помогли превратить ее в гигантский беспорядок, и только они знают путь сквозь этот хаос. Такого рода вещи опасны, потому что вы можете стать очень зависимым от одного человека, поскольку ваша кодовая база становится все менее и менее ремонтопригодной.
Я думаю, что в этом случае, возможно, было бы возможно добавить git-хук, который меняет формат кода на тот, который нужен команде при фиксации, и еще один (используемый только ими), который меняет формат кода на тот, который нужен команде. член команды при обновлении.
Если член команды так твердо настроен по этому поводу, это также может быть хорошим поводом узнать больше о форматировщике кода и инструментах git — все знания, которые могут пригодиться позже.
Здесь есть много ответов, которые сосредоточены на хороших технических аргументах. Подводя итог: команда приняла правильное решение о том, как действовать дальше, и один человек отвергает решение команды и указания менеджера.
Разговор, который у меня был бы, больше похож на: вы только что назвали мои инструкции и решение команды "чушью"? Вы действительно жаловались, что оплата за работу «ограничивает вашу свободу»? Я настоятельно рекомендую вам прямо сейчас проверить правильно отформатированный код, и я организую встречу с HR, чтобы обсудить уважение к вашему работодателю, менеджеру и команде.
Моника Челлио
Алексей Левенков
Марк Бут
шайба
Т. Сар
Турбьёрн Равн Андерсен
нжзк2