Как вести себя со старшим коллегой с потенциально вредными рабочими привычками?

Как некоторая предыстория, я руководитель группы.


В моей команде есть старший разработчик, который вообще не продвигает свой код.

Он напрямую фиксирует основную ветку и помещает код в производственную ветку без предварительного версионирования.

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

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

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

Мои заключительные слова по этой теме: Правильное управление версиями кода и объединение его в соответствующие ветки является непременным условием для любой задачи разработки. Любой старший разработчик должен хорошо заботиться о коде.

Как убедить этого разработчика прекратить это делать?

Чем он рискует, продолжая это?

Это блокировщик для других членов команды, или я ошибаюсь?

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .
У меня не хватает терпения на людей, которые намеренно не следуют инструкциям. Дайте этому человеку один шанс, подчеркнув, что соблюдение стандартов является требованием работы. Если они продолжают не подчиняться, уволить их. Такие люди сильно тормозят эффективность.
Github, Gitlab и большинство серверов git позволяют создавать защищенные ветки. Заблокируйте свою главную ветку, чтобы никто не мог нажать напрямую.
Вы выделили жирным шрифтом слово «старший», чтобы обозначить термин как ироничный в данном случае, верно? Я надеюсь, что это так...
@RaduMurzea, это не было иронией, его наняли старшим разработчиком
@Testa Прошло много времени с тех пор, как вы спросили об этом. Есть ли обновления по этому поводу? Был ли решен этот вопрос? Если да, то как?
просто ВТК. В этом вопросе задаются три вопроса: первый касается убеждения коллеги, второй очень конкретен и заслуживает того, чтобы быть на другом сайте SO, а третий относится к компании. Если бы какой-либо из этих вопросов был задан как один вопрос, они были бы закрыты / обмануты.
Современные репозитории git позволяют блокировать отправку веток без запросов на включение. Это в сочетании с автоматическим рабочим процессом сборки и развертывания, которому должны следовать все, должно помочь.

Ответы (10)

Другие ответы охватывают многое, но я добавлю кое-что немного другое.

Почему ваши процессы позволяют ему доступ к любому производственному серверу в открытой форме?

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

  1. Удалите доступ всех разработчиков к производственным серверам. Разрешите им удаленный доступ к системным журналам и отладчикам, но не более того.

  2. Выполняйте сборку и упаковку кода с помощью системы непрерывной интеграции, такой как TeamCity.

  3. TeamCity создает ваши конкретные ветки и теги в git — запускайте модульные тесты и интеграционные тесты.

  4. Разверните весь свой код с помощью автоматизированной системы развертывания, такой как Octopus Deploy — она возьмет упакованный вывод вашей системы CI и развернет его автоматическим и воспроизводимым образом в любой настроенной вами среде. Он может развертывать определенные ветки в вашей среде разработки, продвигать эти пакеты в UAT или Production, и он никогда не позволит вашим разработчикам возиться в рабочей среде. Это также дает вам полный журнал аудита того, что и где было развернуто.

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

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

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

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

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

TeamCity и Octopus Deploy (вам не обязательно их использовать, есть и другие) довольно легко настроить и запустить — их установка и настройка займет день или около того, плюс час или около того на каждый проект. конфигурация.

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

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

