Отсутствие собственности у сотрудника

Я руковожу 20 инженерами-программистами, разделенными на 4 подгруппы. Каждая команда имеет хорошие стандарты работы и высокий уровень сопричастности, кроме одной. В этой команде есть один старший парень и три младших. Каждый раз, когда возникает критическая ошибка (влияющая на бизнес), этот старший парень всегда переносит работу на следующий день, говоря что-то вроде: «Я не могу закончить это сегодня», «Я посмотрю это завтра», «Мы действительно нужно это сегодня?» или «Как мы собираемся проверить это сегодня вечером?» Даже когда я сказал ему, что мне это нужно сейчас, он сказал, что у него есть другие дела, и улизнул, когда меня не было. Он также велел этим младшим отложить свою работу.

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

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

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

Обновлять

В этом конкретном примере ошибка не позволяет 90+% пользователей войти в систему. В среднем в этом году это происходит раз в месяц, а в прошлом году — дважды. Критические ошибки — это четко определенные ошибки, которые: 1) не позволяют пользователям входить в систему и 2) не позволяют пользователям покупать продукты — только эти два типа ошибок.

Что мы сделали для подготовки каждого релиза:

  1. У нас были подробные планы, в которых все понимали требования. На самом деле мы планируем имя поля и функции. Я внедрил для всех команд правило, что требования не могут измениться после старта спринта. У нас также есть готовые тест-кейсы перед началом спринта.
  2. Мы добавляем буфер ко всем задачам, допустим, если мы думаем, что можем закончить что-то за 1 день, мы ставим 1,5 дня. Мы обнаружили, что некоторые люди всегда недооценивают задачи.
  3. Первым крайним сроком был конец января — именно тогда они думают, что смогут закончить тесты. Это еще одно правило, которое я внедрил во всех командах. PO говорят нам, чего они хотят, и мы говорим им, сколько времени это займет. Итак, я сказал другим командам, что все будет готово к 3-й неделе февраля.
  4. К концу января они сказали, что все функции сделаны с тестами в тестовых примерах. Мы развернули их в нашей тестовой среде и обнаружили ошибку, из-за которой пользователь не может войти в систему. Оказалось, что написали не все тесты. Я спросил их, сколько времени займет исправление ошибок и написание тестов, они сказали две недели.
  5. Первые две недели февраля я сказал всем, что в эти две недели мы будем тестировать и исправлять только критические ошибки. Опять же, критические ошибки: 1. пользователи не могут войти в систему или 2. пользователи не могут покупать продукты в приложении. Все остальное будет в нашем бэклоге.
  6. Неделя 3-4 февраля после того, как мы выпустили его для клиентов. Эти две недели мы потратили на исправление некритических ошибок (которые мы регистрируем в № 4), которые представляют собой воспроизводимые сбои и другие менее важные ошибки, такие как макет и т. Д. Опять же, все эти исправления проходят тесты.
  7. Мы выпустили его для клиентов со всеми зелеными тестами. После развертывания мы обнаружили, что некоторые числа не работают, поэтому мы перепроверили все и обнаружили, что проблема повторяется — пользователи не могут войти в систему.
  8. В прошлый раз, когда они остались допоздна, я дал им дополнительные 2 выходных.
Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .
Могу ли я предложить, чтобы все переосмыслили свои ответы в свете вышеупомянутых правок.
Еще вопросы к CodeProject: Это старший, о котором вы пишете, единственный человек, который мог исправить эту ошибку? И кто отвечает за тестирование перед развертыванием?
Вы мне говорите (в среднем), что раз в месяц 90% вашей пользовательской базы не могут воспользоваться вашим сервисом (в течение дня)?. Парень, у тебя должно быть плохое обеспечение качества. Вы должны пересмотреть свои процессы как можно скорее!
@DJClayworth нет, он не единственный, кто может это исправить, но это будет быстрее, потому что он это написал. Команда владеет всем, от написания кода, тестирования и развертывания.
@CodeProject Есть ли в вашей команде выделенные роли для тестирования и развертывания, или у вас просто есть группа разработчиков, которые делают все?
Будут ли последствия для этой команды, если они прекратят то, что они делают, чтобы немедленно поменять контексты? Похоже, вы очень зациклены на релизах. Если они находятся под постоянным давлением и постоянно перегорают, и существуют суровые наказания за отставание в чем-либо или суровые наказания за ошибки в критических исправлениях. Я полностью заставлю их неохотно прыгать в критические ошибки.
@ 17of26 У нас нет специальных тестировщиков. Разработчики делают все: от написания кода до написания тестов (модуль и пользовательский интерфейс) и выпуска
Это одна из ваших проблем. Из разработчиков не получаются хорошие тестировщики. joelonsoftware.com/2000/04/30/… Если бы вместо 20 разработчиков у вас было 15 разработчиков и 5 тестировщиков, ваш продукт был бы в лучшей форме, и вы бы платили меньше зарплаты.
Измеряете ли вы показатели покрытия кода тестами?
Если продукт имеет решающее значение для вашего бизнеса, я не понимаю, почему у вас нет ротационной команды в нерабочее время для таких ситуаций, как эта?
«Они должны исправить это, даже если им придется остаться допоздна». о нет, ты совершенно не прав
Я согласен с набором выделенных тестировщиков, в идеале по одному на команду разработчиков. Одна вещь, которую я не видел, чтобы кто-то упомянул, это то, что концепция оценки по времени не одобряется в Agile, потому что люди плохо оценивают время. Вот почему оценки обычно делаются с помощью точек по отношению к некоторой нелинейной последовательности. Идея состоит в том, что после нескольких спринтов у вас должно быть представление о том, сколько времени в среднем займет вся работа, но отдельные истории могут занять больше времени, чем их точечные оценки. Т.е. история в 2 балла в среднем займет день, но иногда может занимать и 3.
@ 17of26 Я не согласен с вашим утверждением, как разработчик в тестировании :-) Я считаю, что будучи разработчиком в течение двух десятилетий, я очень хороший тестировщик: я знаю, как думают разработчики, как они будут сокращать пути, и это помогает мне разрабатывать забавные тесты, чтобы сбить их с толку во время интеграционного тестирования :-D
@AaronF Вы являетесь исключением из правил, потому что вам действительно нравится тестировать :)
If there is a critical bug, they must fix it even if they have to stay late.Это шутка ОП? Будьте не столько погонщиком рабов, сколько лидером. RE: В прошлый раз, когда они остались допоздна, я дал им дополнительные 2 выходных. Это тоже просто глупо. Думали ли вы, что 2 дополнительных дня не имеют значения, если они пропустили что-то важное в тот день, когда они задержались? Знаете ли вы, как при этом накапливаются плохой сон и эмоциональное выгорание? Их обязательства перед вами ограничены, вы используете собственность как своего рода культовое оружие, чтобы контролировать их, и, похоже, старший видит это насквозь.
Читая ваше обновление, критическая ошибка, по-видимому, существует уже более месяца и блокирует одну из самых основных функций (вход в систему). Это говорит мне о том, что что-то серьезно не так в структуре вашей среды разработки/интеграции, сервисной архитектуре и/или планировании. Опоздание с исправлением ошибки не сработает.
«Если есть критическая ошибка, они должны исправить ее, даже если им придется задержаться». Критическая ошибка, скорее всего, возникла из-за плохого планирования — возможно, из-за недостаточного тестирования или попытки поторопить разработчиков. Это твоя вина. Вы должны взять на себя ответственность за плохое планирование. Это начинает звучать так, будто старший инженер в этой команде — единственный старший, поскольку они защищают своих младших от вас.
@AaronF Я думаю, что основная идея заключается в том, что разработчик плохо тестирует свой собственный код . Мне нравится письмо Джоэла, но вопрос контроля качества немного шаткий, даже если в целом совет здравый. Мне также не нравится идея, что тестеры дешевы, и вы должны как-то основывать свое решение на этом. Хороший тестер на вес золота. Помимо метафоры, в некоторых областях они действительно не дешевле, чем разработчики, но стоят примерно столько же. И даже тогда я не думаю, что вопрос «сколько я должен платить людям» должен быть фактором. Вам нужны тестировщики, точно так же, как вам нужны разработчики или рабочие столы.
«ошибка не позволяет 90+% пользователей войти в систему. В среднем это происходит раз в месяц в этом году, тогда как в прошлом году это произошло дважды». Если вы можете привести статистику по одному багу, который охватывает период в месяцы (даже годы), то это не критично, потому что, видимо, все эти последние месяцы исправлять было не важно, а значит, ваш старший может быть правильным, чтобы игнорировать ваш призыв к срочности. Почему это критично сейчас, когда, видимо, не было критично все эти месяцы?
"Владение" != "вассал компании".
@ Аарон Ты неправильно понял пост Джоэла. Вы не должны тестировать свой собственный код, потому что большинство людей подсознательно избегают областей, которые, как им известно, являются хрупкими. Из разработчика получается отличный тестер для чужого кода по названной вами причине. Но, учитывая текущую ставку для разработчиков по сравнению с тестировщиками, это довольно дорогое предложение.
Шаг 5-6, где вы ошиблись. Неадекватные тестовые случаи (я понимаю, что тесты не могут покрыть 100% всего, но вы заявили, что они «не написали все тесты», что, как я предполагаю, означает тесты, которые планировалось написать, но не реализовали) затем взял решение выпустить в любом случае с исправлением только критических ошибок. Я бы отменил/отложил этот выпуск в пользу более тщательного расследования тестирования и т. д. (из-за «неизвестных неизвестных»). Не ответ, потому что он не решает вашу проблему, но думали ли вы об этом?
В этом конкретном примере ошибка не позволяет 90+% пользователей войти в систему. В среднем это происходит раз в месяц в этом году, а в прошлом году - дважды - скажите ЧТО?!?!? Ваш продукт продавался раз в месяц в этом году и пару раз в прошлом году, И ВЫ ПОЗВОЛЯЕТЕ ЭТОМУ ПРОДОЛЖАТЬСЯ?!?!? ТЫ ШУТИШЬ, ЧТО ЛИ?!?!?!? Ваша абсолютная первоочередная задача — стабилизировать эту систему — не просто заклеить ее пластырем, но сделать все необходимое, чтобы это больше не повторилось. Вы НЕ МОЖЕТЕ блокировать своих пользователей, иначе они найдут кого-то более надежного. РАССЧИТЫВАЙ НА ЭТО!
Этот вопрос, кажется, перепутал «собственность» с «готовностью работать произвольно большое количество неоплачиваемых сверхурочных часов практически без предварительного уведомления». Это совсем не одно и то же. Хотя обеспечение того, чтобы ваши разработчики имели фактическую собственность (например, доли / капитал в бизнесе), может помочь. В противном случае, почему они должны заботиться?
@Voo Дело не только в том, что разработчик может избегать сложной области для тестирования (любой может). Дело в том, что у разработчика есть определенные предположения о том, как будут использоваться вещи, которые тестировщики не будут делать («Почему вы нажали на это?», «Почему вы сделали это в таком порядке»), и что, если бы они не подумали о сценарии в dev, они тоже не будут тестироваться. Будет новый набор глаз. Это не означает, что разработчик не должен проводить тестирование, он должен писать модульные тесты. Просто модульные тесты — не единственная форма тестирования, и на них не следует полагаться при поиске всех ошибок. Или как единственное, что вы делаете. Вам нужны интеграция и дымовые тесты.
Нигде в своем длинном вопросе вы не упомянули первопричину «[Ян] тестовых случаев предположительно завершены. Обнаружена ошибка, из-за которой пользователь не может войти в систему ... [Фев] выпущен ... [После развертывания] все перепроверил и нашел та же проблема возвращается — [до 90%] пользователей не могут войти в систему». Итак, каков ваш анализ первопричин того, как это ускользнуло от ваших тестов? Вы когда-нибудь писали тестовый пример, обнаруживающий это? Если нет, то почему? Если да, то почему вы выпустили до того, как ошибка была исправлена? Например, что означает фраза «После развертывания мы обнаружили, что некоторые цифры неверны (?!), поэтому мы все перепроверили» ?!
Честно говоря, это звучит так, как будто вы неэффективны в тестировании вещей, даже если знаете, где находятся ошибки. Вам нужно провести вскрытие с кем-то и выяснить, в чем был недостаток вашего тестового процесса. Не принуждать сотрудников к неоплачиваемой сверхурочной работе. Мне также не нравится, что когда вы упоминаете об ошибках, которые явно звучат как ваша ответственность, это всегда означает, что «мы» выпустили продукт, зная, что в нем есть серьезные ошибки, которые тесткейсы, вероятно, не покрыли, или что вы не можете точно измерить тестовое покрытие. . Это на вас, перестаньте пытаться переложить ответственность.
Неоплачиваемые сверхурочные, ежедневные порки и т. д. не компенсируют базового отсутствия методологии. Если вас смущает то, что обзор методологии может рассказать о вашем процессе, наймите внешнего консультанта. Одна очевидная вещь, уже упомянутая другими, заключается в том, что люди не должны просто тестировать свой собственный код. Также хорошей идеей будет нанять по одному тестировщику на команду.
Я действительно сильно возражаю против вашего названия. Что-то вроде «В нашем продукте есть серьезные ошибки юзабилити, мы никогда не писали тестовые примеры, которые должным образом их покрывают, наши показатели покрытия ненадежны, но мы продолжаем выпускать новый код — что нам делать по-другому?»
@seventyeightist Я обнаружил это после того, как приложение было выпущено, и, поскольку оно находится в App Store, оно не в моей власти. Наш план по решению этой проблемы — сделать тесты более заметными на приборной панели.
Как часто случаются чрезвычайные ситуации? Если работодатель все время повторяет фразу «вы должны задержаться, чтобы решить срочную проблему» , то работник прав в том, что это не действительно срочно.
@smci Они поймали ошибку в первый раз и снова при повторном тестировании. Это инженер, о котором идет речь, ненадежен.
@Harper OP буквально заявляет, что обычно это происходит два раза в год, но в этом году с этой командой (а не с тремя другими под присмотром OP) это два раза в месяц. И если вы прочитаете определение критичности OP, это довольно критично ....
Другие команды также получают эти «критические ошибки» или это только одна команда со старшим разработчиком? Я предполагаю (!), что у вас есть каждая команда, исправляющая свои проблемы (с какой-то конкретной областью продукта)?
@Марс: совершенно неправильно. В OP говорится, что «ошибка [входа] не позволяет более 90% пользователей войти в систему. В среднем это происходит раз в месяц в этом году, а в прошлом году это случалось дважды» . Итак, то, как я резюмировал это, абсолютно правильно: «серьезные ошибки юзабилити, мы никогда не писали тестовые примеры, которые должным образом их покрывают, наши показатели покрытия ненадежны ...» . Не покупайте остальную часть того, что говорит ОП, семантика «владения» - это дымовая завеса. Ясно, что в продукте всегда были критические ошибки при входе в систему, они никогда не выпускали выпуск, который исправлял бы их, и никогда не писали тестовый пример, который бы их покрывал.
@Mars: ... и убийственная часть: «7. Мы выпустили его для клиентов со всеми зелеными тестами. После развертывания мы обнаружили, что некоторые цифры неверны, поэтому мы все проверили еще раз и обнаружили, что та же проблема возвращается — пользователи не могут авторизоваться." Можете ли вы найти ошибки процесса в этом? Метрики покрытия (функции входа в систему) — это мусор. Так просто. Вы искренне верите, что через год после этого у них есть тестовый пример, который покрывает это или нет? Здесь почти никто не делает. Где ОП говорит о его первопричине? Нигде. Где процесс?
@smci Похоже, мы читаем это двумя разными способами. Я считаю, что OP означает 2 критических ошибки в течение года, а не 2 в месяц в течение года. Критические ошибки не обязательно означают ошибки входа в систему, поэтому я считаю неправильным предполагать, что это всегда одни и те же или даже связанные ошибки.
@smci #7 говорит: «Нет, мы спроектировали это правильно, но кто-то облажался» или говорит: «Старший инженер, о котором идет речь, солгал». Причина, по которой OP не говорит об первопричине, заключается в том, что это отдельный вопрос ... Вопрос a (основная причина) = Что, как мы можем это исправить, чтобы это больше не повторилось? вопрос b (задаваемый вопрос) = Кто-то в этой команде облажался, и ответственное лицо не желает делать то, что необходимо, чтобы минимизировать ущерб
@smci Мне любопытны 2 вещи: если виноват старший IS, считаете ли вы, что они должны работать сверхурочно, чтобы исправить это? (Для снисхождения допустим платное ТО). И при каком условии это не ошибка старшего?
@Mars ^^^ Это не помогает нашему мнению об основном общении ОП, что армии людей здесь до сих пор не могут точно расшифровать то, что, по их словам, произошло, и ОП теперь не будет отвечать, чтобы прояснить основы. ^^ Для меня нет, это не говорит ни о том, ни о другом. В нем говорится, что ошибка существовала за год до этого выпуска, они никогда не писали тесты, которые должным образом ее покрывали, OP знал об этом до того, как он / она санкционировал этот выпуск, теперь они хотят как-то запоздало использовать это как предлог для бесконечного пожаротушения. Очевидно, что у ОП не было выпускаемого продукта. Не покупайтесь на историю о козле отпущения разработчика.
@smci Мы здесь не для того, чтобы обсуждать реальность, мы здесь, чтобы обсуждать историю. Если вы хотите спросить, что я думаю, если ситуация не такая, как говорит ОП, вам следует задать этот вопрос;)
^^ Учитывая, что невозможно даже точно понять, в чем ОП обвиняет SrDev, но что все ошибки должны были быть обнаружены с помощью любого приличного программного процесса, SrDev не несет ответственности за поведение ОП и общее пренебрежение программным процессом. Я не думаю, что многих интересует интермедия о том, сколько незапланированных ночей сверхурочной работы, по мнению ОП, они имеют право.
«Мы здесь не для того, чтобы обсуждать реальность, мы здесь, чтобы обсуждать историю». очень странное предложение. Там, где ОП является расплывчатым или противоречивым по многим основам, что ставит под сомнение их набор фактов, компетентность и базовую коммуникацию, мы обязательно должны попытаться найти объективную реальность.
@smci Извините, я не вижу, где ОП противоречит им самим ...
Знаете, какая, на мой взгляд, наиболее вероятная ситуация? Конфликт слияния обрабатывался неправильно без надлежащего повторного тестирования. Или, казалось бы, несвязанная ошибка, когда человек, который ее исправил, не представлял последствий и тестировал только связанную с ошибкой. Это часто происходит, когда тесты не автоматизированы — вы тестируете только то, что исправили (да, это не идеально, и я настаиваю на автоматизации тестирования, но, по моему опыту, это не очень распространено).
Это промах, который необходимо исправить с помощью лучшего процесса. Это не меняет того факта, что это был промах старшего или что может потребоваться немедленное тушение пожара. Я думаю, что этот вопрос - шаг 1, а исправление процесса - шаг 2.
@smci К концу января они сказали, что все функции выполняются с помощью тестов в тестовых примерах. Мы развернули их в нашей тестовой среде и обнаружили ошибку, из-за которой пользователь не может войти в систему. Выяснилось, что они написали не все тесты, которые я сделал А. О, на самом деле я не сделал А. И потом еще раз на этот баг. Я сделал Б. О... Наверное, я не сделал Б.
@CodeProject, вы должны прочитать amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/… похоже, у вас в организации постоянные пожары и незапланированная работа.
@Mars: нет необходимости повторять мне одну и ту же неубедительную историю, которую я уже прочитал пять раз, прежде чем ты опубликовал. Обратите внимание, что каждый раз, когда ОП совершает ошибку, проскальзывает королевское «мы», а не «я». («Мы» знали, что критические ошибки входа в систему существовали в течение года, и так и не исправили их (/их), «мы» никогда не писали тестовый пример, «мы» решили выпустить его, «мы» обнаружили, что некоторые цифры неверны , В вашей гипотезе «мы» не заметили конфликт слияния и «мы» не смогли повторно запустить набор тестов перед выпуском. Это просто распространение вины)...
Что касается OP, решившего выпустить без всех написанных тестов (и они должны быть приоритетными, с тестами ошибок входа в систему), это был OP, верно? А мне не нравится расплывчатость "Выяснилось, что написали не все тесты" а) какие конкретно люди? SrDev или другие? б) как, черт возьми, ОП не заметил? в) когда "получилось" - непосредственно перед релизом? Это не программный процесс. Попытка обвинить в этом одно неудачное слияние одного человека — это не выход. ОП владеет процессом.)
@smci Очень интересный вариант! Я видел это как полную противоположность! Вместо того, чтобы сказать: «Юниоры SrDev / SrDev не писали тесты», ОП вставила себя, чтобы сделать это «мы». чтобы это звучало так, как будто ОП не обвиняет. Какого черта ОП не заметил ? OP управляет командой из 20 человек. Скорее всего, OP не просматривает код и даже не просматривает период кода. ОП может даже не знать, как читать код. То , как, черт возьми, OP не заметил , вероятно, должно быть направлено на SrDev ... * OP владеет процессом * OP может не знать ничего, кроме того, что сообщается OP ....
Большая часть этой беседы просто проецируется на основе нашей собственной среды / опыта и не очень полезна. Я думаю, пришло время положить ее на покой :)
@Mars: я согласен с тем, что учетная запись OP и чрезмерное использование «мы сделали X» или пассивного залога при описании того, что пошло не так, делает невозможным узнать, кто что сделал / не сделал и кто был / не был ответственным, и делает это объективно неопровержимым. Но это также не внушает доверия к общению ОП и, следовательно, к их версии вещей. Во всяком случае да, может также оставить его. Я сомневаюсь, что ОП вернется и уточнит недостающую информацию.
If there is a critical bug, they must fix it even if they have to stay late.Как насчет тебя, приятеля-менеджера? Надеюсь , вы исправите хотя бы половину из них, прежде чем спрашивать других. Потому что вы руководитель и ничего вразумительного не объяснили, как вы держите буфер для критических багов и как оплачиваете сверхурочные.

