Мы небольшая команда разработчиков, работающих над ИТ-проектом в рамках специального отдела. Между нами в этом отделе нет иерархии, но есть одна общая цель: запустить наше основное приложение. Мы все работаем над одним и тем же кодом.
Я очень внимательно отношусь к деталям и очень внимательно отношусь к стандартам, чистому коду и архитектуре в целом.
Теперь один из старших разработчиков исправляет код таким образом, что появляются очевидные ошибки. Кроме того, изменения его кода не соответствуют определенному стандарту качества. По сути, он вводит много ошибок из-за беззаботного отношения или, по крайней мере, причины, которую я не могу понять в данный момент.
Начальник отдела не заботится о чистоте и рабочих деталях. Он хочет, чтобы основное приложение работало, а мы могли добавлять в него новые функции. Он неявно хочет, чтобы мы позаботились об этих деталях. Я действительно думаю, что стандарты качества и удобство сопровождения кода важны, он принял этот факт, но в этом смысле ничего не формализовано. В значительной степени «делай, как должен, это должно работать, мне все равно, как».
У меня нет полномочий с точки зрения иерархии, чтобы «исправить» коллегу. Однако, поскольку он производит жуков, я хочу простым дружеским влиянием заставить его избегать этих жуков. Мне приходится скрывать эти ошибки от менеджера и пытаться решить их сначала с указанным коллегой. Он, кажется, хорошо готов, но не похоже, что он учится. У меня также в прошлом были словесные перепалки с ним, так как он думал, что я слишком много вмешиваюсь в "его дела". Но в основном мы ладим довольно дружно и уважаем друг друга. Я мог бы быть воспринят как святой, чем ты парень, который не помогает. Тем не менее, я принимаю эту мантию, чувствуя в ней потребность.
Как вы вежливо, но эффективно поможете одному из таких коллег улучшить качество нашего кода? В основном это вопрос общения.
Сокрытие ошибок не принесет вам никакой пользы в долгосрочной перспективе и частично привело вас в эту ситуацию.
Есть несколько путей потенциального снижения:
Не исправлять ошибки самостоятельно. Если есть способ регистрации ошибок (у вас есть система отслеживания ошибок), то регистрируйте их. Вам действительно нужно попытаться привлечь к работе менеджера, который будет заинтересован в качестве кода. Поскольку вам приходится находить/исправлять код ваших коллег, это отвлекает вас от выполнения ваших задач.
Все делают ошибки, указывать на ошибки в чьем-то коде — все равно, что указывать на то, что у вас был кашель. Это вполне естественно, как бы хорошо мы ни готовились, вы не сможете избежать этого на 100%, поэтому это не должно быть табу.
Точно так же, поскольку все делают ошибки, нет смысла скрывать их или не говорить о них с вовлеченными людьми, и если руководству нужно знать о существующих ошибках, просто сообщите им, просто не играйте в игру с обвинением.
Расскажите коллеге об ошибке. Если вам небезразличен проект и ваша честность как сотрудника, вы указываете, что, по вашему мнению, ошибки можно было бы избежать, следуя практикам X, Y, вы можете спросить, согласен ли он с вами или нет, чтобы убедиться, что вы знаете его мнение. о деле.
Мы нашли ошибку в A после последнего патча, нам нужно исправить C, D. Чтобы избежать подобных ошибок в будущем, я думаю, было бы хорошей практикой делать X, Y, вы согласны? Если нет, что, по вашему мнению, мы можем сделать по-другому, чтобы избежать этого?
Если нет официальных руководств, то вы мало что можете сделать, кроме как пытаться предложить лучшие практики, но если он категорически отказывается слушать, и вы искренне верите, что он не подходит для проекта из-за того, что в целом ему наплевать на то, как он делает свою работу, тогда вам нужно обсудить это с вашим ближайшим руководителем, а после этого просто принять результат того, что ваш начальник хочет или не хочет делать.
Однако, если вы хотите, чтобы руководство больше заботилось о качестве кода, просто приведите им примеры того, как несоблюдение определенных практик могло и привело к определенным ошибкам в прошлом не только в вашем проекте, но и в других, и объясните последствия. Людей не волнуют вещи, которых они не понимают, если они понимают, почему необходимо следовать определенным практикам, они с большей вероятностью будут их применять.
Если вы не хотите открытого обсуждения с коллегой, вы можете использовать его материал таким образом, чтобы вызвать ошибку. Что вы делаете тогда, это
Нас это сейчас не волнует, вы должны сосредоточиться на X
Это справедливая критика, с которой вы можете столкнуться за выделение ресурсов на проблему, которая еще не является проблемой, и в этом случае вы можете отказаться от шагов 3 и 4, описанных выше.
Поговорить с коллегой, конечно, лучше всего, мой ответ дает альтернативу идеалу.
Я думаю, вам трудно понять, как что-то сказать, потому что вы чувствуете заинтересованность в результате. И правильно, ведь вы двое друзья и коллеги.
Но я также чувствую, что это один из тех случаев, когда нужно просто отпустить ситуацию.
Если вы цените свою дружбу и рабочую атмосферу, то вам просто нужно принять эту сторону своего друга и двигаться дальше.
Затем, вооружившись таким отношением, вы можете приступить к реальному решению своей проблемы.
Просто скажи ему это прямо.
В такие моменты я вспоминаю то, чему научился в средней школе: я-сообщения.
«Меня раздражает, когда вы производите работу с ошибками, потому что тогда мне приходится их исправлять. Я действительно хочу, чтобы вы больше этого не делали».
Я чувствую... когда ты... я хочу.
Если это не сработает, то я изменю свой подход к проблеме, то есть поддержу его отношение и оставлю прошлое в прошлом, потому что, в конце концов, никогда не знаешь, кто на самом деле лучший инженер .
"I feel annoyed when you produce work with bugs because then I have to fix them. I really wish you wouldn't do this any more."
Это довольно враждебная формулировка. Это вызывает мышление «я против тебя». Сравните это с предложением Jonast92 о том, We found a bug in A after the latest patch, we need to fix C,D. To avoid future bugs of similar sort I think it would be good practice to do X,Y, do you agree? If not, what do you think we can do differently to avoid this?
что это очень похоже на мышление «мы против проблемы».У вас есть обязательные обзоры кода ? Я чувствую, что ответ на этот вопрос — нет. Если вы это сделали, именно здесь такие исключения должны быть перехвачены, задокументированы, а изменение отклонено.
У вас есть система отслеживания проблем, такая как Jira? Вы должны задокументировать свои выводы, включить различия в файлах и описать, как они приводят к дефекту. Кроме того, опишите ряд шагов, как воспроизвести дефект, вызванный плохо реализованным изменением кода.
Вы должны сделать свое возражение как можно более формальным и использовать твердые доказуемые факты, а не мнения. Это не вопрос «мягких навыков», личности или мнений. Это вопрос легко доказуемой некомпетентности, и вы должны задокументировать ее как таковую, видимую для вашего начальства. Они должны выбрать курс действий. В моем 20-летнем опыте программирования увещевать коллегу по поводу типа возражений, которые у вас есть и которые у меня были много раз, в основном бесполезно. Но если вы не можете ясно продемонстрировать свое дело таким образом, чтобы это было понятно тому, кто имеет власть принимать решения, оно, скорее всего, останется без внимания.
Если ваше начальство признает ваши недовольства, надеюсь, вы сможете представить дело для реализации обязательных проверок кода как части SDLC, что, как я подозреваю, кто-то из ваших склонностей должен приветствовать.
Обычно это происходит в продуктах, которые вашей компании не нужно поддерживать, или в проектах, где у менеджера проекта недостаточно навыков программирования. Единственное, что вы можете сделать, это сообщить вашему менеджеру проекта и коллегам по команде о проблемах, с которыми вы сталкиваетесь, поддерживая этот проект без соблюдения стандартов качества, и показать цифры. Если клиент соглашается на эту потерю денег, скорее всего, это никого не волнует, только человека, которому грозит ад. Если это проект с закрытым бюджетом или проект, который вы обычно поддерживаете, ваша компания вас услышит. Самое простое — обнаружить жука и помогать ему, пока он не научится достаточно, чтобы самостоятельно решать проблемы.
Я пробовал проверять код в нескольких командах, но это бремя, требующее постоянной поддержки со стороны руководства. Трудно заручиться поддержкой. И не безошибочно.
Для нас работало то, что каждый разработчик должен был создавать документированные модульные тесты. Таким образом, они обычно обнаруживали свои ошибки перед развертыванием для пользовательского приемочного тестирования.
Для более крупных сложных проектов у нас были команды из 2 или более аналитиков, которые создавали модульные тесты для групп кодирования на основе дизайна/требований. Они будут проводить эти тесты для команды в целом. Это не отменило требование модульного тестирования, но добавило слой, необходимый для обеспечения того, чтобы все действия команды разработчиков были объединены в единое целое.
Включение документированного модульного тестирования в процесс фиксации кода для каждого человека в команде гарантировало, что место разработчиков штанов использовало надлежащую дисциплину, не выделяя никого.
Благодаря этой дисциплине количество дефектов в команде сократилось на 80% и более. Поддержка по телефону сократилась до такой степени, что нам почти не звонили после нового развертывания.
Сложность/формальность плана тестирования корректировалась в зависимости от уровня воздействия... часто всего лишь абзац для небольших изменений... но ожидаемые результаты и фактические результаты должны были быть задокументированы (снимки экрана и т. д.).
После успешного внедрения этого в нашей команде в течение нескольких лет команда контроля качества представила это требование всему ИТ-отделу (они сделали это независимо, поскольку контроль качества в нашей компании стал более зрелым).
Время от времени мы проводили обзоры кода для новых товарищей по команде или при работе с новыми технологиями. Но это не похоже на вашу проблему.
С новым приложением, которое мы создавали, мы начали документировать и сохранять планы модульного тестирования, чтобы их можно было использовать повторно. Для этого мы использовали Team Track. Это был не самый лучший инструмент, но он был лучше, чем библиотека текстовых документов. Это позволило нам выбрать, какие функции нуждаются в тестировании, и мы могли отредактировать планы, чтобы задокументировать наши изменения. Затем мы могли пройти через все связанные тестовые сценарии и задокументировать успех или неудачу.
Гонки легкости на орбите
кешлам
Дарвин
амфибия
HLGEM
Юха Унтинен
мвбл
Андре Верланг