И если независимый разработчик решит уйти из-за потери доступа к рабочей среде, вам, вероятно, будет лучше.
@ jpmc26 Я согласен со всем этим. Я проголосовал за этот ответ за предоставление реальной, полезной и даже технической информации для решения проблемы. В целом хорошие компании лучше не имеют проблем, чем имеют дело с сотрудниками, у которых они есть. Опять же, это не ответ на проблему, но это очень хорошая и актуальная информация.
@djechlin Единственный способ «не иметь проблем» - это иметь команду, которая знает, как их предотвратить. Этот разработчик не будет способствовать этому, если он кардинально не изменит свой подход. Компания — это просто люди; его политика состоит из решений этих людей.
@ jpmc26 idk, в моей компании уборщики моют только посуду. так что нам почему-то никогда не приходится иметь дело с придурками, которые не моют посуду. но в моем общежитии в колледже была эта проблема, и это была большая проблема. похоже, что кто-то не смог научить этого парня, что такое хороший процесс сборки, когда он присоединился, и теперь он думает, что может управлять вещами. ошибка была допущена при найме или обучении. Ответ Му предотвратит часть проблемы для следующего найма.
Это хорошая будущая система, к которой можно стремиться, но она не решает насущной проблемы, так как ее нужно сначала внедрить, по-видимому, нынешними разработчиками.
@Peter, хорошо, я проголосовал за повторное открытие.
Этот ответ предполагает огромные изменения в процессах и технологиях без фактического решения реальной проблемы, заключающейся в том, что сотрудник категорически отказывается следовать простым и четким указаниям своего начальника. Настойчиво. В долгосрочной перспективе. Уволить его.
@djechlin Спасибо. добавлен ответ и удален комментарий
Если это небольшая команда (два или три разработчика, у каждого из которых много шляп), иногда у вас нет другого выбора, кроме как предоставить им доступ ко всей рабочей среде. Но в такой небольшой команде каждый член должен доверять друг другу на 100% , и должны быть предусмотрены процессы, препятствующие такому поведению. Похоже, этому «старшему» разработчику не доверяют. Это сейчас самая большая проблема.
@LightnessRacesinOrbit, напротив, мне кажется, что решение проблемы с одним человеком не решает долгосрочной проблемы. в конечном итоге это повторится даже без «полузлонамеренного субъекта», как в этом случае, но из-за несчастных случаев или действий из лучших побуждений в спешке, и вам нужно исправить процесс управления версиями и развертывания, чтобы исправить это.
@LightnessRacesinOrbit пытается решить личные и культурные проблемы с помощью процессов и процедур, и это должно быть первым шагом. Он не только рассмотрит этот конкретный случай, но и позволит избежать его повторения в будущем.
@angarg12: В разумных пределах, конечно. Однако переворачивать весь рабочий процесс вашей компании из-за того, что кто-то отказывается следовать простым указаниям, — это наоборот. Во-первых, поставьте своих людей в очередь.
Я в похожем положении с похожей проблемой. Я бы не стал этого делать в основном потому, что 1) у нас просто недостаточно разработчиков, чтобы я мог оттолкнуть их с самого начала, и 2) проблема в большинстве случаев не в разработчиках, а в управлении проектом, который хочет все вчера, но мы движемся к этому типу системы в основном по очень похожим причинам.
Разработчики должны иметь доступ к производственным системам, но не иметь возможности что-либо изменить . Там может быть очень ценная информация, которую трудно получить иначе.
@ ThorbjørnRavnAndersen Нет, не на какой-либо регулярной основе - это было бы нарушением GDPR, с одной стороны, и сбоем ваших настроек среды разработки, тестирования и подготовки, с другой. Производство не должно быть уникальной средой единорога, оно должно быть идентично другим средам, в которых работают ваши разработчики, иначе вы создадите проблемы.
@moo gpdr — это отдельная тема. Продукция очень редко на 100% идентична другим системам и может иметь характеристики, которые можно определить только при доступе.
@ ThorbjørnRavnAndersen нет, GDPR не является отдельной проблемой - если у вас есть доступ к производству, то в большинстве случаев у вас есть доступ к реальной PII. Это проблема GDPR. И вы действительно должны стремиться уменьшить различия между средами разработки и средами производства, потому что это устраняет тот самый момент, который вы пытаетесь использовать для поддержки своей позиции. Если у вашей рабочей среды есть характеристики, которые проявляются только в рабочей среде, то ваша установка плохая и должна быть исправлена, а любой, кто говорит вам иначе, должен быть уволен.

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

Если он продолжит, отрежьте ему доступ к мастер-серверу и производственному серверу. Затем скажите ему, что он находится на PIP, где его первой задачей будет объяснить вам, как он намерен в будущем загружать свой код в Мастер и Производственный блок (*).

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

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

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .

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

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

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

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

@VietnhiPhuvan Я намеренно формулирую это так. Вполне возможно, что существует проблема с коммуникацией, которая позволяет старшему разработчику иметь эту странную идею, что они устанавливают свои собственные приоритеты. С другой стороны, если эта коммуникация действительно работает нормально, а разработчик просто неприятный человек, то они наверняка понимают, что это значит, когда лид говорит им: «Я приложу дополнительные усилия, чтобы убедиться, что приоритеты правильно переданы». Любой, кто проработал достаточно долго, чтобы быть «старшим» разработчиком, должен знать, что значит, когда руководство предлагает «помощь».
Добрые слова со стальным оттенком - мне это нравится :) Давненько не пользовался таким стилем общения. На самом деле, я уже давно не был тонким в вещах :) Возможность, которую вы упомянули, является причиной того, что я больше не проявляю осторожности ни в чем. +1 за разъяснение вашей позиции.

