Лекция 7. Что изменилось? Дифференциальная диагностика

Есть один вопрос, который распутывает поломки быстрее любого другого, — «что изменилось?». Логика проста и неотразима: если раньше работало, а теперь нет, значит, между «тогда» и «сейчас» что-то поменялось, и это что-то почти наверняка и есть причина. Найди перемену — найдёшь виновника. На том же держится и родственный приём — сравнивать, где работает и где не работает: разница между исправным и сломанным содержит причину. Вместе это называют диагностикой по контрасту, и она превращает бескрайнее «почему сломалось?» в короткий, конкретный список отличий. Сегодня разберём силу вопроса «что изменилось?», приём сравнения работающего со сломанным и коварную ловушку «я ничего не менял».

План лекции

1. Самый полезный вопрос. 2. Найти перемену на границе. 3. «Я ничего не менял». 4. Сравнить работающее и сломанное. 5. Различия и совпадения. 6. Где и когда — а где и когда нет. 7. Как применять.

1. Самый полезный вопрос

Если бы диагносту разрешили задать только один вопрос, это был бы «что изменилось?». Он так силён, потому что опирается на железную логику: исправная система не ломается сама по себе, без причины. Раз вчера работала, а сегодня нет, значит, между вчера и сегодня что-то произошло — и это что-то вывело её из строя. Причина не берётся из ниоткуда; у неё есть момент появления, а у момента — своё событие. Найдите событие — и вы у цели.

Этот вопрос резко сужает поиск, отсекая всё стабильное. Всё, что не менялось, работало же раньше — значит, оно ни при чём, его можно исключить. Под подозрением остаётся только то, что изменилось, а это обычно куда более короткий список, чем «всё, что вообще может быть неисправно». Поэтому опытный диагност, услышав «сломалось», первым делом спрашивает не «что сломано?», а «что изменилось перед тем, как сломалось?». Обновили программу? Поменяли настройку? Заменили деталь? Пришли новые данные? Изменились условия — погода, нагрузка, время? Ответ часто указывает прямо на причину, и чинить дальше почти не приходится. Разберёмся, как этим вопросом пользоваться — и почему он иногда обманывает.

Что изменилось на границе «работало → сломалось» работало (раньше) не работает (теперь) что-то изменилось здесь обновление · новая настройка · новые данные · износ · погода «я ничего не менял» ≠ «ничего не изменилось» — ищи скрытую перемену
Взгляните на схему: если раньше работало, а теперь нет, значит, между «тогда» и «сейчас» что-то изменилось, — и это изменение почти наверняка и есть причина. Слева зелёным — отрезок времени, когда всё было исправно; справа красным — когда сломалось; а посередине, жёлтой чертой, — граница, момент перелома. Главный вопрос диагноста: что произошло на этой границе? Что изменилось прямо перед тем, как всё сломалось? Обновление программы, новая настройка, свежие данные, износ детали, смена погоды или нагрузки. Найдёте перемену на границе — и, скорее всего, найдёте причину: до неё работало, после неё нет. Но есть важная тонкость, вынесенная вниз схемы: фраза «я ничего не менял» вовсе не значит, что ничего не изменилось. Очень часто перемена произошла сама, без нашего участия: система обновилась ночью, кончилось место, сменился день или сезон, что-то износилось, изменились входные данные извне. Поэтому, услышав от себя или других «да я ничего не трогал», не верьте на слово — ищите скрытое изменение, которое случилось помимо воли. Оно почти всегда есть, и оно почти всегда и есть корень.

2. Найти перемену на границе

Вопрос «что изменилось?» удобнее всего задавать через образ временной границы, показанный на схеме. Есть отрезок, когда всё работало, и отрезок, когда всё сломалось, а между ними — граница, момент перелома. Наша цель — найти, что произошло на этой границе. Чем точнее мы определим момент, когда всё сломалось, тем короче список того, что тогда менялось, и тем ближе причина.

Отсюда прямая связь с методом половинного деления из четвёртой лекции: чтобы найти границу во времени, делите интервал пополам. Работало неделю назад, не работает сегодня — а в среду работало? Работало — значит, перелом между средой и сегодня; не работало — между неделей назад и средой. Несколько таких вопросов — и вы сужаете неделю до конкретного дня или даже часа, когда всё сломалось. А зная точный момент, легко поднять, что тогда происходило: какое обновление встало, какую настройку тронули, что подключили. Список изменений в узком окне времени обычно совсем короток, и причина в нём как на ладони. Поэтому два приёма работают в связке: «что изменилось?» говорит, где искать причину (среди перемен), а половинное деление времени быстро находит сам момент перемены. Сначала загоняем перелом в узкое окно, потом смотрим, что в этом окне изменилось.

3. «Я ничего не менял»

Здесь нас поджидает самая частая и коварная ловушка. На вопрос «что изменилось?» почти всегда следует ответ: «да ничего я не трогал, оно само сломалось». Этому ответу нельзя верить — не потому, что люди врут, а потому, что «я ничего не менял» и «ничего не изменилось» — совершенно разные вещи. Вы могли ничего не трогать, а изменение всё равно произошло — само, без вашего участия.

