Обучение · Урок 8

Как вести исключения и неисправности?

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

Чему вы научитесь в этом уроке

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

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

Цели урока

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

Условие: поток из пятого урока и карта интеграции из шестого. Без потока нет и исключений; исключение рождается на краю работающего потока.

Что такое исключение и что такое неисправность?

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

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

Исключение

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

Неисправность

Система поступает иначе там, где записано правило. Лечение это исправление, и держится ли исправление, проверяется отдельно.

Знак границы

Если спор "исключение это или неисправность" затягивается, карта в этом месте неясна. Спор решается на карте, а не в системе.

Журнал исключений: четыре столбца

Журнал помещается на одной странице, и каждая строка описывает одно исключение. Четыре столбца отвечают четырём вопросам, которые задаются при появлении исключения; когда столбец остаётся пустым, это исключение ничего не переносит в следующий раз.

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

Четыре столбца журнала

  • Какое исключение: пришедший вход или случай, одним предложением
  • Когда появилось: дата и на каком шаге
  • Как решили: что сделали, кто решил
  • Дошло ли до системы: стало ли правилом и если да, куда записано

Четвёртый столбец держит журнал живым. Если он пуст, журнал становится архивом; если заполняется, карта процесса растёт сама.

Неожиданный вход: половина формы, пропущенное поле, изменённый формат

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

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

Половина формы

Запись возникла, но часть полей пуста. Решение: запись придерживается, пишется как есть или переспрашивается у отправителя.

Пропущенное обязательное поле

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

Изменённый формат

На стороне источника меняется формат даты или телефона. Поток продолжает читать по-старому, и значение тихо портится.

Двойные записи и сверка

В шестом уроке выбран ключ сверки; этот урок берёт случаи, когда тот ключ не держит. Один и тот же человек пишет во второй раз, одна и та же форма уходит дважды, один и тот же заказ входит по двум каналам.

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

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

Какая неисправность останавливает, а какая продолжает

Останавливать поток при каждой неисправности выглядит надёжно, но останавливает работу; не останавливать вовсе держит работу, но растит неверный результат. Решение принимается по каждой неисправности и пишется на карте.

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

Останавливающая неисправность

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

Продолжающая неисправность

Случаи, задевающие одну запись и обратимые. Запись помечается, поток идёт с остальными, а помеченные записи проходят в конце дня.

Работа наполовину

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

Кто узнаёт, когда система выдаёт неисправность

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

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

Что держит строка оповещения

  • Кто узнаёт: один названный по имени человек
  • Как узнаёт: какой канал, с каким заголовком
  • Когда узнаёт: сразу или собранным в конце дня
  • Кто подменяет: когда первый человек не может посмотреть
  • Ожидание ответа: обговорено ли, в какой срок смотрят

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

Где хранится запись неисправности и как она читается

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

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

1 Найти запись

Какая запись, какой промежуток времени. Без опознавателя поиск идёт от даты, и соседние записи тоже видны.

2 Прочитать последовательность

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

3 Сверить вход

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

Откуда делается ручное вмешательство

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

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

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

Тихий сбой: работать неверно без сообщения

Самая дорогая неисправность та, что не выдаёт неисправности. Поток выглядит зелёным, записи создаются, никто не получает оповещения; а полученный результат неверен. Задетый одной фразой в шестом уроке, это и есть настоящий предмет ведения исключений.

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

Типичные места тихого сбоя

  • Пустое значение падает до значения по умолчанию и выглядит заполненным
  • Формат даты читается наоборот, а запись всё ещё выглядит годной
  • Сопоставление держит не ту запись, а операция завершается верно
  • Условие не входит ни в один путь, и запись тихо ждёт
  • Связь переносит половину, и в назначении возникает неполная запись

Общее у них вот что: во всех система говорит "успешно". Поэтому тихий сбой ловится измерением, а не оповещением.

Сделать тихий сбой видимым

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

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

1 Подсчёт

Число входов сравнивается с числом выходов. Разница показывает записи, тихо выпадающие по дороге.

2 Сверка

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

3 Выборка

Несколько случайных записей прослеживаются от начала до конца. Это наблюдение, а не измерение; здесь видны отклонения, которых отчёт не показывает.

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

От исключения к правилу: когда оно доходит до системы

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

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

Шаги превращения в правило

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

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

Пример от начала до конца: агентство недвижимости встречает исключения

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

Ни один из трёх не записан на карте. Ответственная за офис заносит каждый в журнал и пишет решение; к концу недели две строки из трёх становятся правилами.

Первые три строки журнала

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

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

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

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

Две строки из трёх стали правилами, одна осталась в наблюдении. Ценность журнала видна здесь: записано не только какое решение принято, но и какое дошло до системы.

Упражнение: на этой неделе

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

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

Частые ошибки

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

Вести без журнала

Решение принимается в разговоре и не заносится. Когда тот же случай приходит во второй раз, принимается другое решение, и две записи обрабатываются по-разному.

Останавливать при каждой неисправности

Отклонение, задевающее одну запись, останавливает весь поток. Через некоторое время оповещения выключают, и настоящая останавливающая неисправность тоже остаётся невидимой.

Оповещать в общий ящик

Оповещение уходит всем, и никто его не берёт. Непросмотренное оповещение даёт тот же итог, что и неотправленное.

Вмешательство без следа

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

Доверять отчёту системы

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

Сразу превращать исключение в правило

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

Контрольный список

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

Поставлено ли ведение исключений

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

Словарь

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

Что дальше

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

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

Урок 7: Когда автоматизация не работает

Лист неисправности, способ деления пополам и стойкое исправление. Журнал этого урока питает его.

Урок 6: Заставить системы говорить

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

Все уроки

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

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

Запросить через WhatsApp

Частые вопросы

Как на практике отличить исключение от неисправности?
Смотрят на карту: если ответ для того случая записан, а система поступила иначе, это неисправность; если не записан, это исключение. Различие важно, потому что лечение разное: неисправность исправляют, исключение решают и решение пишут в журнал. Если то же исключение повторяется, оно уже считается недостающим правилом.
Нужно ли каждое исключение переносить в систему?
Не нужно. Случай, увиденный однажды, можно записать в журнал и подождать; добавление условия в поток каждый раз утяжеляет уход. Мерило это частота и цена: повторяющиеся или дающие необратимый результат исключения превращают в правила, остальные остаются в наблюдении.
При какой неисправности поток должен остановиться?
Остановку предпочитают на шагах, чей результат не вернуть: сообщение наружу, платёж, стойкое удаление. Там, где задета одна запись и результат обратим, запись можно пометить и продолжить поток. В сомнении остановка обходится дешевле, чем рост неверного результата.
Как замечают тихий сбой?
Измерением, а не оповещением. Поскольку система внутри себя согласована, она не сообщает о себе. Сравнить число входов с числом выходов, открыть рядом одну и ту же запись в двух системах и проследить несколько случайных записей от начала до конца может вывести на поверхность большую часть тихих сбоев.
Портит ли ручное вмешательство поток?
Не портит, а делает его живучим. Портит вмешательство без следа: если не записано, кто что сделал, причину не найти в следующий раз, когда запись сломается. Как только вмешательство входит в журнал строкой исключения, след остаётся, а повторяющиеся вмешательства могут стать правилами.