Ответы (21)

Вы, кажется, путаете две вещи:

  • Они работают любое количество часов, чтобы решить неожиданные или незапланированные проблемы.

  • Они несут ответственность и обеспечивают качественную работу предсказуемым образом.

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

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

  • отсутствие четкого мандата
  • меняющиеся требования
  • краткосрочный фокус
  • постоянная срочность

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

Иногда мне трудно выразить свои мысли словами. Вы сделали это очень лаконично. Спасибо. Если бы я мог проголосовать за это до бесконечности, я бы это сделал.
Хорошо сказано, особенно последний пункт. Если все срочно, то ничего.
Хотя я в принципе согласен, ИМХО мы игнорируем важный факт. Если ваш руководитель просит вас начать исправлять что-то СЕГОДНЯ, значит, вы СДЕЛАЕТЕ это сегодня же. Вы не откладываете на завтра, потому что думаете, что это может подождать, несмотря ни на что. Вы можете не закончить (потому что, возможно, вы не хотите работать сверхурочно), но вы начнете как можно скорее, это не ваше дело. Это близко к неподчинению, и поэтому вы рискуете быть дисциплинированным.
@AdrianoRepetti Я категорически не согласен. Плохое планирование со стороны моего менеджера не означает жизненной необходимости с моей стороны. Да, я делаю то, что хочет мой менеджер, в меру своих возможностей, но я также стараюсь контролировать ожидания своего менеджера. Если они просят меня сделать что-то неразумное, я не буду напрягаться, пытаясь это сделать.
@AdrianoRepetti В исходном вопросе упоминается, что сотрудник говорит, что «не может закончить это сегодня», поэтому, насколько вы знаете, он начинает работать над этим, но это невозможно закончить до конца рабочего дня.
@AdrianoRepetti Сегодня я нажму кнопку «СТАРТ» задачи, пометив задачу как «В ПРОГРЕССЕ», а завтра я подумаю о работе над ней.
Не комментируя достоинства ответа, он не отвечает на вопрос, который OP (в настоящее время имеет).
+1 за логику и объяснение. Но здесь нет ничего общего с правом собственности , если только сотрудники не участвуют в собственности (реальной собственности) компании. Иногда люди вольно говорят о чувстве собственности, имея в виду чувство ответственности, но это не собственность. Владелец бизнеса или другой собственности может хотеть, чтобы другие чувствовали или действовали так, как будто они тоже участвуют в владении его собственностью, но это не делает это владение реальным. Такое использование носит идеологический характер.
это именно то, что я всегда хотел сказать своим менеджерам, но никогда не мог
@david как сотрудник вы не воспитываете своего менеджера в неповиновении его приказам. Людей правильно увольняют из-за этого. Да, я вижу, что многие люди мечтают это сделать, но это не делает его разумным советом.
@DavidK Бросать такие слова, как «плохое планирование», когда речь идет о критических ошибках, - бессмысленная риторика. Если бы ваш менеджер мог спланировать это, он бы лучше использовал свои способности к предвидению, чтобы играть на фондовом рынке или выигрывать в лотерею. Единственным «плохим планированием» является отсутствие уверенности в том, что всегда есть кто-то «дежурный», чтобы обеспечить поддержку в нерабочее время, когда ( абсолютно ) это необходимо. (И "90% пользователей не могут пройти даже через экран входа в систему" - это ситуация, которую я бы назвал "абсолютно необходимой").
Как за это проголосовали? Это должен быть комментарий, поскольку он сводится к просьбе перефразировать и уточнить.
@LVDV Весь ответ, включая «Не могли бы вы уточнить», кажется мне не столько искренней просьбой о перефразировании, сколько пренебрежительным отношением к мировоззрению ОП. И "Пересмотрите свой взгляд на ситуацию, потому что X, Y и Z" - это своего рода ответ...
@AdrianoRepetti Как менеджер вы не игнорируете отзывы сотрудников. Как менеджер, вы не игнорируете нехватку времени или ресурсов. Как менеджер, вы не игнорируете проблемы, возникающие во время работы, которые блокируют прогресс — и все же все это очень распространенная «практика менеджера». Если ваш сотрудник не слушается вас, выясните, почему . Иногда проблема в них, а иногда проблема в вас.
@Chronocidal Критические ошибки в производстве почти всегда можно проследить до плохого планирования. если критическая ошибка попадает в производство, это означает, что на этапе тестирования не хватает времени или ресурсов. Критические ошибки часто попадают на стадию тестирования, потому что на разработку было потрачено недостаточно времени или ресурсов.
@ 17of26 Вы правы на 100%. Черт возьми, это ошибка входа в систему , которая затрагивает более 90% пользовательской базы — как это не было обнаружено?
@AdrianoRepetti: Пример из реальной жизни: за 6 месяцев около 80 моих дней (= 4 месяца) были потрачены на «срочные пожарные» ситуации. В каждом отдельном проекте разработчики отсутствуют каждый божий день , потому что кому-то из разработчиков нужно срочно исправить что-то в прошлом проекте. В течение этих 6 месяцев руководство специально запрещало мне внедрять любые формы тестирования или проверки кода, потому что «это занимает дополнительное время». Иногда проекты намеренно откладываются до тех пор, пока они не станут более срочными, чем другие . Прыжок, когда руководство говорит вам прыгать, — именно так возникла эта ситуация.
Хотя я могу согласиться с тем, что ответственность больше связана с обеспечением качества, чем с сверхурочной работой, остальная часть вашего ответа не соответствует обновленному вопросу. Их методология и планирование кажутся точными. Похоже, что рассматриваемая команда и старший разработчик не придерживаются тех же стандартов, что и другие, пропуская обязательные тесты и снижая качество. Хороший менеджер, плохая работа разработчиков/команды.
@SørenD.Ptæus Ошибка управления в этом сценарии не связана с основными причинами критических ошибок, постоянно попадающих в производство. Заставлять разработчиков работать сверхурочно над исправлением критических ошибок — значит лечить симптомы, а не болезнь.
« Критическая ошибка, затрагивающая 90% пользователей, не должна была быть запущена в производство », ретроспективный подход хорош и все такое, но я не понимаю, как большинство людей здесь соглашаются работать над вашими функциями вместо того, чтобы исправлять то, как компания зарабатывает деньги. . Даже если вы считаете, что « это лечит симптомы, а не болезнь », ведущий разработчик явно не собирался возвращаться к своему столу, чтобы лечить болезнь (это было бы больше обязанностью менеджера).
Что-то вроде этого - если 5% пользователей не могут войти в систему, это проблема разработчика (написал так, что есть плохой путь, который может дать сбой, у QA не было видимости (или времени для игры)). Если 90% пользователей не могут войти в систему, это называется «QA ничего не сделал». Или UX приложения ужасен (т. е. «счастливый путь» странный, и в нем недостаточно указаний или сообщений об ошибках).

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

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

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

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

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

  1. Критические ошибки должны быть действительно критическими. Например, в моей собственной карьере я задерживался, чтобы исправить «критические» ошибки, которые затем не были развернуты в рабочей среде в течение двух месяцев. В тех случаях это был менеджер, взволнованный чем-то и желающий этого сейчас, а не на самом деле критической ошибки. Конечно, были и критические проблемы.
  2. Уровни персонала должны быть в целом достаточными. Соблюдение дат выпуска и решение проблем важны, но если мы всегда опаздываем, потому что у нас есть 3 человека, выполняющих работу 4+ человек, это другая ситуация.

