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

Звучит как отговорка. Попытка уйти от ответа. Ритуальное заклинание, к которому прибегают, когда понимания не хватает. И всё же. И всё же. Это работает. До неприличия часто. И не только с программами.


Почему нельзя просто закатить валун обратно на гору?

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

  • Накопление невидимых внутренних состояний:

    • Каждое взаимодействие оставляет едва заметные, устойчивые следы, которые не полностью задокументированы или доступны наблюдению. Они создают «скрытое состояние», из-за которого текущее поведение становится функцией всей истории системы.
    • Подобно осадку, незаметно накапливающемуся на дне озера, прошлые входные данные, незначительные события и корректировки оставляют внутренние следы, неочевидные снаружи. Теперь поведение системы зависит от истории, которая по большей части нигде не записана и недоступна, поэтому диагностика, основанная только на текущем состоянии, вводит в заблуждение.
  • Зависимость от пройденного пути:

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

    • Компоненты сложных систем тесно переплетены и образуют густую сеть связей и петель обратной связи.
    • Действие в одной части системы влияет не только на соседние части: оно может вызвать неожиданные и несоразмерно масштабные последствия в отдалённых, на первый взгляд не связанных с ней областях. Небольшие изменения могут усиливаться, превращаясь в масштабные сдвиги или каскады событий.
    • Это делает вмешательства рискованными: из-за тесно связанных причинно-следственных цепочек, в которых последствия несоразмерны причинам, исправление одной проблемы может неожиданно сломать что-то другое.
  • Необъятное пространство состояний:

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

    • Многие сложные системы, особенно природные или социальные, никто не проектировал по единому плану: они возникли в ходе эволюции или самоорганизации.
    • Часто у нас нет полного понимания основных принципов их работы, которое позволяло бы предсказывать их поведение. Наиболее характерные формы их поведения нередко неожиданно возникают из взаимодействий компонентов более низкого уровня, а не задаются явно.
    • Отладку затрудняет отсутствие исчерпывающей инструкции или архитектурной схемы: мы имеем дело с явлениями, которые возникают естественным образом и, возможно, не поддаются полному объяснению простым движением от общего к частному.

С чистого листа

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

  • Возврат к известному, более простому исходному состоянию:

    • Главная ценность сброса — замена текущего сложного, полного ошибок и плохо понятного состояния заранее заданным начальным состоянием.
    • Это начальное состояние обычно намного проще, и, что особенно важно, известно, что оно работоспособно, хотя бы на базовом уровне. Как при восстановлении заводских настроек компьютера!
  • Разрыв цепей зависимости от пройденного пути:

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

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

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

Применение за пределами программного обеспечения