Скрытых, «самопроизвольных» изменений вокруг полно. Программа обновилась автоматически ночью. Закончилось свободное место или ресурс, копившийся незаметно. Сменился день, месяц, сезон — и что-то, завязанное на дату, повело себя иначе (классика — сбои, случающиеся ровно в полночь, в конце месяца или в високосный год). Деталь потихоньку изнашивалась и наконец переступила порог. Изменились данные, приходящие извне. Поменялась погода, температура, влажность, напряжение в сети. Что-то в соседней системе, о которой вы и не думали, обновилось и потянуло за собой. Во всех этих случаях честный ответ «я ничего не менял» — чистая правда, и всё же изменение было. Поэтому мудрый диагност, услышав «ничего не менялось», не закрывает эту линию, а наоборот — начинает копать глубже: раз явных изменений нет, ищем скрытое, случившееся помимо воли. Спросите иначе: не «что вы поменяли?», а «что могло измениться само — обновиться, закончиться, износиться, прийти извне?». Скрытая перемена почти всегда найдётся, и она-то обычно и окажется корнем.

4. Сравнить работающее и сломанное

Вопрос «что изменилось?» — это сравнение во времени: было и стало. Но сравнивать можно и в пространстве: вот здесь работает, а вот здесь — нет. И разница между этими случаями точно так же содержит причину.

Работает / не работает: разница и есть причина Где работает ✓ на моём компьютере, вчера, у соседа Где не работает ✗ у клиента, сегодня, на этой машине Чем они отличаются? версия, настройки, данные, сеть, права причина прячется среди различий — проверяй их по одному
Взгляните на схему: один из сильнейших приёмов диагностики — сравнить, где работает и где нет, потому что разница между ними и содержит причину. Слева зелёным — случаи, где всё исправно: на моём компьютере, вчера, у соседа. Справа красным — где ломается: у клиента, сегодня, на этой машине. Сами по себе эти два случая мало что говорят. Но стоит спросить, чем именно они отличаются, — и внизу, синим, проступает список различий: другая версия, другие настройки, другие данные, другая сеть, другие права доступа. Причина обязана быть среди этих различий — ведь если бы всё было одинаково, работало бы одинаково. Значит, дальше их надо перебирать по одному: убрать или выровнять различие и посмотреть, не исчез ли сбой. Совпадающее можно смело выбросить из поиска: раз оно одинаково и там, где работает, и там, где нет, оно ни при чём. Так огромное «почему не работает» превращается в короткий список конкретных отличий, а поиск причины — в их методичную проверку. Это и называют диагностикой по контрасту: не гадать в пустоте, а сравнивать исправное со сломанным.

Ситуация знакома каждому: «у меня работает, а у него нет», «на одной машине идёт, на другой ни в какую», «этот файл открывается, а тот — с ошибкой». Как показывает схема, приём тут тот же: взять исправный случай и сломанный и выписать, чем они отличаются. Причина обязана быть среди различий — это неоспоримо: будь всё одинаково, и вело бы себя одинаково; раз ведёт по-разному, где-то есть разница, и она-то виновата. Другая версия, другие настройки, другие данные, другая сеть, другие права, другое железо — что угодно из этого. Ценность приёма в том, что он даёт готовый, конкретный список подозреваемых вместо расплывчатого «почему же не работает». А дальше — знакомая работа: перебирать различия по одному (лучше делением пополам), проверяя, какое из них решает дело. Особенно хорош этот приём, когда рядом есть эталон — заведомо исправный близнец сломанного: сравнение с ним почти всегда быстро выводит на причину. Нет живого эталона — сравнивайте с прошлым состоянием той же системы (когда работала) или с описанием того, как должно быть.

5. Различия и совпадения

У сравнения есть тонкость, которая удваивает его силу: полезны не только различия, но и совпадения — только каждое по-своему. Различия говорят, где может быть причина: она среди них. А совпадения говорят, где причины точно нет: то, что одинаково и в работающем, и в сломанном случае, невиновно, ведь при исправном случае оно не мешает. Это позволяет вычёркивать целые пласты подозрений. «И там, и там одна и та же версия программы» — значит, версия ни при чём, забыли про неё. «И там, и там одинаковые данные» — данные исключаем.

Так сравнение работает как сито с двух сторон: различия наполняют список подозреваемых, совпадения его прореживают. Чем больше у вас пар «работает / не работает», тем мощнее сито. Скажем, если сбой есть на двух очень разных машинах, то всё, чем эти машины различаются между собой, вылетает из подозрений — причина в том общем, что у них есть. А если сбой то есть, то нет на одной и той же машине, ищите различие между «есть» и «нет» уже внутри неё — в условиях, во времени, в данных. Полезная привычка — активно набирать такие сравнения: попробовать воспроизвести сбой в других местах и условиях не только чтобы поймать его (как в третьей лекции), но и чтобы каждым новым случаем «работает» или «не работает» отсекать очередной пласт версий. Каждая пара сравнения — это бесплатная порция информации о том, где причина и где её нет.

6. Где и когда — а где и когда нет