Есть ли альтернативный способ решения подобных проблем?

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

ИМО, это фантастический метод разработки программного обеспечения, который, к сожалению, почти никогда не выполняется правильно.

ОБНОВЛЕНИЕ : в ответ на редактирование вопроса эта ошибка носит абсолютно критический характер (в большинстве компаний ее называют демонстрационной, а не критической) и должна быть исправлена ​​немедленно. Я бы следовал описанной выше технике — брал что-то с его тарелки в обмен на то, что он работает над этим сейчас.

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

Я согласен с большей частью вашего комментария, но я не уверен, что Agile здесь применим. Я предполагаю, что когда ОП говорит «критическая ошибка», он имеет в виду что-то, что появилось в выпущенном программном обеспечении, что действительно должно быть исправлено прямо сейчас (например, недавнее отключение Facebook ... Я подозреваю, что многие люди сжигали масло в полночь ). Это правда, что Agile позволит вам измерить влияние на график, но OP даже не упоминает существующий график работы.
+1 за «Критические ошибки действительно должны быть критическими». Буквально на прошлой неделе я видел «критический» пункт, который в конечном итоге занял 6-е место по приоритету… Я понял, к лучшему или к худшему, что «критический» — это слово, которое можно просто игнорировать.
@DaveG Я не знаю, используют ли они Agile или нет; Я рекомендую его как процесс, который делает более понятным для всех сторон влияние запросов об ошибках сегодня. Мой опыт показывает, что все вовлеченные стороны получают лучший опыт, когда последствия эскалации ошибки более прозрачны.
Вдобавок к этому, большинство инженеров готовы работать сверхурочно над действительно «критическими» ошибками. Но, ОП, ты вместо этого даешь им почасовой отпуск? Если нет, ожидайте, что ваши сотрудники начнут работать над тем, чтобы править, как это делает эта команда, потому что в конце концов выворачивать кишки на пользу компании не имеет никакого смысла, если компания ничего не дает взамен.
Мне нравится иметь 5 «высоких», «потрясающих» дефектов, которые сводятся к «это меню лаймовое, но должно быть зеленовато-желтым».
@ Грэм Совершенно верно. Однажды я работал в компании, где генеральный директор отругал мою команду за то, что они пришли в 11 утра после того, как проработали до полуночи накануне вечером, чтобы уложиться в срок, установленный руководством. Я ответил, что, если он недоволен, мы все были бы счастливы впредь строго работать по договору. К счастью для него, у него хватило ума заткнуться и больше никогда не критиковать никого из нас за опоздание.
@Graham Вопрос обновлен; " В прошлый раз, когда они остались допоздна, я дал им дополнительные 2 выходных дня. "
«Если они что-то обещают, они должны это сделать». -- Похоже, что этот парень единственный, кто на самом деле соответствует этому, не обещая того, чего не собирается делать. Если «делать то, что вы обязуетесь» является стандартным OP, который хочет навязать, вероятно, всем остальным нужно поговорить с...
Хотя я согласен с вашим ответом, факт bug prevents 90+% of users from logging into the system. On average, this happens once a month this yearозначает, что время не тратится на тестирование критических функций. То, что время не выделено, является управленческой проблемой: «Делайте это вместо этого, это важнее». Если это произошло там, где я работаю/редактор более одного раза, и я предупредил их, я не буду задерживаться в следующий раз, когда у нас не было времени, чтобы убедиться, что это никогда не повторится (например, модульное и функциональное тестирование).
@zarose, это называется «приоритетная инфляция». Вы устанавливаете приоритетный процесс: нормальный (5 дней), высокий (1 день) и критический (в течение часа), и он начинает злоупотреблять. Как только люди узнают, они получают обслуживание быстрее, внезапно все становится критическим. Там, где я работаю, нам удалось внедрить процесс для демонстраций, когда для каждой критической проблемы была сформирована команда для ее устранения под контролем менеджера. И, к большому неудовольствию руководства, я следовал этому процессу буквально... "но я просто хочу, чтобы вы все исправили!" я: "но процесс". Это уменьшило критические проблемы на 90%.
Я думаю, что ОП имел в виду, что ОП обратился к своему боссу, чтобы тот надрал подчиненному задницу ... и пока он это делал, подчиненный немедленно покинул помещение. Это не первый раз с подобными вещами, поэтому OP разумно предположил, что мотив ухода подчиненного состоял в том, чтобы избежать надирания задницы. Отсюда и «ускользнуть».
@PieterB Оооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо Определенно прячу его в задний карман.