Дайте понять, что это абсолютно необходимо.

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

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

Старший разработчик: Я еще не дошел до этого, потому что мне нужно выпустить эти срочные функции.

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

Шаг первый — четко сформулировать, что вы ожидаете.

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

Второй шаг — оказать ему поддержку в изучении процесса.

Я бы предложил ему, чтобы другой разработчик показал, как это устроено. Вы говорите, что проблема в его незнании Git (несмотря на то, что он утверждает, что знает). Если вы не уверены в этом на 100%, нет необходимости обращаться к нему напрямую. Просто укажите, что ему было бы проще и быстрее увидеть, как кто-то уже настроил его, и это гарантировало бы, что все делают все одинаково.

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

Третий шаг — эскалация — только если вышеперечисленное не работает.

Другие ответы дали указания о том, как это сделать.

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

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

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

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

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

Приоритеты: вы несете ответственность за четкое определение приоритетов. Если он уходит в другом направлении после того, как вы это сделали, и он подтвердил это, он вам не нужен в команде. Скажи ему так.

Напомните ему, если необходимо, что оценка его работы руководителем группы влияет на его отчет в конце года.

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

У вас есть примеры людей, которые потеряли работу из-за подобных ошибок?
Если он не следует политике компании/отдела, его могут уволить по уважительной причине, особенно если он тем самым ставит под угрозу проект. Примеры бесполезны, нарушают правила конфиденциальности и откровенно неуместны.
Этот ответ бесполезен, потому что он не касается надлежащего обучения сотрудника, кроме «уволить его, если вы его не обучите».
О чем вы говорите с его менеджером? Может быть, сначала сделать это, а затем поговорить с сотрудником?
@gusdor: Или, по крайней мере, перешли на работу, которую они могут и хотят делать.
@кешлам Согласен! В таком случае я бы определенно взорвал контракт этого парня с орбиты, чтобы сдержать инфекцию.
Этот ответ, хотя и уместен, возможно, излишне агрессивен. Также предполагается, что нет смысла держать старшего разработчика в команде, даже если он не может следовать правилам (возможно, у него хорошая гарантия занятости). Если бы угроза увольнения этого человека была единственным вариантом, я думаю, что ОП рассмотрел бы это.
Я не говорил, что стрельба была единственным вариантом. Я сказал, чтобы сначала напомнить им об их обязательствах и заставить их признать то же самое. Если это не сработает, возможно, придется пригрозить выгнать их из их текущей роли или проекта. Если это не удастся, стрельба действительно может быть необходима. Здесь есть четкие инструкции о том, какие шаги следует предпринять и в каком порядке. Нет, это не излишне агрессивно; просто напористым, каким иногда может быть тимлид.

Здесь необходимы 2 линии атаки:

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

Ответ moo уже охватывает 1), поэтому я сосредоточусь на 2).

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

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

Вы можете облегчить командную работу ретроспективами, встречами, на которых после каждой фичи/вехи/спринта команда собирается вместе и обсуждает, как можно было бы добиться большего успеха, как команда – частота таких мероприятий должна быть примерно раз в 1-4 недели, и вы можете найти тонны материалов о ретроспективах в Интернете. Если команда знает о ветвлении, то во время ретроспектив ваш единственный разработчик должен получить критику от всей команды, а не от вас. Затем вы можете направить команду на внедрение автоматизированных процессов, которые упрощают выполнение правильных действий и затрудняют выполнение неправильных действий. Это процессы, описанные в ответе му.

Вообще говоря, как непосредственный руководитель, вы не можете просто внедрить и обеспечить выполнение большого процесса, с которым не согласна ваша команда, без очень высокого риска последствий. Если они не знают о правильном ветвлении, вам нужно обучить их «правильному пути», тогда вы можете внедрить и внедрить второстепенные процессы, чтобы заставить их работать в команде: один из распространенных способов в вашем случае — потребовать код обзор слияния с Develop и Master; в следующий раз, когда слияние будет выполнено неправильно, теперь вы можете спросить двух человек, что пошло не так, кодировщика и рецензента.

Мое первое предположение заключалось в том, что разработчик не был уверен в ветвлении Git.

