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

В этой статье я перечислю несколько известных «именных» бритв (про Оккама тоже не забуду) и покажу, как их можно использовать в работе IT-специалиста. Заодно я сформулирую несколько правил, которые сам стараюсь соблюдать при применении этих самых «бритв», чтобы ненароком не ошибиться и не получить результат, противоположный ожидаемому.

1. Бритва Хитченса

Автор: журналист и писатель Кристофер Хитченс, 2003.

Бремя доказательства истинности утверждения лежит на том, кто заявляет его истинность.

Исходная формулировка: «Что можно утверждать без доказательств, то можно отвергнуть без доказательств».

What can be asserted without evidence can also be dismissed without evidence.

Аналог: латинская пословица «Quod gratis asseritur, gratis negatur» — «Что свободно утверждается, то свободно отбрасывается»

Варианты утверждений:

  • Этот вариант реализации процедуры не соответствует техническому заданию.

  • Дизайн страницы не соответствует договорённостям. Давайте поиграем шрифтами.

  • Я считаю, что старый вариант интерфейса был удобнее, чем новый.

Варианты ответов:

  • Уточните, на какой странице технического задания это написано.

  • Прошу привести аргументы, которые показывают, что ваш вариант лучше.

  • Покажите результаты A/B-тестов.

Правила использования бритвы Хитченса:

  1. Помните, что бритва Хитченса действует в обе стороны.

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

  3. Если оппонент смог привести веские доказательства, вам придётся уступить. Такое тоже бывает.

2. Бритва Хайнлайна

Автор: Роберт Хайнлайн, рассказ «Логика империи», 1941.

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

Исходная формулировка: «Вы пытаетесь объяснить злонамеренностью то, что является результатом обычной глупости»

You have attributed conditions to villainy that simply result from stupidity.

Общепринятая формулировка: «Никогда не приписывай злонамеренности то, что вполне объясняется глупостью; но не исключай злонамеренности».

Аналоги:

  • «Никогда не приписывайте злому умыслу то, что вполне можно объяснить глупостью» (Роберт Дж. Хэнлон, эпиграф к изданию законов Мерфи, 1980).

  • «Никогда не приписывай злонамеренности то, что вполне объясняется некомпетентностью» (Наполеон Бонапарт).

  • «Облажались, а не заговор» (Бернард Ингам).

  • «Миром правит не тайная ложа, а явная лажа» (Виктор Пелевин).

Варианты утверждений:

  • Администратор специально поломал базу данных перед увольнением.

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

  • «Ураа, я возвращаюсь, я портфель забыл» — «Ааа, это вы специально придумали».

Варианты ответов:

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

  • Разработчик пишет запутанный и нелогичный код, потому что он просто плохой программист.

  • Герой кинокомедии забыл портфель, потому что у него похмелье и он крайне рассеян. А ведь у него там ценный веник.

Правила использования бритвы Хайнлайна

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

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

  3. Все делают ошибки, даже крутые профессионалы.

3. Бритва Оккама

Автор: философ и монах Уильям Оккам, XIV век.

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

Исходные формулировки: «Что может быть сделано на основе меньшего числа предположений, не следует делать, исходя из большего» и «Многообразие не следует предполагать без необходимости».

It is pointless to do with more what can be done with fewer.
Plurality must never be posited without necessity.

Аналог: «Всё следует упрощать до тех пор, пока это возможно, но не более того» (Альберт Эйнштейн).

Варианты утверждений:

  • Этот код не может не компилироваться. Наверное, ошибка в компиляторе.

  • Я ничего не делал, оно всё само куда-то ушло.

  • Подрядчик не успел сдать объект в срок, потому что помешали «коридоры затмений» и ретроградный Меркурий.

Варианты ответов:

  • Если программа не компилируется, то в ней есть ошибка.

  • Ничего не делал, говоришь? А если мы посмотрим логи?

  • Подрядчик не успел сдать объект в срок из-за банальных лени, неорганизованности и раздолбайства.

Правила использования бритвы Оккама

  1. Бритва Оккама предполагает выбор самого простого решения. Для этого нужно чётко понимать, по каким критериям и каким показателям оценивается простота и ранжируются решения. Эти критерии и показатели могут быть разными.

  2. «У кого бритва — тот и Оккам!» (Василий Щепетнёв). Иногда решение искусно объявляется простейшим, хотя по факту таковым не является. При любом сомнительном результате нужно проводить собственное исследование.

4. Бритва Алдера

Автор: австралийский математик Майк Алдер, 2004.

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

Известна также под названием «Пылающий лазерный меч Ньютона». Алдер утверждает, что этот меч «острее и опаснее, чем бритва Оккама».

Краткая формулировка: «То, что нельзя подтвердить экспериментом, не стоит обсуждать».