В моем офисе мы обычно цитируем следующее:

«Плохое планирование с вашей стороны не требует чрезвычайной ситуации с моей стороны».

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

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

  • Достаточно ли вы сделали, чтобы избежать «критических» ошибок? Дали ли вы разработчикам достаточно времени для проведения тестирования, проверки кода, рефакторинга и мониторинга?

  • Следите ли вы за тем, чтобы новые функции активировались, когда есть достаточно времени для их исправления? (в отличие от позднего вечера или в пятницу).

  • Если критические ошибки являются обычным явлением, достаточно ли вы платите за сверхурочную работу или работу по вызову?

  • Разработчики, которых вы хотели заполучить, «владели» процессом выпуска? Смогут ли они остановить выпуск функции, если посчитают, что в ней есть ошибки?

  • Ваши сроки реалистичны и согласованы с командой разработчиков?

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

Если бы какой-то из ответов был "Нет" или "Я не уверен", то я бы начал искать проблему в управлении и устранял бы эти проблемы в первую очередь.

Я перечислил вещи, которые я сделал для предотвращения критических ошибок, но, очевидно, этого недостаточно. Конечно, я даю им достаточно времени, потому что они говорят мне, когда, по их мнению, они могут закончить это, и это время включает в себя написание тестов и проверку кода. Кроме того, я добавляю 30-40% буферного времени плюс еще 2 недели на тестирование. Критические ошибки не были обычным явлением до недавнего времени, когда мы сталкивались с ними дважды за несколько месяцев. И да, команда владеет процессом выпуска через ci/cd. Я считаю, что крайний срок реалистичен, потому что все согласны с ним от начала до конца спринта (я проверяю каждый раз, когда у нас есть стендап-встреча).
> «Достаточно ли вы сделали, чтобы избежать «критических» ошибок в первую очередь? Дали ли вы разработчикам достаточно времени для реализации тестирования, проверки кода, рефакторинга и мониторинга?» Это полностью согласен с этим пунктом. Существуют процессы, обеспечивающие хорошее качество программного обеспечения. Если менеджер мешает своим инженерам завершить эти процессы, то кризисы, возникающие в результате, являются проблемой менеджера, а не инженеров.
Разработчик, который говорит: «Это не моя ошибка, меня не волнует, сколько компания из-за этого потеряет», — это… плохой человек для проекта, независимо от того, насколько технически хорошим разработчиком он является. Любой разработчик, которому все равно, должен просто найти новую работу, где он будет заботиться и/или где чрезвычайных ситуаций на самом деле не бывает, и/или компания лучше справляется с предотвращением чрезвычайных ситуаций. Оставаться, но не заботиться, никому не нужно.
@hyde: С другой стороны, некоторые компании преуспевают в создании таких разработчиков. И компания в вопросе звучит как одна. Вы можете задействовать людей, но это не решит проблему. Вы в конечном итоге создаете еще больше циников.
@CodeProject «И да, команда владеет процессом выпуска через ci/cd» - это ... не то, что имеет в виду Хелена. Вы говорите о команде, контролирующей механизм развертывания кода. Хелена говорит о том, что команда сама принимает решение о выпуске — о том, что они могут решить, целесообразно ли выпускать функцию в ее нынешнем виде, и решить не выпускать (и упустить крайний срок), если они считают, что она не готова. Ваш комментарий, в котором основное внимание уделяется защите сроков, которые вы им навязываете, подсказывает мне, что на самом деле они не имеют такой ответственности.
TL;DR: "Зеркало. Вот. Используй его".

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

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

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

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

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

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

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

  1. Независимо от того, насколько хорошо вы думаете , что уделяете внимание качеству, результаты показывают, что это не так. Вы должны серьезно улучшить качество вашего процесса разработки, что может означать такие меры, как обзоры, проверки, парное программирование, усиление тестирования, изменение дизайна критических компонентов, улучшение архитектуры и дизайна и т. д. Вместо этого вам лучше начать анализировать организационные проблемы, которые вызывают эти проблемы. записать список мер, которые вы уже реализовали. Очевидно, что они не работают.
  2. Почему ваш сотрудник должен задерживаться, чтобы исправить ошибку? Можете ли вы выпускать релизы рано утром, чтобы дать разработчикам весь рабочий день на исправление ошибок?
  3. Думали ли вы об использовании переключателей функций или других мер для быстрого возврата к предыдущей версии функции, чтобы дать вашей команде время для устранения проблемы?
  4. Вы не можете обвинять своих сотрудников в том, что у них есть планы на вечер, когда проблемы возникают в короткие сроки. Вы можете установить систему дежурства в дни критических релизов. Тогда люди заранее знают, что им, возможно, придется задержаться, и могут подготовиться соответствующим образом.
Третий пункт очень стандартен для критических функций во всех наших программах на рабочем месте. +1
Пожалуйста, не делайте пункт 3. Вместо этого изолируйте свое приложение. Разверните новую версию, когда она будет готова. Если глючит, вы можете мгновенно повторно развернуть предыдущую версию. Переключатели функций — отличный способ использовать бесполезный код, потому что он никогда не использовался/не был «включен». +1 за оставшуюся часть ответа :)
@rkeet: совершенно не согласен. чрезвычайно важно иметь возможность включать и выключать определенные функции во время выполнения без необходимости повторного развертывания чего-либо. И это не имеет абсолютно никакого отношения к контейнеризации ваших приложений или нет. Я не хочу привлекать третьих лиц / менеджеров по выпуску / сторонников платформы только для того, чтобы отключить / включить простую функцию, которая вызывает хаос, если я могу этого избежать.
@devouredelysium Если функцию нужно отключить, потому что она вызывает хаос, вы нарушили производство. Если вы прервали производство, вся сборка не готова. Если сборка не готова, она не должна быть в производстве. Предполагая, что предыдущая сборка работает, повторно разверните ее и исправьте сломанное производство. Контейнерное развертывание в любом случае занимает около 2 секунд. Если выбранные вами третьи стороны / rm / сторонники платформы настолько ненадежны, насколько это кажется вам, вам необходимо пересмотреть свой выбор программного обеспечения.
@rkeet - ваши замечания имеют смысл в серверной среде, но, как постепенно выяснилось в комментариях, вопрос на самом деле касается мобильного приложения - это ситуация, когда на стороне iOS обновления должны проходить одобрение в магазине приложений. латентность, а на стороне Android существует множество реализаций платформ, которые невозможно протестировать , и на обеих платформах установка обновлений подлежит утверждению конечным пользователем вручную. Переключение функций или даже «эта версия не работает, вы должны обновить ее, чтобы перейти к любому другому экрану» ответы сервера — это умные попытки справиться с этими реалиями.
@rkeet: значит, по твоим рассуждениям, если у тебя болит правая рука, это должно быть потому, что у тебя повреждено все тело? Если функция А проблематична (а это может быть даже из-за того, что другая система неисправна, и из соображений безопасности предпочтительнее также отключить эту функцию), то вы отключаете функцию А, вы не откатываете функциональность на весь спринт.
@ChrisStratton нигде не читал, что это касается магазинов приложений / мобильных приложений. Тогда, и только тогда, я полагаю, это могло иметь смысл. Лучше сделать так, чтобы он никогда не попал в производство.
Биология @devouredelysium здесь не играет роли. Но играя на этом, да, если у вас болит рука, то повреждено тело, разве ваша рука не является частью вашего тела? Странная аналогия. Что бы ни. И да, я бы откатил целый спринт функционала. Не выбрасывать, а просто сдать в ремонт. (В вашей аналогии вы, очевидно, оторвали бы руку, чтобы починить ее в больнице, или наложили бы на нее жгут, пока она не будет исправлена...). На самом деле, я недавно откатил релиз с 3-недельной работой. Это вызывает ошибки (хотя исправимые), это вызвало бы сверхурочную работу. Не надо, откатись, завтра новый день
@rkeet, немного сложно иметь клиентов, если ваше мобильное приложение никогда не «дойдет до производства», поэтому предлагаемые механизмы в основном определенно предназначены для этого. Возможно, запрашивающий мог бы подумать о том, чтобы пойти дальше и сделать свое приложение по существу средством просмотра динамического контента, загруженного с сервера и в лучшем случае кэшированного; тогда они действительно могут легко откатить изменения большей части того, что имеет значение. Но это может быть математически продемонстрировано как крайность, заключающаяся в том, чтобы сделать все это набором мелкозернистых переключателей.
@rkeet: и захотят ли клиенты (и владельцы других сервисов), чтобы ваша старая версия работала часами (или даже днями), пока вы не обнаружите проблему, не исправите ее и не протестируете должным образом? Что, если тогда это действительно не исправлено, и вам придется откатить его еще раз? ржу не могу. Итак, ваш план состоит в том, чтобы весь офис заботился о вас вместо того, чтобы должным образом изолировать проблему (отключить ее) и спокойно решить ее, сохраняя при этом все остальное, как обычно? Удачи.
@devouredelysium Я полагаю, вы не против смотреть на пустые, не загружающиеся страницы. Или "500 Внутренняя ошибка сервера". Или "Неверный логин, попробуйте еще раз" или что-то еще. Я предпочитаю рабочую версию. Если какая-то функция не работает, да, отключите баггер и исправьте. Не позволяй мне, пользователь, смущаться твоими недостатками.
@rkeet: если функция не работает, как указано в оригинале OP, вы отключаете всю функцию . Пользователь его не увидит. Вы не оставите его сломанным. Именно в этом и заключается идея использования killswitch .
@devouredelysium Вы понимаете, что если бы вы развернули предыдущую версию, все сломанное было бы не в ней, верно? Затем вы исправляете это , не беспокоя конечных пользователей, которые судят вас по их опыту . Когда вы исправите это: повторно разверните.
@rkeet: я написал переключатели функций или другие меры, чтобы быстро вернуться к предыдущей версии . Моя главная цель состоит в том, чтобы облегчить возврат. Как это сделать, должно быть решением ОП, но он обязательно должен найти решение.
@rkeet: и вы отказываетесь от всех функций всех других команд, возможно, даже с включенными другими незначительными исправлениями ошибок? ржу не могу. Я не буду продолжать эту дискуссию. Абсолютно никто в бизнесе не делает ничего отдаленно похожего на то, что вы описываете (о чем свидетельствует пост, который мы комментируем), если они могут этого избежать.
@rket ваше решение этой проблемы требует определенного проекта и установки ci/cd. Что делать, если откат миграции БД небезопасен? Что, если другие уже развернутые сервисы зависят от какой-то другой правильно созданной новой функции? Что, если новая сборка исправит какую-нибудь критическую ошибку? И т.д, и т.д...

