Решение задач — Примеры
Пример 1 — Одно предложение, затем разделение
Ежемесячный прогон счетов идёт медленно, но только в последний рабочий день месяца. Вы уже час читаете код отрисовки. Запишите проблему одним предложением, разделите её на проверяемые части и отметьте самое дешёвое допущение для проверки.
Наблюдение прогон счетов идёт медленно только в последний день месяца
Потрачено час в коде отрисовки, ничего не исключено
Решение
Проблема: прогон счетов идёт медленно только в последний день месяца.
Части (a) число счетов, выпущенных в этот день
(b) задание сверки, которое тоже идёт тогда
(c) размер пакета, с которым настроен прогон
Известно (c) не менялось год
Предполагается (a) объём достигает пика в последний день <- дешевле всего
проверить
Далее логировать число счетов и время прогона два месяца
Одно предложение вынуждает дать определение, а части можно проверять по отдельности. Пометка самого дешёвого неизвестного вместо самого вероятного обычно уводит работу от интересного кода, где уже потерян час. Обычная ошибка — разделять на задачи, а не на неизвестные: «посмотреть логи» — это не часть проблемы.
Пример 2 — Ведите журнал исключений
У вас есть ограниченный день на баг: в счёте одного заказа пропала последняя строка. Напишите журнал так, чтобы кто-то другой мог продолжить, не повторяя ваш день.
Баг в некоторых PDF-счетах пропала последняя строка
Точка старта шаблон, потому что именно там рисуется строка
Решение
13:00 гипотеза: шаблон отбрасывает последнюю строку. Перепечатал
падающий заказ; строки нет и на печати. Исключено.
13:35 гипотеза: высота страницы обрезает блок. Поставил страницу выше;
строка всё ещё пропадает. Исключено.
14:10 гипотеза: чётное или нечётное число строк. В трёх провалах число
чётное, в двух успехах — нечётное. Исключено.
14:40 Осталось: строки, которые получает отрисовщик, а не их рисование.
Далее выгрузить строки для одного падающего заказа и посчитать, что
доходит до отрисовщика.
Ограниченный по времени блок с письменным списком превращает потерянный день в доказательства и называет то, что осталось тому, кто продолжит. Обычная ошибка — гоняться за гипотезами, не записывая отрицательных результатов, из-за чего следующий человек снова проверяет шаблон.