Доведём приём сравнения до отточенного инструмента, которым пользуются профессиональные диагносты. Идея: описать не только там, где проблема есть, но и — так же тщательно — где её нет. Составить две колонки: «проблема проявляется» и «проблема НЕ проявляется» — по нескольким осям: где, когда, у кого, при каких условиях, на каких данных. Часто именно граница между «есть» и «нет» ярче всего высвечивает причину.

Пример проясняет. Ошибка есть на больших файлах и нет на маленьких; есть после обеда и нет утром; есть у новых пользователей и нет у старых. Каждая такая пара «есть / нет» — это различие, указывающее на причину, и вместе они сильно сужают её. «Есть на больших, нет на маленьких» намекает на нехватку памяти или объёма. «Есть после обеда, нет утром» — на что-то, накапливающееся за день. «Есть у новых, нет у старых» — на настройку, которая появляется при создании учётной записи. Обратите особое внимание на неожиданные «нет»: где проблема, казалось бы, должна быть, а её нет? Эти дыры в картине часто самые информативные — они опровергают напрашивающиеся версии и указывают на неочевидную. Сам приём прост: не довольствуйтесь описанием, где болит, — так же дотошно опишите, где не болит, и сравните. Граница между этими областями почти всегда сжимает круг подозреваемых до немногих, а то и до одного.

7. Как применять

Соберём в практику. Столкнувшись с поломкой, особенно с той, что «раньше работала», начните не с разборки, а с двух вопросов сравнения. Первый, во времени: что изменилось перед тем, как сломалось? Загоните момент перелома в узкое окно (делением пополам: «а тогда работало?») и посмотрите, что в этом окне поменялось, — не забывая про скрытые, самопроизвольные изменения, ведь «я ничего не менял» не значит «ничего не изменилось». Второй, в пространстве: где работает, а где нет, и чем эти случаи отличаются? Выпишите различия (это список подозреваемых) и совпадения (это исключённые), опишите заодно, где проблемы нет, и сравните. Причина почти всегда прячется среди найденных различий — дальше проверяйте их по одному.

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

Итоги

  • «Что изменилось?» — самый полезный вопрос диагноста: исправное не ломается само, значит, между «работало» и «сломалось» что-то поменялось, и это и есть причина. Вопрос отсекает всё стабильное.
  • Найти перемену на границе помогает половинное деление времени: «а тогда работало?» сужает момент поломки до узкого окна, где список изменений короток.
  • «Я ничего не менял» ≠ «ничего не изменилось»: перемена часто происходит сама (автообновление, кончился ресурс, смена даты, износ, новые данные, погода). Услышав «ничего не трогал», ищи скрытое изменение.
  • Сравнение работающего и сломанного: причина обязана быть среди различий (будь всё одинаково — вело бы себя одинаково). Различия — список подозреваемых, совпадения — исключённые.
  • Приём «есть / нет»: тщательно описать не только где проблема есть, но и где её нет, по осям (где, когда, у кого, при чём). Граница между «есть» и «нет» ярче всего высвечивает причину; особенно информативны неожиданные «нет».
  • Диагностика по контрасту переводит бескрайнее «почему сломалось?» в короткий конкретный список отличий, который дальше проверяют по одному.

Вопросы для самопроверки

  1. Почему «что изменилось?» — такой сильный вопрос? Что он позволяет отсечь?
  2. Как половинное деление помогает найти момент перелома во времени?
  3. Почему нельзя верить ответу «я ничего не менял»? Приведите примеры скрытых изменений.
  4. Как сравнение работающего и сломанного даёт список подозреваемых? Чем полезны совпадения?
  5. Возьмите проблему «раньше работало, теперь нет» и разберите её вопросами «что изменилось?» и «где есть, а где нет?».

Литература

  • Чарльз Кепнер, Бенджамин Трего. «Новый рациональный менеджер» — анализ «есть / не есть» в поиске причины.
  • Дэвид Аганс. «Отладка. 9 незыблемых правил» — правило «что изменилось?».
  • Джон Сонмез и практики отладки — сравнение рабочего и нерабочего окружения как метод.

🧠 Разобрать «что изменилось» с Фреди

Раньше работало, а теперь нет — и непонятно почему? Разберите с Фреди по контрасту: что изменилось перед поломкой (не забывая про скрытые перемены) и чем отличаются случаи, где работает и где нет. Причина почти всегда прячется среди этих различий.

Это седьмая лекция курса «Траблшутинг». В следующей возьмёмся за то, без чего вся диагностика слепа, — за наблюдение: как сделать невидимое видимым с помощью логов, измерений и приборов, чтобы было что сравнивать и проверять. А разобрать «что изменилось» в своей проблеме всегда можно вместе с Фреди.

Хотите разобрать вашу ситуацию по этой теме?
Фреди — виртуальный психолог: бесплатно, круглосуточно и без записи. Расскажите, что происходит, — он поможет разложить всё по полочкам.
Поговорить с Фреди →
Андрей Мейстер
Кандидат психологических наук, психолог-методолог. Специалист по системному мышлению и разговорному гипнозу, автор образовательной системы «Вариатика» и виртуального психолога «Фреди». Подробнее об авторе →
← Все статьи блога