Работа в программном обеспечении это очень распространено.

Вы относитесь к своим людям как к профессионалам. Вы говорите о собственности, но затем требуете, чтобы «критическая» ошибка была исправлена ​​СЕЙЧАС.

Является ли ошибка действительно «критической»? Является ли это результатом неясных требований? Наш старый друг "прицел"?

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

Вместо того, чтобы требовать, чтобы они бросили все ради чего-то «критического», поработайте со своими командами до тех пор, пока это не будет исправлено. Затем подведите их к этой оценке.

Я беру слово «критическое» в кавычки, потому что после 30 с лишним лет работы в этой области (да, я стар) этот термин используется очень неправильно. Все не может быть «критическим».

Бессмысленно принуждать людей к их оценке — это называется оценкой, потому что они на самом деле не знают, когда она будет исправлена.
@Erik В этом случае они должны точно знать, что пошло не так, чтобы их оценка была ошибочной.
@JMac, когда проблема будет решена, они узнают , что было не так и куда ушло время, если вы хотите провести ретроспективу. Но пока она не решена, они могут только сказать вам, сколько времени ушло на попытки (или какие другие обязательства помешали), и, возможно, их текущее предчувствие, что проверить/попробовать дальше. Некоторое обсуждение на этом пути может быть продуктивным, и озарение может прийти даже из самого разговора; но есть момент, когда обсуждение и отчетность сами по себе становятся саморазрушительным источником задержки.
@ChrisStratton На самом деле это не делает «бессмысленным» удержание людей от их оценок. Я не говорю, что им нужно отвлечься от решения, чтобы сформулировать, куда ушло их время; но когда кто-то дает оценку, он должен придерживаться ее в разумной степени. Если принуждать людей к их оценкам бессмысленно, то и получать оценки бессмысленно. Дело в том, что оценки полезны и широко используются, часто требуются для организации работы таким образом, чтобы уложиться в сроки. В основном я имел в виду, что вы должны быть в состоянии подтвердить свою оценку и изменения к ней. Это не предположение.
В самом деле, оценки сложных проблем обычно лишены смысла, и это известно каждому здравомыслящему человеку. В лучшем случае для чего-то большого с правильным умножающим коэффициентом вы можете получить приблизительное среднее значение, но конкретные временные потери редко бывают ожидаемыми, так что это действительно просто проверка навыка пессимизма.
@ChrisStratton Я бы сказал, что существует огромная разница между «часто неправильным» и «не имеющим смысла». Какими бы неверными ни были ваши оценки, за ними все равно должен быть смысл, и любая ваша оценка обязательно будет интерпретирована со смыслом. Человек, дающий оценку, не несет единоличной ответственности за правильность оценки, система слишком сложна для этого, но он определенно должен придерживаться ее до определенной степени, иначе планирование проекта становится практически бесполезным. Это не похоже на то, что «мы закончим, когда закончим» приемлемо для большинства клиентов.
В этом случае вы хотите, чтобы люди сделали честную оценку, затем умножили ее на 5, а затем сообщили вам это количество времени, просто чтобы убедиться, что проблема будет решена в течение этого периода времени. Это уже не оценка, а безопасное управление ожиданиями.
Вот хороший разговор об оценках: youtube.com/watch?v=QVBlnCTu9Ms (я не согласен во всех аспектах со всем, но это делает несколько хороших моментов). Подсказка: заголовок "#NoEstimates"
"yikes I'm old"- Это означает, что ваш вклад очень ценен.
@DT Хотя я согласен с JimmyB, это не обязательно правда. К настоящему времени я встретил довольно много пожилых разработчиков, менеджеров и боссов. Многие из них, возможно, были в районе, это не значит, что они извлекли уроки из этого;) (хотя JimmyB, кажется, понял кое-что;))
@ Эрик Я бы сказал, что разумно принуждать людей к оценкам, потому что оценки всегда должны быть завышенными. Если вы оцениваете 2 недели и выполняете за одну, никто не будет жаловаться, что у них есть неделя на дополнительное тестирование или что у вас есть неделя, чтобы потратить ее на какой-то другой проект. Планирование проекта полностью зависит от этого факта; и если вы хотите, чтобы менеджер проекта был вашим другом, не опаздывайте. С другой стороны, если вы опаздываете, вы не знаете, какое влияние вы окажете на остальную часть проекта, что может привести к срочной проблеме.
@UKMonkey однажды менеджер сказал нам, что все оценки должны быть точными, и мы обязательно должны закончить в установленные сроки. С того дня и до того, как он покинул компанию примерно через два месяца, все мои оценки были «два года». Мне удалось выполнить все задачи в этот срок, что дает мне 100% правильность оценок. По какой-то странной причине, насколько мне известно, ни одна из моих оценок не была сообщена заказчику. Интересно, почему.
@Josef, к счастью для тебя, они этого не сделали. Ожидается, что инженеры профессиональных услуг будут получать от клиентов в 3-5 раз больше своей зарплаты; а невыполнение этого требования ставит под угрозу их заработную плату. Обычный способ оценки - "сколько времени, по вашему мнению, это займет x 3".
@UKMonkey, но если кто-то попросит меня дать «оценку», которая является абсолютным максимумом, я дам ее. Если вы оцените в три раза больше, чем вы думаете, сколько времени это займет, будут задачи, выполнение которых займет больше времени, чем эта оценка.
@Josef, вы никогда не были в ситуации, когда указанный вами номер был отправлен клиенту, и на его основе были сняты деньги - вы это признаете; но если бы это было так, клиент всегда бы отклонил ваш номер, и, как инженер, не принесший деньги компании, ваш контракт был бы расторгнут. Оценка — это уверенная оценка; но если вы выбираете глупые числа, то в лучшем случае вы не заводите друзей, а в худшем можете поставить на кон свою работу.
@UKMonkey это не оценки, это пессимистичные даты «сделано до». Если они нужны людям, они должны сказать мне об этом, и я дам им свою обычную оценку, умноженную на 5. Но если вы спросите оценку, я дам вам честную оценку. Если цифры должны быть переданы людям, которые принципиально не понимают, что такое оценка, человек, которому я даю оценку, должен применить к моим цифрам любую ерунду, которую они хотят. Я предпочел бы быть честным с людьми, с которыми я работаю.
@UKMonkey Я часто сталкиваюсь с тем, что номера, которые я даю, отправляются клиентам. Я часто обсуждаю цифры с клиентами в проектах, которыми я руковожу. Я никогда не признавал ничего другого. Если кто-то спросит меня о наихудшей дате «сделано до», он получит наихудший случай.

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

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

  • Некомпетентные инженеры
  • Неподдерживаемая кодовая база
  • Неадекватное тестирование

Учитывая, сколько у вас рабочей силы (20 инженеров — это МНОГО ресурсов), скорее всего, это комбинация всех трех.

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

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

Что теперь с этим делать...

Шаг 1. Выясните, почему тестирование не выявляет эти критические ошибки

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

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

Шаг 2. Определите основную причину каждой критической ошибки

Для каждой критической ошибки узнайте:

  • Кто создал ошибку
  • Когда ошибка была создана
  • Почему код был изменен
  • Где ошибка была введена в коде

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

И ПРЕКРАТИТЕ ДОБАВЛЯТЬ БОЛЬШЕ НЕИСПРАВНЫХ ФУНКЦИЙ, пока критические ошибки в существующем коде не будут исправлены!
Иногда эти проблемы даже не являются «ошибками», а являются фундаментально неправильным дизайном, несовместимым со средой, в которой выполняется код; вы можете исправить бесконечный поток «ошибок», обнаруживаемых новым способом, который приводит к поломке каждый раз, когда код сталкивается с ранее невиданным (но полностью совместимым) поведением взаимодействующих систем или слоев ОС, или вы можете потратить время на исправление лежащих в основе ошибок проектирования.
@ChrisStratton Именно поэтому абсолютно необходимо понять основную причину этих критических ошибок.
Мне очень нравится этот ответ, но я ожидаю, что СТАРШИЙ инженер пойдет к менеджеру, чтобы обсудить проблему, когда ему что-то "надоело", перестать заниматься "пожаротушением" - это не ИМХО ответ, который я хочу видеть от профессионала. опытный инженер.
Every bug that reaches production is a failure in the testing process- Почти правильно. "тестирование" является частью разработки. С 20 разработчиками вы должны использовать модульное / функциональное тестирование (предпочтительно оба). Таким образом, тестирование является неотъемлемой частью всего процесса разработки, а не отдельным процессом. Переформулировал бы как: Every bug that reaches production is a failure in the development process. Кроме того, я думаю, вам не хватает «руководства хочет функции XYZ от ABC». Всегда гигантский домпер на правильной работе. Затем вы получаете OP, требующий, чтобы вы остались допоздна ... затем вы ищете новую работу.
@AdrianoRepetti - кто сказал, что нет? Разработчики обычно впадают в эту циничную фазу, когда узнают, что руководство их компании их не слушает.
@Davor, потому что OP не упомянул об этом (и, вероятно, ему даже не нужно было бы спрашивать, сделал ли это кто-то). Мы делаем здесь слишком много предположений, и я хотел бы свести их к минимуму, когда это возможно. Судя по тому, что написал ОП, все, что я могу сказать, это то, что процесс должен быть улучшен (это всегда может быть), но у них есть серьезная (техническая) проблема с этим старшим (вне зависимости от того, имеет ли ОП право ожидать сверхурочную работу, это действительно зависит от культуры ).
Я имею в виду: код, который вы написали и у вас было достаточно времени для его тестирования... остановил 90% пользователей от использования сервиса? S* бывает, но мне как разработчику было бы стыдно отвечать "посмотрим завтра", какие бы у меня ни были причины (особенно если я не высказался заранее).
@AdrianoRepetti, может быть, он и сделал, но ничего не произошло. Мы видим только одну сторону здесь
@user определенно. Вот почему я говорил о предположениях . Буквально все или ничего может быть правдой, тогда, ИМХО, мы должны (в основном) придерживаться того, что мы знаем, потому что это написал ОП.
@AdrianoRepetti Я согласен с этим для комментариев (и обратите внимание, что ваш комментарий об «ожиданиях» основан на нескольких предположениях). Но ответы должны исходить из разных предположений, чтобы расширить помощь и людям, не являющимся ОП. Fwiw, я бы сказал, единственное, что мы ЗНАЕМ, это то, что есть сбой при тестировании и сбой в дизайне. Дело в том, что самое главное сейчас исправить - это тестирование и ШИРОКИЕ практики проектирования, а не производительность одного сотрудника (из 20)

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