Медицина

  • Пульс-терапия кортикостероидами:

    • При тяжёлых обострениях аутоиммунных заболеваний, таких как рассеянный склероз или волчанка, пациентам вводят чрезвычайно высокие дозы внутривенно всего в течение 1–3 дней. Огромная доза стероидов фактически временно отключает весь иммунный ответ, останавливая атаку и давая организму возможность перезагрузиться. После лечения иммунная система постепенно восстанавливается, но часто уже с иным балансом, при котором она реже атакует собственные ткани организма.
  • Аутологичная трансплантация стволовых клеток:

    • Заменяет всю иммунную систему пациента. Сначала врачи собирают стволовые клетки из его собственной крови. Затем с помощью мощной химиотерапии полностью уничтожают существующую иммунную систему. Наконец, возвращают ранее собранные стволовые клетки, которые с нуля выстраивают новую иммунную систему. Этот подход показал впечатляющие результаты при рассеянном склерозе: примерно у половины пациентов прогрессирование заболевания полностью останавливается.
  • Трансплантация фекальной микробиоты:

    • При ТФМ какашки здорового донора переносят в кишечник пациента, фактически вводя сразу целое сбалансированное сообщество полезных микроорганизмов. Изначально этот подход разработали для лечения устойчивых к антибиотикам инфекций C. diff, а теперь его изучают применительно к воспалительным заболеваниям кишечника, таким как язвенный колит. Есть много отдельных свидетельств об успехе при рассеянном склерозе, синдроме хронической усталости и воспалительных заболеваниях кишечника.
  • Пересадка органов:

    • Всё понятно без объяснений. Удалить, установить заново.
  • Плазма, обогащённая тромбоцитами (PRP):

    • Процедура включает забор крови у пациента, её обработку для повышения концентрации тромбоцитов до пятикратного уровня относительно нормы и последующее введение полученного концентрата в повреждённые участки. Эти тромбоциты выделяют факторы роста, которые «стимулируют или ускоряют процесс заживления, сокращая время восстановления после травм, уменьшая боль и даже способствуя росту волос». У меня есть друг, которому эта процедура помогла вылечить упорную травму руки.
  • Внутривенный иммуноглобулин (IVIG):

    • Использует концентрированные антитела из крови тысяч доноров, чтобы перезагрузить иммунную систему, работающую со сбоями. «Не давая организму атаковать самого себя и уменьшая несколько видов воспаления», IVIG эффективно лечит широкий круг состояний — от иммунодефицитов до аутоиммунных заболеваний, таких как дерматомиозит и волчанка.
  • Психоделики и нейронный отжиг:

    • Психоделики могут помогать лечить такие состояния, как депрессия и ПТСР, временно нарушая жёстко закрепившиеся схемы работы мозга и позволяя формироваться более здоровым связям. Учёные описывают этот процесс как нечто похожее на «отжиг» в металлургии: металл нагревают, чтобы сделать его более податливым, а затем охлаждают, придав ему новую форму. В мозге психоделики временно повышают нейронную активность и гибкость, создавая окно возможностей для изменения укоренившихся схем мышления.
  • Голодание и элиминационные диеты:

    • При длительном голодании — обычно от трёх дней — организм активирует процесс очистки, называемый аутофагией: клетки расщепляют повреждённые компоненты и перерабатывают их, по сути избавляясь от клеточного мусора и факторов, запускающих воспаление. Этот процесс одновременно затрагивает несколько систем, заново настраивая уровень воспаления, работу иммунитета и клеточную передачу сигналов во всём организме. Такая перезагрузка всей системы иногда позволяет разорвать циклы, с которыми не справляются лекарства. Сходным образом работают элиминационные диеты: сначала из рациона убирают все потенциальные пищевые провокаторы — часто включая молочные продукты, глютен, сою, орехи и другие распространённые аллергены, — а затем последовательно возвращают их, чтобы выявить проблемы.
  • Ингибиторы гистондеацетилаз (HDAC)

    • Вальпроевая кислота в составе комбинированной терапии позволяет осуществить нечто вроде эпигенетического сброса паттернов метилирования и ацетилирования. Ингибиторы HDAC поддерживают хроматин в более открытом состоянии, допускающем транскрипцию (деацетилирование, по сути, представляет собой реакцию клеточного ядра на состояние окружающей среды; его эффекты накапливаются со временем, закрывая хроматин для определённых вариантов транскрипции. Это адаптивно в узком смысле, но в конечном счёте труднообратимо).

    • Часто применяются при раке.

Другие области

Организационное проектирование:

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

Отучение от усвоенного в образовании:

  • Иногда объяснить понятие с нуля эффективнее, чем пытаться исправить укоренившиеся заблуждения (см. отрицательный перенос). Знаменитая цитата Макса Планка:

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

Экономическая политика:

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

Если у вас есть ещё примеры, мне было бы интересно о них услышать — поделитесь!


Цена нового начала

Чтобы было ясно: я не призываю заново изобретать колесо (см. Забор Честертона). Тем не менее сброс — грубый инструмент, и его применение сопряжено с существенными недостатками и обстоятельствами, которые нужно тщательно взвесить:

  • Потеря ценной информации и результатов адаптации:

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

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

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

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

Заключение

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

  • Понятность системы: Насколько полно мы можем понять её внутреннее состояние?
  • Плотность взаимозависимостей: Насколько тесно связаны компоненты системы?
  • Накопленное влияние истории: Насколько зависимость от пройденного пути ограничивает нынешние возможности?
  • Сохранение интерфейсов: Можно ли сохранить критически важные внешние связи во время сброса?
  • Модульность: Можно ли сбросить отдельные части, не нарушая работу всей системы?

И самое главное:

Автор всё это просто выдумал?

Возможно. Напишите свою чёртову статью. (Шучу — пожалуйста, сообщайте об ошибках, которые найдёте!)

Спасибо Jimmy за его мысли и примеры, а также ultimape, чей безумный научный эксперимент с ТФМ отчасти вдохновил меня написать этот пост