Подтвердить что ты не робот

Исправление ошибки при серьезных временных ограничениях

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

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

4b9b3361

Ответ 1

Ответ AnthonyWJones на высокий рейтинг выше, в основном

Другим становится коммерческий руководитель и использовать какой-то здравый смысл, что такое риск, который вы представили другому, как серьезная или более серьезная ошибка? Как будет клиент реагирует на это? Как будет клиент реагирует, если вы объясните свое нужно больше времени? Взвесьте ответы и сделать коммерческий/исполнительный Решение

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

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

Если клиент слишком занят, чтобы поговорить с вами, вы должны объяснить (по электронной почте или по пятнам крови, что угодно), что у вас будет короткое замыкание QA и, возможно, ввести другие ошибки в процессе. Вкратце вам нужно поговорить о вероятности того, что те, кто , важнее, чем ошибка, о которой идет речь. У вас есть опыт и вы знаете, что вы делаете (в некоторой степени), поэтому вам нужно помочь чтобы понять, насколько безумны (или нет) то, о чем они просят.

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

Но во всех случаях вам нечего терять дзен. Когда-либо.

Ответ 2

Здесь уже есть отличный совет, но я хотел бы добавить что-то еще:

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

Еще в конце 1980-х годов я исправил ошибку, которая была глубоко погружена в очень старую программу. Но в одном случае он работал неправильно. Когда я исследовал дальше, я обнаружил, что "временная" работа была создана. В комментарии говорилось:

C TEMPORARY WORK-AROUND UNTIL I FIND THE REAL CAUSE.  I CHARNY, SUMMER STUDENT, AUG 1971

Ирв Чарни был моим боссом, когда я нашел эту 15-летнюю "временную работу".

Ответ 3

Одна лучшая практика очевидна не "Непрерывная работа без достаточного количества перерывов"

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

Ответ 5

Есть ряд вопросов, которые поднимает этот вопрос для меня.

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

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

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

Ответ 6

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

Ответ 7

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

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

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

Ответ 8

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

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

Ответ 9

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

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

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

Ответ 10

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

Самое главное - остановить огонь и сделать клиента счастливым.

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

Ответ 11

Это действительно зависит от проблемы.

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

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

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

Ответ 12

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

Ответ 13

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

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

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

Ответ 14

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

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

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