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