We should not dispute propositions unless they can be shown by precise logic and/or mathematics to have observable consequences.

Варианты утверждений:

  • Да тут нечему ломаться, выкатываем сразу в прод.

  • Это мощный сервер, он выдержит нагрузку.

  • Раз так написано в документации, значит так и должно работать.

  • «Группа была введена по настоянию Романа и Эдика, которые заявили, что всем нутром чуют связь между странностями Януса и странностями попугаев».

Варианты ответов:

  • Единственный способ доказать отсутствие ошибок — провести эксперимент тестированием.

  • Теоретическое предположение остаётся гипотезой, пока не будет проведено нагрузочное тестирование.

  • Ошибка может быть и в коде, и в документации.

  • «Они не смогли ответить на вопрос Корнеева, каков физический смысл понятий „нутро“ и „чуять“».

Правила использования бритвы Алдера

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

  2. В некоторых случаях эксперимент не так-то просто придумать.

  3. Обращение к авторитету или источникам не заменяет эксперимент.

Микеланджело творил, отсекая от камня всё лишнее. Бритвы познания — удобный и подходящий инструмент для создания шедевров. Главное — в творческом запале не порезаться самому и не отсечь что-то нужное и ценное.

Комментарии (21)


  1. Moskus
    14.01.2023 20:39
    +14

    Бритва Хэнлона/Хайнлайна - наиболее вводящая в заблуждение из упомянутых.

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

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

    Кроме того, бритву Хэнлона невозможно кратко сформулировать так, чтобы она учитывала это обстоятельство. Вот даже в статье выше, автор предлагает формулировку:

    Никогда не приписывай злонамеренности то, что вполне объясняется глупостью; но не исключай злонамеренности.

    Но это логический нонсенс, потому что "никогда" в начале - квантор универсальности, который перечеркивает "не исключай", содержащее квантор существования. Если переписать это, получится "Никогда не делай Х, но иногда - делай Х".

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


  1. dmplace
    14.01.2023 17:59

    Добавил бы закон Мерфи )


    1. perfect_genius
      15.01.2023 21:14

      У него была бритва?


  1. solderman
    14.01.2023 19:29
    +1

    «Главное — в творческом запале не порезаться самому и не отсечь что-то нужное и ценное.»

    Главное «с водой ребеночка не выплеснуть»


  1. Svbakulin
    14.01.2023 20:10
    +1

    Познание бритв Оккама и Хэнлона пожалуй наиболее сильно повлияли на развитие моего мышления. Особенно Окам -помогает безумно! Но первая тоже хороша.


    1. Kodim
      14.01.2023 21:41
      +3

      Особенно интересно дать определение простоте. В каком-то смысле, по воле божьей - наиболее простое объяснение :)


      1. Moskus
        14.01.2023 22:02
        +3

        Как минимум, нужен осознанны способ сравнения "простоты". Потому что, на практике, с теми, кто считает бритву Оккама откровением, часто выясняется, что под "простотой" они подразумевают какой-нибудь бред типа краткости объяснения.


  1. ReadOnlySadUser
    14.01.2023 20:24
    +8

    Если программа не компилируется, то в ней есть ошибка.

    Есть один занятный нюанс в этом деле. Компилятор - тоже программа)))

    Я лично репортил по меньшей мере раза 4 на баги в компиляторах и не менее раз 20 за последние 7 лет сталкивался с ошибками, которые уже кто-то зарепортил) Так что таки да, бывает что и компилятор злое зло)


  1. Moskus
    14.01.2023 20:39
    +14

    Бритва Хэнлона/Хайнлайна - наиболее вводящая в заблуждение из упомянутых.

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

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

    Кроме того, бритву Хэнлона невозможно кратко сформулировать так, чтобы она учитывала это обстоятельство. Вот даже в статье выше, автор предлагает формулировку:

    Никогда не приписывай злонамеренности то, что вполне объясняется глупостью; но не исключай злонамеренности.

    Но это логический нонсенс, потому что "никогда" в начале - квантор универсальности, который перечеркивает "не исключай", содержащее квантор существования. Если переписать это, получится "Никогда не делай Х, но иногда - делай Х".

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


    1. OlegAxenow
      15.01.2023 16:05
      +1

      Кроме того, бритву Хэнлона невозможно кратко сформулировать так, чтобы она учитывала это обстоятельство. Вот даже в статье выше, автор предлагает формулировку

      Вариант "не объясняй лишь злонамеренностью то, что вполне объясняется глупостью*" не идеален, но суть передаёт.

      Потому что они призваны, на самом деле, только напомнить о противоположной склонности

      Что тоже немало для многих людей...

      P.S. "*раздолбайством и т.п."


      1. Moskus
        15.01.2023 19:03
        +1

        Вместо "обьясняй", как минимум, должно быть "предполагай". Потому что речь о допущениях.

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


  1. NowebNolife
    15.01.2023 12:59
    +1

    Огласите, пожалуйста, весь список.


    1. Lapk
      15.01.2023 19:27
      +1

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


  1. alstutor
    15.01.2023 18:16
    +2

    Эм, бритва Оккама не говорит, что наиболее простое объяснение - единственно правильное. Бритва Оккама - это презумпция, которая устанавливает порядок рассмотрения версий: от самой простой к самой сложной ;) Собственно, бритва Хайнлайна/Хэнлона про то же, про порядок рассмотрения гипотез.


    1. Moskus
      15.01.2023 19:07
      +1

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


      1. RigelNM
        15.01.2023 20:09
        +2

        Вот мы и подошли к третьему правилу «принцип историзма», как по мне к самому полезному.


        1. alstutor
          16.01.2023 08:09

          Точно!


    1. alstutor
      16.01.2023 08:20
      +1

      И еще дополню сам себя:

      • во-первых, "простота/сложность" в оригинальной бритве Оккама - это привлечение дополнительных сущностей. Чем меньше привлекается дополнительных сущностей, тем проще гипотеза.

      • во-вторых, получается, что бритва Хайнлайна/Хэнлона - это частный случай бритвы Оккама: версия глупости "проще" (в терминологии Оккама), так как не требует привлечения дополнительной сущности, злонамеренности (так как глупости соврешают все люди, а злодеяния - только некоторые). А вот версия злонамеренности сложнее, так как требует привлечения дополнительной сущности, той самой злонамеренности.

      Как-то так :)


  1. youngmysteriouslight
    16.01.2023 01:11
    +1

    Хорошая подборка, но есть плохой пример:

    • Я считаю, что старый вариант интерфейса был удобнее, чем новый.

    • Покажите результаты A/B-тестов.

    Смотрите: если я заявляю, что мне красный цвет нравится больше, чем зелёный, то ваша задача доказать, что мне зелёный цвет нравится больше. Если я заявляю, что считаю старый интерфейс более удобным, то какие А/В тесты вы с меня спрашиваете? Мне себя тестировать на консистентность своих вкусов?


    1. Moskus
      16.01.2023 03:31
      +1

      Эта ситуация несколько сложнее.

      Если тот, кто принял решение изменить интерфейс, не руководствовался результатами объективного тестирования сам, использование более высокого стандарта доказательств к оппоненту - просто прозрачная демагогия, не более.

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


      1. youngmysteriouslight
        16.01.2023 13:01
        +1

        кто принял решение изменить интерфейс, не руководствовался результатами объективного тестирования сам

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

        Приведу пример такого контекста:

        — Я недавно узнал, что у Хабра появилась новая версия. Попробовал её. Я считаю, что старый вариант интерфейса был удобнее, чем новый.

        Я руководствовался результатами объективного тестирования? Нет. Но и не принимал решение об изменении интерфейса. Я принимаю решение, переключиться на старую версию или на новую, но это не требует А/В тестирования.

        Если же контекст другой:

        — Я просмотрел макет нового дизайна. Я считаю, что старый вариант интерфейса был удобнее, чем новый.

        То более правильным (по моему мнению) является ответ

        — Нам/вам надо провести А/В тестирование для того, чтобы понять, является ли старый вариант интерфейса действительно более удобным, чем новый. Ну и вспомнить, почему мы вообще приняли решение что-то поменять.

        В этом случае нужно разделять тезисы «Я считаю / по моим представлениям / по моему вкусу / мне кажется, что …» и «Целевая группа в среднем считает, что …».


  1. speshuric
    16.01.2023 16:01
    +2

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

    Единственный способ доказать отсутствие ошибок — провести эксперимент тестированием.

    В этом утверждении просто не менее 3 ошибок в одном.

    1. Тесты принципиально не доказывают отсутствие ошибок. Тесты в лучшем случае доказывают наличие ошибок, которые проверяются тестами (и никаких других).

    2. Тесты могут быть неправильными. И функциональные и нагрузочные. А еще могут быть неочевидно неправильными - например, зависеть от окружения, и показывать разный результат.

    3. Единственность - это очень сильное утверждение. Что насчёт Coq, Agda и подобных?

    И, казалось бы, чуть ниже есть оговорка:

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

    Но у этой оговорки верно второе предложение, а первое фундаментально ошибочно. Да, "эксперимент не подтверждает полностью гипотезу", но это здесь трактовано неправильно. Эксперимент ни в коем случае не "повышает вероятность истинности" (я даже не представляю себе конструктивного ввода понятия "вероятности истинности теории"). Просто при наличии эксперимента, результаты которого согласуются с теорией, в другой теории придётся также объяснять и этот эксперимент.