Да, и не следует автоматически предполагать, что только потому, что другие команды отработают и исправят ошибку, они будут правы в этом вопросе. Они могут даже чувствовать то же самое, но не хотят затевать драку с руководством из-за этого.
Вопрос о том, как мы собираемся тестировать, который был задан около двух месяцев назад, и мы исправили его, запустив тесты для всех коммитов и prs.
@CodeProject последовательность событий в вашем редактировании на самом деле является довольно хорошим примером того, о чем предупреждает этот ответ. Тесты, которые вы проводили в конце февраля, не выявили эту проблему, так что проблема с тестированием на самом деле не была устранена. Скорее всего, в вашей кодовой базе есть области (или ее взаимодействие с базовой мобильной ОС или удаленными службами), которые еще недостаточно поняты, и в результате исправления ошибок по-прежнему содержат небезопасные предположения, которые нарушаются в ситуациях, выходящих за рамки тех, о которых вы думали. тест на. Требуется время , чтобы действительно понять, что это необходимо, тесты не могут уловить все.
Если вы действительно хотите «собственности», вы, вероятно, должны быть открыты для того, чтобы ваши старшие сотрудники определяли большую часть повестки дня, чтобы включить то, что им нужно сделать, чтобы действительно разобраться с основными проблемами. Напротив, если вы диктуете цели до такой степени, что они могут устранять только симптомы, то на самом деле вы взяли на себя ответственность таким образом, что лишаете их возможности сделать это.
@ChrisStratton Я согласен с той частью, что нам нужно время, чтобы понять нашу кодовую базу. Что касается второго комментария, у нас на самом деле было 2 спринта, в течение которых они решали, над чем они хотят работать: рефакторинг кода, исправление ошибок, добавление дополнительных тестов. Есть мысли как решить эту проблему?
Допустим, процесс определенно можно улучшить. Давайте также будем честными и признаем, что существует отдаленная вероятность того, что команда недостаточно компетентна. Кашель.
Поспешное исправление также может иметь катастрофические краткосрочные последствия,

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

Есть ли у вас QA/тестирование? Почему они не обнаружили, что первый и самый основной шаг (вход в систему) не работает. Как то, что вообще не работает, попало в производство.

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

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

Вопрос и его обновления дают понять, что тестирование проводится и что тестирование имеет решающее значение для решения о выпуске, но также и то, что тестирование, которое есть, не выявляет недостатки. Некоторые современные среды имеют достаточно отдельных движущихся частей, поэтому ожидать, что тесты поймают все, наивно, поскольку небезопасный код может работать или ломаться в зависимости от условий за пределами тестовой среды. Это указывает на систему с аспектами, которые никто в команде полностью не понимает.
@ChrisStratton Если ваши тестировщики не могут что-то протестировать, я бы предположил, что это сама проблема. Это также не объясняет, почему нет процесса простого отката изменений, которые пошли не так. Разработчики, скорее всего, не контролируют процедуры тестирования и эксплуатации и устали от постоянных сбоев в процессе.
Нет, ни тестировщики, ни автоматизированные тестовые наборы не могут предусмотреть все возможные варианты. У них есть своя роль, но набор возможных взаимодействий больше, чем вы можете перечислить, и легко включает в себя больше физического разнообразия, чем вы можете разумно купить или смоделировать, чтобы включить в свое тестовое покрытие. Исправления того, что сломало тесты в прошлый раз, недостаточно — оно должно быть правильным по дизайну и не иметь принципиально небезопасных частей, которые просто работают во всех протестированных тестах. Программное обеспечение, развернутое для клиентов , не обязательно так же просто откатить, как что-то на стороне сервера.
+1 это ответ, который я сочинил в своей голове
@ChrisStratton Оба утверждения верны, но их следует знать и учитывать. Если вы не можете получить достаточное тестовое покрытие и не можете откатить развертывание, вам следует заранее договориться с разработчиком, чтобы он мог решить любые проблемы, которые могут возникнуть. Я гораздо лучше реагирую на «Можете ли вы работать допоздна в следующую пятницу, чтобы решить любые вопросы, связанные с релизом?», чем на «Все снова пошло к черту, отмените свои планы».
@ChrisStratton, читая дальнейшие комментарии OP, похоже, что их идея тестирования ограничивается тем, что разработчики пишут модульные тесты.
@Aaron не соответствует действительности, они описали тестирование на нескольких моделях телефонов. Но ни то, ни другое не защитит от фундаментального непонимания мобильной ОС.
@ChrisStratton , это комментарий, который я имел в виду. Мне кажется, что нет тестировщиков и не так много тестов. Им нужна команда QA, а не те же разработчики, которые писали код, и тестировали его.
@user87779 user87779 - не так много, как вы думаете - когда мобильное приложение находится между часто неправильно понимаемой мобильной ОС и удаленными службами, объем взаимодействия легко превышает достижимый тестовый охват. Вы могли заметить, что спрашивающий описал ситуацию, которая прошла тесты , но все еще содержала ошибки, которые проявились только после выпуска. Это довольно распространено — кажется, что принципиально неверный код работает, пока он не подвергается воздействию только правильного набора обстоятельств, чтобы выявить недостаток. Или какое-то конкретное мобильное устройство на самом деле неправильно реализует API — это менее распространено, но все же случается.
@user87779 user87779 - я вижу много и того, и другого. Но с другой стороны, меня часто привлекают специально для решения такого рода проблем, т. е. чужого кода с небезопасными предположениями, которые не срабатывали в первоначальных тестах, или ситуаций, когда платформа фактически отклоняется от своей спецификации.

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

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

Отпустите свое эго и иррациональные убеждения.

Итак, уже поздно, и вы обнаруживаете ошибку, из-за которой 90% пользователей не могут войти в PROD... вы говорите, что если исследования показывают, что ваша лучшая работа выполняется в 10 утра, вам следует подождать до этого времени, чтобы работать над этим? Вам это не кажется глупым?
@Jeffc Если 90% пользователей не могут войти в систему, почему это не было обнаружено во время тестирования перед развертыванием? Это не баг, это системная ошибка. Где находится специальная группа поддержки из четырех команд, упомянутых выше? Даже при вращении.
Я не согласен с вашим комментарием... но я не согласен с вашим ответом. В любом случае, суть в том, что при обнаружении проблемы с PROD наступает время ее исправить, а не ждать оптимального, наиболее продуктивного времени для сотрудников.
@JeffC Я бы сказал, что пришло время откатиться от экспериментальной ветки, на которой они должны развернуть этот код. Затем методично исправьте проблему, не торопясь и, возможно, добавляя другие ошибки.

Термин, который вы ищете, — это дискреционные усилия , а не право собственности .

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

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

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

Исправление этого потребует времени, поэтому вместо этого я могу предложить временные меры:

Зафиксируйте коэффициент шины 1

Почему только один сотрудник может решить эту проблему?

Иметь дежурный список

В соответствии с возмещением, согласованным с отдельными работниками, а не столько, сколько вы думаете.

Выпускайте обновления в лучшее время

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

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

Вы пропустили часть, где ОП сказал, что старший сказал команде идти домой. Bus-factor> 1. Кроме того, мне интересно узнать обо всем этом «дискреционном усилии». Какой бы термин вы ни выбрали, в США инженеры — это профессионалы, что означает, что им, по сути, платят за выполнение работы, а не за работу в течение X часов (они решают или в большинстве случаев отказываются от права решать), как долго должны работать вещи. брать. Инженеры поставили продукт, которому они дали зеленый свет, но который оказался бракованным. Если это так, я думаю, что работодатель по закону имеет право ожидать ОТ, даже неоплачиваемого ОТ...
Но если у вас есть информация, говорящая об обратном, я внимательно слушаю.
Я не могу говорить за США, но в Австралии «рабочие» делятся на две категории: наемные работники и подрядчики. Инженеры могут быть наняты в качестве любого из них. Большую часть времени работники являются наемными работниками. Насколько мне известно, каждый инженер (более 200 человек), с которым я работал, был наемным работником.
Что касается неоплачиваемой сверхурочной работы, то в Австралии принуждение работника к неоплачиваемой сверхурочной работе, даже если он допустил ошибку, будет считаться незаконным.
Интересный. В США инженеры-программисты не имеют права на оплату сверхурочных (хотя я думаю, что это, по крайней мере, обычная практика, когда в их контракте есть пункт об оплате сверхурочных).
Я думаю, что в США их разделяют два термина: «контрактные инженеры» и «наемные инженеры». Вы вполне можете быть правы в том, что большинство/все инженеры работают по контракту. (Также может быть интересным юридическое определение термина «инженер» — в Европе он имеет четко определенное значение — это может быть не так для США, и «любой» может быть инженером?)
Интересный. Я работал в США и Японии, и я вижу человека, который сказал, что он поставил X, но поставил Y. Я ожидаю, что он заменит X на Y как можно скорее или согласится с тем, что я больше не буду нанимать их, чтобы они не давали мне то, что было обещано. Но видимо разные культуры и законы!
«Профессионалы» (подкатегория наемных работников) освобождаются от ограничений сверхурочной работы, поскольку они считаются достаточно осведомленными, чтобы определять свою собственную рабочую нагрузку / баланс заработной платы.
Насколько я помню, инженер не имеет юридического значения в США.
Юридическое значение слова «инженер» зависит от штата США. Что касается инженеров-программистов, для нас очень характерно быть либо подрядчиками, либо сотрудниками в США, а недавно я работал с подрядчиком из Австралии. (Контракт по-прежнему не позволял «заставлять» работать сверхурочно.)
«Профессионал» здесь ни при чем. Если вы получаете оклад и зарабатываете больше определенной суммы (я думаю, около 40 000, хотя эти цифры постоянно меняются в зависимости от распоряжений руководства), то вы не имеете законного права на оплачиваемую сверхурочную работу (хотя ваша компания все равно может выбрать политика сверхурочной работы, которая включает дополнительную оплату, она не требуется по закону).

Итак, вы ожидаете, что ваши сотрудники бросят свою социальную и / или семейную жизнь в мгновение ока, чтобы решить проблемы?

Неужели все так критично?

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

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

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

Если они действительно все критические, то почему бы вам не спланировать дежурную ротацию?

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

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

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

Ваше поведение

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

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

Это 100% ваша проблема.

Твоя команда

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

Вы отступили и спросили свою команду, как получить менее критические ошибки? Спрашивали ли вы свою команду, как, по их мнению, они должны справляться с ответственностью за неожиданные критические проблемы?

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

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

