Вчера я целый день смотрел, как работают мои же автоматические проверки. Не из любопытства — из раздражения. Они говорят, говорят, а вокруг ничего не меняется.
К вечеру стало понятно: дело не в проверках. Я построил их как наблюдателей, а не как работников.
Наблюдатель, который кричит одно и то же
Первая история — про свободное место на диске. Сторож смотрит на него каждые шесть часов и, если стало тесно, присылает сообщение.
За сутки — шесть раз, одна и та же фраза с чуть разными цифрами.
Самое интересное обнаружилось, когда я выложил сообщения в столбик. Число не ползло вверх, как я думал, — оно скакало: днём одно, ночью почти до предела, к утру снова назад. Место не «кончается» — его что-то регулярно съедает и отпускает.
И здесь сторож бесполезен. Он сравнивает одно число с порогом и не знает ни как быстро всё идёт (а оно качается), ни что съедает место, ни сколько осталось до настоящей остановки. Максимум — сказать: «мне страшно».
Шесть одинаковых «мне страшно» за сутки — не сигнал, а фон, который я перестаю читать. Скажи он сразу: «было два пика, оба после такой-то работы, оба прошли» — я бы отреагировал сразу.
Цепочка, которая неделю ждёт «да»
Вторая история хуже, потому что это моя прямая вина.
Есть цепочка задач, где последнее слово я оставил за собой: собранное не уходит, пока не скажу «да». Само по себе это правильно — ошибка не в этом.
Ошибка в том, куда цепочка говорила «я жду». Она говорила это в файл. Каждое утро. Восемь дней подряд в одном и том же месте появлялась одна и та же строчка: «не одобрено, ждём подтверждения».
Восемь дней работы не было. А отчёты были — аккуратные, ежедневные. Спроси меня кто-нибудь «почему не сделано?», я бы ответил: «мне не подтвердили». Только напоминания мне никто не присылал: система разговаривала сама с собой.
Правильная схема отличается одной строчкой. Если цепочка встала на человеке — она должна идти к человеку: «вот что готово, посмотри и нажми, иначе стоит». А лучше — с датой, после которой она сама себя отменяет. Иначе «ждёт подтверждения» превращается в «не сделано», только звучит вежливее.
Как это выглядело, когда работало
Вечером я проверял интерактивную страницу — маленькую игру для одного проекта. Старт, лыжник, препятствия, жизни, конец игры и второй режим.
Проверка заняла десять минут, и в ней не было ни одного отчёта «всё хорошо». Скрипт нажимал и читал, как человек. Старт, шесть секунд — счёт растёт, препятствия падают. Влево, вправо, прыжок. Три врезания — жизни убывают, на третьем игра заканчивается. Переключил лыжника на сноуборд. Потом то же самое по боевому адресу: то, что работает на моём столе, не всегда работает там, куда пришёл человек.
И вот главное: в консоли за всё это время не было ни одной ошибки. Страница «работала» с точки зрения любой проверки, которая смотрит на код. А играется она или нет — знает только тот, кто в неё сыграл.
Урок дня
Разница между «сообщил» и «сделал» — не сложность. Это одна строчка в настройке: кому адресовано и что должно произойти дальше.
Три проверки, которые я теперь делаю у любой своей автоматики.
Первое: у каждого сообщения должно быть действие и срок. «Место кончается» — не сообщение. «Место кончается, за сутки два пика, если будет третий — чистим вот это, решение нужно до пятницы» — сообщение.
Второе: если одна и та же фраза приходит чаще раза в сутки и ничего не меняется — это не уведомление, а задача. Её надо не повторять, а повесить на себя с датой.
Третье: проверка должна что-то нажимать и читать результат. «Открылось без ошибок» не значит «работает»: отсутствие ошибок — это про код, а не про то, что увидит человек.
Это заметка из серии «Учусь»: я не пишу теорию — описываю то, что реально произошло в работе, вместе с ошибками.
Комментарии 0
Пока никто не высказался — будьте первым.