Вы делаете это, устанавливая жесткие, физические политики, которые требуют, чтобы изменения проверялись в конкретном репо, иначе они не будут развернуты, что означает, что работа не выполняется, что означает, что он не выполняет свою работу, и это является основанием для прекращение. Если структура вашей команды «расслаблена», а разработчики имеют ключи к производству и могут развертывать их самостоятельно или имеют учетные данные БД для самостоятельного развертывания изменений схемы БД и не проходят надлежащие ПРОТОКОЛЫ, УСТАНОВЛЕННЫЕ РУКОВОДСТВОМ , вывод прост: вы плохо справляетесь. Управление в среде разработки программного обеспечения в основном заключается в разработке командных правил и протоколов, которые члены команды ДОЛЖНЫ соблюдать, а не в ежедневном присмотре за разработчиками.

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

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

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

Если он использует git напрямую, то все, что ему нужно сделать, на самом деле довольно сложно, так что, надеюсь, у вас есть какой-нибудь дополнительный инструмент. Sourcetree работает достаточно хорошо; Я уверен, что есть и другие. После правильной настройки (что может быть болью) это делает жизнь намного проще.

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

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

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

Ух ты. Просто вау. Это настолько непрофессионально, просто невероятно. Но сначала поговорите с HR, чтобы убедиться, что они в курсе и что вы не делаете ничего, что может создать юридические проблемы для вашей компании. Затем вы разговариваете с ним, принимая во внимание любые советы HR, и говорите ему, что если он еще раз повторит это, вы примете меры, чтобы исключить его из команды. Что, вероятно, означает от компании.

Убедитесь, что отдел кадров понимает, какой ущерб может нанести такое безответственное поведение.

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

Каковы риски: Сломанный рабочий сервер представляет собой меньший риск. Рабочий сервер, допускающий дорогостоящие ошибки, представляет собой большой риск. Представьте себе сервер электронной коммерции, который взимает НДС, а не добавляет его к цене. У вас будет много-много очень довольных клиентов.

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

Ветка разработчика находится за мастером, что в нашем рабочем процессе является проблемой. Я бы рассматривал это как блокировщик. И у него есть код на его машине, которого нигде нет, но он скомпилирован и работает в продакшене. Другими словами, если его компьютер украдут, у нас не будет исходного кода того, что работает.
Хотя я бы назвал некоторые вещи неприемлемыми, производственный код, который находится только на машине разработчиков, неприемлем. "Если его машина украдена" - это даже не резервная копия? Жёсткие диски и SSD диски умирают. Так что код пропадет не если его диск сдохнет, а когда он сдохнет.
Это не очень хороший менеджмент, когда не знаешь, что сказать своему сотруднику, кроме: «Если ты снова напортачишь, я тебя уволю».
Слишком большая эскалация слишком рано. Даже не ясно, что ОП прямо сказал: «Вы должны это сделать».
+1 - Больше добавить нельзя, извините :-). Поразительно, как много людей упускают здесь ключевой момент, а именно то, что была введена перспектива неминуемой катастрофы из-за одного события, и люди болтают о процедурах PV и надлежащих средствах эскалации, в то время как ОП стоит на грани бездна. Довольно удивительно.
@ Вампир, который сам по себе, вероятно, более серьезен, чем все остальное. Отсутствие проверки производственного кода я потенциально счел бы грубой небрежностью.

Резюме:

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

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

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

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

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

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

_______________________________________________________

Новый вопрос для вашего списка:

Q0: «Каковы мои самые неотложные приоритеты?»

A0: УБЕДИТЕСЬ, что то, что у вас есть, устойчиво к катастрофическим потерям.

Это не звучит так.
Если нет, то сделайте так.
В настоящее время!

_________________________

Возможные краткосрочные опасности и последствия и лучший путь вперед:

Следующее не должно быть грубым, но должно быть «надежным». Обязательно скажите, если не согласны. Если вы согласны. сделайте что-нибудь подходящее СЕЙЧАС.

Вы (или другие) упоминаете «украденную машину, неопределенность в отношении« резервных копий »и т. д. ....
Если вы не ЗНАЕТЕ , застрахованы ли вы от каких-либо единичных катастроф, то это ВАША« вина », если что-то произойдет, что уничтожит неизвестную пропорцию Если
это произойдет каким-либо значительным образом, вы должны быть уволены и, вероятно, будете уволены после того, как предпримете все возможные меры по исправлению положения.

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