1. Они критичны. Эти два инцидента, которые у нас были, были: а) пользователи не могут войти в систему и б) пользователи не могут покупать продукты. Как я уже писал в своем вопросе, только эти две проблемы относятся к категории критических.
2. Что было не так, так это то, что мы не тестировали на всех устройствах, как мы договаривались. Это мобильное приложение, и правила тестируются на 6 устройствах * 4 ОС (всего 24).
3. Это мобильное приложение, и ротация по вызову не поможет, так как оно уже выпущено в AppStore.
4. Я остался и исправил проблему той ночью с остальными тремя - потратил 2,5 часа.
Я говорю много НЕТ, и многие люди в моей компании знают, что это мой ответ по умолчанию. Эта проблема может быть с моей стороны, и я ищу способ ее улучшить.
Возникновение проблем совместимости на различных устройствах является убедительным доказательством того, что у вашей кодовой базы есть серьезные проблемы с дизайном. Исправление конкретных сбоев — это бесконечный процесс, потому что всегда найдется телефон, предоставляющий допустимую возможность, о которой вы никогда не думали. Что вам нужно сделать, так это привести дизайн кода в соответствие с тем, как приложения на этой платформе должны взаимодействовать с системой, а это не то, что думали те , кто создавал исходную архитектуру, и часто это совсем не просто для понимания. С этой проблемой довольно легко обнаружить опубликованные приложения с огромной пользовательской базой.
Если проблема заключалась в отсутствии тестирования, решение состоит в том, чтобы тестировать больше. Не заставляйте своих разработчиков работать сверхурочно. Если вы решите недостаточно тестировать, у вас всегда будут критические проблемы, и вашим разработчикам всегда придется работать допоздна. Ваш ведущий разработчик видит это и пытается избежать создания прецедента типа «Ну, в прошлый раз, когда мы не тестировали, ты спас нас, Джо, так что…». Талантливые разработчики быстро превращаются в супергероев и им предстоит защищать свои границы.
Если вы и 3 человека задержались, чтобы исправить это, то проблема решена, не так ли? Я бы сосредоточился на улучшении тестирования, чтобы подобное больше не повторилось, а не наказывал разработчика за недостаточно усердную работу.
Пункты 3 и 4 противоречат друг другу. Вы говорите, что не можете решить проблему в нерабочее время из-за ограничений App Store, но затем вы говорите, что исправили ее в нерабочее время.
@Brandon - нет, магазины приложений не мешают создавать исправления, но они делают мгновенный откат и мгновенное обновление сложными и потенциально невозможными. Хотя я не согласен с большей частью того, что говорит спрашивающий, ложиться спать с ощущением, что проблема решена, имеет преимущества, даже если развертывание решения может иметь задержку проверки внешнего хранилища в несколько дней. Но ночные исправления, как правило, устраняют симптомы и простые ошибки, а не их основные причины. Ночное понимание глубоких проблем может быть полезным, но все равно потребует много усилий, чтобы стать решением.
@CodeProject Кто выбирает тестирование? Из вашего поста следует, что старший, о котором идет речь, также отвечал за разработку тестов...
@ChrisStratton Я согласен с вами, что что-то не так в кодовой базе. Я потратил на это полдня, и там есть часть кода, никто не знает, почему он написан именно так. Это будет огромный рефакторинг
@ Брэндон, я бы не сказал, что это отсутствие тестирования. Обычно мы тратим 1:1 dev:test, но в данном случае мы потратили 1:1,5 dev:test. Верно, мы знаем, что нам нужно больше времени для тестирования. Я смотрю на то, как они сказали, что продукт готов, а его нет, поэтому они должны держать свои слова.
@Марс, все в команде решают тесты вместе. Да, этот парень тоже в курсе, и он является частью всего процесса, включая разработку тестов.
@CodeProject Обновил мой ответ вашей новой информацией :)
«Я смотрю на то, как они сказали, что продукт готов, а его нет, поэтому они должны держать свои слова». Такое отношение будет смертью ваших отношений с вашими людьми.
Да, на данный момент, без моего реального наблюдения и выслушивания всех сторон конфликта, я не могу дать дальнейший совет. Я дал предложения. Что меня сейчас беспокоит, так это то, что я продолжаю слышать об обвинениях, а не о решениях, в том числе от людей, отличных от ОП. Я искренне верю, что пока вы продолжаете сосредотачиваться на обвинении и принуждении людей, проблема в вас. Вам нужно поговорить со своей командой по душам, как коллективно, так и один на один, и по-настоящему слушать. Не проверять, согласны ли они с вами. Но услышать их по-настоящему.

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

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

Попросите юриста по трудоустройству в вашей юрисдикции уточнить.

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

Кроме того, что сказал Сефе...

Очень хороший ответ, и я думаю, что он сокращает то, что, как я думаю, является самой сутью проблемы. Кроме того, если ОП хочет гарантий, они должны нанять подрядчиков, которым не платят зарплату. Подрядчики были бы обязаны поставить несмотря ни на что (как бы они ни считали нужным).
Кроме того, просто хочу сказать, что сотрудник, не выполняющий назначенную / обещанную задачу, скорее всего, будет проблемой производительности, а не дисциплинарной проблемой, если предположить, что сотрудник работал над ней в меру своих возможностей.
@GregoryCurrie согласился, что это может стать дисциплинарным взысканием, если это будет сделано намеренно.
Никто не способен разрабатывать мобильные приложения по контракту с фиксированной ценой именно из-за подобных проблем.
@ChrisStratton Я не думаю, что вы прокомментировали правильный пост ... не видел, чтобы кто-нибудь говорил о мобильных разработках с фиксированной ценой ...
Ответ был на первый комментарий, в котором предлагалась ошибочная идея о том, что использование подрядчиков, а не сотрудников, изменит эту ситуацию.
@ChrisStratton a Я думаю, что комментарий имел в виду, что вместо того, чтобы использовать сотрудников, наймите фрилансеров или других подрядчиков, которые по контракту должны выполнить веху X в дату Y. Избавляясь от необходимости соблюдать законы о сверхурочной работе. (в меньшей степени это относится к фрилансерам, поскольку их все равно нельзя заставить работать, если они не хотят)
Вы не найдете способных людей, готовых подписывать такие абсурдные контракты. Те, у кого есть реальные знания, понимают, что негибкие сроки приводят к бесполезному некачественному результату, потому что что-то пойдет не так, и когда они что-то сделают , придется дать. Чтобы действительно добиться чего-либо, структура должна позволять работать вместе для достижения целей и преодоления неожиданностей.
@ChrisStratton, к сожалению, не соответствует действительности. Подрядные компании слишком часто ставят потребность в новых и постоянных клиентах, деньгах или престиже намного раньше разумных сроков. Некоторые даже принимают краткосрочные финансовые потери, если это обеспечивает среднесрочный / долгосрочный денежный поток. с другой стороны, например, работать по дневной ставке и соглашаться на сверхурочную работу или работу в выходные / праздничные дни, будучи лишенными привилегий для сотрудников, и многие взимают надбавку за срочную работу, зарабатывая на жизнь только этим. В настоящее время продукты объявляются с датой публикации на несколько лет вперед и отсутствуют. это стоит десятки миллионов.
Нет. Реальность такова, что либо сроки срываются, либо поставляется неприемлемо низкое не качество — нередко и то, и другое. И кроме того, у вас не может быть договорного срока, если у вас нет значимого технического задания и спецификации. Большая часть проблем спрашивающего возникает из-за трудности (можно сказать, почти невозможности) определить с помощью внешнего тестирования, будет ли код работать во всех ситуациях, где это может быть желательно. Поиграйте в дедлайны, и вы можете получить что-то, что работает сегодня , но через месяц обнаружится , что оно не соответствует вашим реальным потребностям.
Напротив, когда люди, которые действительно разбираются в предмете, работают вместе — как менеджер и сотрудник, или как подрядчик и клиент, — они понимают , в чем заключаются проблемы и риски, они понимают, что некоторые из них невозможно предсказать, они понимают, что письменные спецификации никогда не улавливают все детали потребности, и поэтому они работают вместе, чтобы решить проблемы, а не сжигать отношения, предъявляя невыполнимые требования.
@ChrisStratton Я согласен, но тогда у вас есть финансы, и правление / руководство чаще всего будут устанавливать самые дешевые подходы и самые быстрые обороты, чтобы доход был получен раньше, а рентабельность инвестиций была достигнута быстрее. это может не иметь смысла во многих аспектах, но они добросовестно принять ошибочный релиз и некоторую негативную реакцию, а также дополнительные затраты на его исправление, уже получая прибыль. Они не заинтересованы в вашем подходе, потому что это требует больших первоначальных затрат и задерживает релизы. Я видел, как это случалось бесчисленное количество раз.
@ DigitalBlade969 - дело в том, что если кто-то настаивает на выпуске программного обеспечения с фундаментально сломанными внутренними компонентами, он должен принять на себя риск. Вы не можете сказать «это должно выйти в пятницу, несмотря ни на что», а затем «если это сломается, вы должны сотворить чудо» и повторять это снова и снова. Выберите свою точку зрения на компромисс между затратами и выгодами, но будьте честны в этом , примите последствия и имейте продуктивное отношение к совместной работе, чтобы оправиться от тех, которые неизбежны — сваливать вину вниз — непродуктивный подход к восстановлению .

Отвечая на обновленный вопрос:

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

Теоретически ваш процесс (т. е. автоматические тесты и покрытие тестами, планирование в спринтах, отсутствие внезапных изменений требований) должен предотвратить большинство проблем, с которыми вы сталкиваетесь.

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

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

Дело даже не в покрытии... Они перепроверили тесты и снова вылезают ошибки. Другими словами, кто-то испортил тесты ИЛИ исправления вызвали регрессию! Так кто несет ответственность за неудачные тесты? Старший, который дал зеленый свет, или менеджер, который поверил старшему?

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

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

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

Отвечая на обновленный вопрос,

Похоже, что была соблюдена хорошая рабочая практика:

  1. спринты
  2. функция блокируется близко к развертыванию
  3. оценка времени от разработчиков
  4. автоматизированные тесты

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

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

Лучшей идеей было бы внедрить идею чемпионов по контролю качества в команде и подход «3 amigos», т.е. продукт, разработчик и член отдела контроля качества вместе пишут спецификацию функций (дизайн, ориентированный на поведение). Это гарантирует, что «как член QA нарушит это» учитывается с самого начала, и это должно быть достаточно подробно, т.е. спецификация на примере. Член QA не обязательно должен быть человеком, пишущим автоматизацию, но он должен проверять код. Как упоминалось выше, автор кода не должен нести единоличную ответственность за аккредитацию его качества, и привлечение третьей стороны на как можно более раннем этапе процесса является положительным шагом.

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

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

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

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

Затем вы допустили две ошибки: во-первых, кажется, что время вашего освобождения было таково, что вам об этом сказали в 16:00. Релиз за полчаса до прихода разработчиков на работу. Очень простое решение, это ваша работа знать это. Во-вторых, кажется, что у работника нет мотивации работать сверхурочно. Оплата сверхурочных обычно работает довольно хорошо. Среда, в которой вы допускаете регулярную поставку неисправного кода, этого не делает.

Что? Похоже, ОП развернул продукт, который старший пометил зеленым. У ОП может даже не быть технического образования (хотя в данном случае это звучит так), но здесь отвечает старший инженер ... ОП может буквально даже не знать, что означают некоторые тесты, но человек, который платят за то, чтобы узнать, что они имеют в виду, сказали, что с ними все в порядке, а затем, после освобождения, сказали: «А, вообще-то…!» OP решил отправить «рабочий» продукт, а не сломанный.
«Кажется, у сотрудника нет мотивации работать сверхурочно» Хм... ясно, что это будет условием сохранения работы! Также не указано, что это неоплачиваемое ОТ, и прямо указано, что в прошлый раз, когда они работали немного больше, у них было МНОГО дополнительного свободного времени.
@Mars Apple выпускает мои приложения в AppStore, когда я нажимаю кнопку. Полностью под моим контролем. Я также могу сначала выпустить небольшой процент клиентов. Плей Маркет делает то же самое.
Моя ошибка, я не знал о ручном выпуске! Но остальные пункты остаются в силе. Кроме того, если предположить, что выпуск был около 16:00, это в основном прогноз: выпуск в 9 и получение отчетов в 10 по-прежнему оставляет только 7 часов на диагностику, исправление и повторное тестирование. Если требуется более 7, то это означает ОТ...
Кроме того, OP может не нести ответственности за выпуск — это может быть клиент. В этом случае им нужно обсудить с клиентом использование этой функции, но даже поднятие этой темы, скорее всего, не пройдет с менее технически подкованным клиентом... («Что значит отложить релиз? сказал, что вы протестировали его? Мы заплатили вам за его тестирование. Если вы не можете подготовить его к полному выпуску к сегодняшнему дню, тогда, возможно, нам нужен кто-то еще, кто может...")

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

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

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

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

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

  1. Когда вы сказали, что тесты все-таки не были написаны, почему они не были написаны? Был ли рассматриваемый случай недосмотром, или команда исказила завершение своей работы? Разумно ожидать, что первое будет происходить время от времени, второе — неприемлемое поведение, которое вы должны прояснить, что оно не будет допущено в будущем (если только это не было недоразумением с вашей стороны).

  2. После того, как тесты были написаны, как вы узнаете, что эти тесты верны? Вы анализировали тесты? Ясно, что они не работают; все они прошли успешно, но проблема, которая была явно проверена и заявлена ​​​​как исправленная, все же попала в производство. Нередки случаи, когда недобросовестные люди пишут тесты так, чтобы они всегда проходили успешно, особенно в условиях сжатых сроков. Если вы не в состоянии проверить тесты самостоятельно, вам следует найти кого-то из технических специалистов из другой команды, который проверит тесты за вас.

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

Вот что я думаю, что вы должны сделать:

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

  2. Просмотрите тестовую среду и сравните ее с рабочей, чтобы убедиться, что тестовая среда по-прежнему соответствует рабочей среде.

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

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

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

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

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

Итак, на мой взгляд, вам нужно сделать две вещи:

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

2:) Пока в рабочее время парень делает то, что должен делать, и выполняет свои KPI, с ним все в порядке, и с ним нужно обращаться по-дружески.

Мне кажется, что он просто больше ценит пребывание вне офиса, чем в нем.

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

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

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

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

Добро пожаловать в WorkPlace, где во всем виноват менеджер. Все .

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

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

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

Ожидания / законность здесь сильно зависят от того, где вы находитесь, но лично я никогда не работал в компании (США или Япония), где отсутствие собственности вашего старшего инженера было бы принято. Независимо от того, виновен он или нет, критическая ошибка должна быть исправлена ​​как можно скорее. К счастью, я также не работал в компании, где мне хотя бы не заплатили (в разумных пределах) за мои усилия по исправлению собственных ошибок.


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

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

Интересны культурные различия (Великобритания). Я считаю себя посвященным. Я с удовольствием работаю сверхурочно, чтобы приспособить людей, с которыми я работаю, И на самом деле в моем контракте указано, что я должен работать в свое время «для удовлетворения потребностей бизнеса», но если бы мне сразу же сказали, что я должен работать сверхурочно, чтобы исправил ошибку X, я был бы на полпути домой прежде, чем дверь перестанет качаться, мысленно обновляя свое резюме, когда я шел. Другая история, если бы СПРАШИВАЛИ, и я принял решение сделать это на своей спине, очевидно. К счастью, существуют работодатели и клиенты, которые уважают баланс между работой и личной жизнью сотрудников, и мне повезло.
@BrentHackers О, я, конечно, понимаю, что вынужденная сверхурочная работа и сверхурочная работа, которые вы считаете необходимыми, кажутся разными. Но в то же время, если бы я был этим старшим инженером, я бы подумал: «Вот дерьмо, мои ошибки или ошибки моей команды могут стоить этой компании клиентов. Я лучше внесу свой вклад, чтобы исправить это!»
Другое дело, когда ты чувствуешь, что виноват кто-то другой. Я отдал свою долю ОТ за чужие промахи, и это ужасно! Ушел оттуда очень быстро
«Добро пожаловать в WorkPlace, где во всем виноват менеджер. Во всем». -- Полностью согласен. Я прочитал вопрос, а затем приготовился к натиску ответов, заявляющих, что ОП - худший менеджер в мире. Не был разочарован.
@Graham Если прямые трансляции прерываются несколько раз в месяц, и они не ввели меры, чтобы предотвратить это, кого еще вы считаете ответственным?
@UKMonkey Как насчет тестера, который сказал, что все в порядке? Или тот, кто проверяет работу тестировщика?
@Марс или тот, который наблюдает за критиками каждый месяц, но не требует, чтобы команда что-то с этим делала?
@UKMonkey Здесь нет информации, позволяющей предположить, что они ничего не делают с этим ... Не говоря уже о том, что количество критических ударов не было особой проблемой до недавнего времени и, похоже, это очень локальная проблема. Но, как следует из моего ответа, я согласен с тем, что большая проблема заключается в том, что этот старший инженер в первую очередь выпускает критические замечания.
@UKMonkey Здесь действительно есть 2 вопроса: следует ли ожидать, что инженер бросит все, чтобы исправить неожиданные критические ошибки? С культурной точки зрения здесь это норма. Хотя нельзя сказать, что везде одинаково. Следует ли ожидать, что инженер бросит все, чтобы исправить критическую ошибку, которая была его ошибкой? Я бы сказал да, если они хотят сохранить свою работу.
«Здесь нет информации, позволяющей предположить, что они ничего не делают с этим», конечно, есть - это продолжается. Правильная реакция состоит в том, чтобы увидеть проблему, провести собрание команды, установить, почему возникают ошибки, и исправить их. Скорость не имеет значения, потому что КАЖДЫЙ раз, когда происходит сбой, должны быть предприняты шаги, чтобы гарантировать, что он не повторится;
@UKMonkey Как быстро должна быть решена проблема? Это происходит в ЭТОМ году. Это третий месяц года. Здесь нет никаких доказательств того, что у них не было собрания команды, или установить, почему возникают ошибки.
@UKMonkey Вы предполагаете, что они каждый раз совершают одни и те же ошибки ... посмотрите, сколько ОП опубликовало. Они не кажутся глупыми и не питают недоброжелательности, поэтому постарайтесь не думать о них худшее?
@Mars Я вообще не предполагаю худшее из них - причина, по которой пользователь не может войти в систему, может быть другой, но очевидно, что тестирования возможности пользователя сделать это недостаточно. Если бы я был менеджером, я бы вызвал тестировщиков и спросил, какие шаги они предприняли, чтобы это больше никогда не повторилось. Попытка обвинить инженера в том, что он хочет вернуться домой, когда ему не платят, я бы назвала злоупотреблением служебным положением.
@UKMonkey Я считаю, что тестировщик и инженер - одни и те же люди ... И тестировщики обнаружили ошибку (не недостаточное тестирование!), заявили, что исправили ее, и одобрили выпуск продукта. 1) Никто не говорил, что ТО не оплачивается (на самом деле, видимо, за небольшое ТО инженер получил много дополнительных отпусков), и 2) Почему инженеру платят в первую очередь, если он не занимается их работа правильно? Да, нужно предпринять шаги, чтобы помочь инженеру правильно выполнять свою работу в будущем, но в первую очередь — исправить релиз и свести к минимуму ущерб.

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

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

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

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

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

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

Такой подход — верный способ заработать репутацию вашего магазина как отличного места для разработчиков программного обеспечения. «Создавайте проекты вокруг целеустремленных людей. Предоставьте им необходимые условия и поддержку и доверьте им выполнение работы». (agilemanifesto.org) Это путь.
Обычно я могу с вами согласиться. Однако заявление OP Every time there is a critical bug...ясно дает понять, что это происходит довольно часто. И это говорит мне о том, что ОП, вполне возможно, терпит неудачу в своей работе и оказывает давление там, где ему не место. Лично я думаю, что ОП необходимо пересмотреть, почему они развертывают код с такими ошибками в производстве, и, возможно, выяснить, как это исправить, прежде чем увольнять людей. Другими словами, я пытаюсь понять, почему в месте с 20 разработчиками нет надлежащего тестирования или даже реальной производственной команды для решения этих проблем.
Если вы на самом деле реализуете процедуру, описанную во втором абзаце, я ожидаю, что «последствия» будут состоять в том, что три другие команды уйдут, чтобы выйти из-под пяты консервного диктатора.
Напомните мне никогда не работать в компании, где у вас есть какие-либо управленческие полномочия
@NotMe Разве старший инженер, проектирующий, разрабатывающий, тестирующий и выпускающий продукт, не является причиной возникновения этих критических ошибок? Я согласен, что команда производства/тестирования была бы гораздо лучшим форматом команды, но как есть (что также довольно распространено), это случай, когда кто-то, ответственный за продукт, не доставляет продукт должным образом...
@Mars: судя по обновлению OP, похоже, что причина этих критических ошибок заключается в том, что их тестовая среда фактически не использует копию живых данных. Другими словами, их тестовая среда/план — это мусор. Они должны исправить это в первую очередь.
@NotMe Если это так, я полностью согласен. Но похоже, что это проблема только этой команды — что означает, что у лидера этой команды недостаточно среды… Но мне это не показалось так. Больше похоже на то, что они утверждали, что исправили это, но потеряли исправление где-то по пути (на самом деле не исправлено или потеряно во время слияний и т. д.).
Если вы уволите всю команду разработчиков или даже пригрозите это сделать, будьте уверены, что никто не задержится допоздна, чтобы исправить критические ошибки.
@Mars Я думаю, что это просто команда, которая не опаздывает, чтобы исправить критические ошибки, хотя он на самом деле не уточнил, есть ли они у других команд или нет.
Истинный. Я думаю, что обе стороны делают предположения здесь - этот вопрос кажется мне слишком культурным. Я прочитал это (уже после обновления), и у меня сложилось впечатление, что человек даже отдаленно не подходит для того, чтобы занимать ответственную должность, но мой ответ, и это пока отрицательный, это даже не смешно ха-ха