______________

Предложения по пунктам, которые должны стать частью (срочного) интервью с разработчиком:

Я так понимаю ххх дело. Это так да/нет?
Если я неправильно понимаю, поясните.

OK - если yyy произойдет, каков будет результат?
(Если ответ неверный, объясните, почему, и повторяйте до тех пор, пока не будет достигнуто соглашение.
(Если итерационный цикл не закроется после чрезмерного периода времени, используйте « 45 Clear » или приемлемый местный эквивалент :-( :-))

После того, как будут сделаны выводы о последствиях. Это неприемлемо для меня. Это ставит меня/компанию/систему в неприемлемо опасную ситуацию. Это ДОЛЖНО быть рассмотрено вчера. Я собираюсь реализовать xxx. Вы согласны? / Можете ли вы предложить альтернативы? Опять же, может возникнуть итеративный цикл. Опять же, может потребоваться использование "GOTO" ( или нет :-} ).

Если вы не сделаете это или что-то подобное, вы будете уволены. Когда-то.

Честно говоря, я понятия не имею, что вы предлагаете здесь.
Этот ответ имеет запутанное форматирование. Я думаю, что оценка рисков — единственная часть, которую легко спасти, возможно, вы захотите разделить ее на новый ответ.
@ dan1111 Предложение: «УБЕДИТЕСЬ, что то, что у вас есть, устойчиво к катастрофическим потерям». Причина: Как сказал Гнашер: «Хотя я бы назвал некоторые вещи неприемлемыми, производственный код, который находится только на машине разработчика, является неприемлемым. «Если его машина украдена» - для нее даже не создается резервная копия? Жесткие диски и SSD-накопители умирают. Так что код пропадет не тогда, когда его диск умрет, а когда он умрет». || В настоящее время он навлекает на себя абсолютную катастрофу.
Этот ответ настолько общий, что его можно скопировать и вставить почти во все вопросы на рабочем месте. Тем не менее, это не имеет смысла, если я читаю столько, сколько мне позволяет форматирование.
@phresnel Вы можете знать, а можете и не знать, что может произойти в крупном проекте по программированию. В большинстве действий на рабочем месте члены команды не берут хорошо установленную структуру, в которой все работает хорошо, и преобразуют ее с помощью действий одного человека в систему, в которой единичные сбои могут привести к массовым катастрофическим сбоям с неизвестными последствиями. Среда программирования может быть такой. Произошло ли это здесь, неизвестно нам и, вероятно, ОП. Это должно быть исправлено, иначе его работа, его клиент и, возможно, его компания не продержатся и месяца.
Это вовсе не было моей целью. Какое отношение мой опыт работы имеет к этому, совершенно ускользает от меня.
@phresnel Понимая, что, хотя во многих рабочих ситуациях у явно нормально функционирующего сотрудника нет возможности привести задачу / команду / компанию к, возможно, непоправимому краху из-за сбоя в одной точке, некоторые из них это делают. Хотя это (надеюсь) маловероятно - в худшем случае выход из строя жесткого диска на компьютере мошеннических сотрудников может разрушить компанию. Например, похожее, но совершенно другое - здесь действия одного сотрудника и время землетрясения в японском Кобе объединились, чтобы разрушить старейший торговый банк Великобритании .
Вы можете знать, а можете и не знать, что может произойти на международном веб-сайте, когда вы публикуете огромное количество текстов, которые мало кто читает; из всех возможных альтернатив тот, который исходит из сбитых с толку читателей, которые не понимают, о чем вы говорите, в конце концов, является наиболее вероятным и подходящим. На самом деле ваш текст очень похож на автоматически сгенерированный текст, который является результатом взаимодействия чат-бота с читателями на алгоритмическом и событийном уровне. Тот факт, что вы игнорируете любые опасения, связанные с вашим стилем письма, только усиливает эту идею.
Другими словами: Ваш стиль письма сбивает с толку и утомляет.
@phresnel (1) Удивительно, чего мы, чат-боты , можем достичь в наши дни :-) . (2) Я получаю несколько похожих ответов от людей — я никогда не уверен, кто тролли, а кто нет, поэтому воздержусь от суждений. Подавляющее большинство кажется очень счастливым. (3) Относительно "... знаком с международными сайтами..." -> Возможно, это своего рода показатель моей осведомленности , а может и нет.
Удивительно на самом деле ;)