Не законы, а говно

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

Можно было бы считать, что это нормально. Если бы у человечества не было другой области сравнимой сложности — программной инженерии. Умные ребята давно придумали, как бороться со сложностью программных систем. Почему эти же методы не применяют в законотворчестве?

Закон — это спецификация. Главное требование к спецификации — она должна быть понятна целевой аудитории (министерствам и отрасли, которую регулирует закон). Законы же пишут так, что даже юристы не могут сойтись во мнениях, что имелось в виду. А потом выпускают многотомные комментарии, обзоры судебной практики и решения Верховного суда.

Закон должен быть написан, как хорошая спецификация. С описанием решаемой проблемы. С типичными сценариями использования. С обзором исключительных ситуаций. С иллюстрациями и схемами взаимодействия. Простым языком без канцеляризмов и предложений à la Лев Николаевич Толстой на полстраницы.

Закон должен следовать другим принципам программных систем:

  1. Спецификация проходит ревью. Это в законах есть (правительство и отраслевые ассоциации пишут отзывы), но выполняется формально, а иногда вовсе не выполняется.
  2. По спецификации пишут тесты. Берём выборку случаев из регулируемой отрасли, «примеряем» на них закон, прописываем ожидаемый результат. Берём выборку случаев из смежных отраслей и тоже примеряем, чтобы убедиться, что закон ничего не сломал. Берём другие законы и проводим кросс-проверку — нет ли конфликтов.
  3. В спецификации указывают критерии приёмки. Как изменится ситуация после принятия закона? Какие показатели изменятся и как? Как их измерить? Как понять, что закон не работает или работает плохо? Всё прописываем.
  4. Серьёзные изменения внедряются постепенно. Закон проходит «обкатку» на одном регионе. Собираем обратную связь от всех заинтересованных лиц. Проверяем результаты на соответствие «тестам» из пункта 2. Корректируем закон, только после этого «раскатываем» на всю страну.
  5. Предусмотрены механизмы диагностики и отладки — журналы, мониторинг, дебаг. Это вроде как есть — все случаи применения закона «журналируются» регулирующими органами и судами. Но не хватает системного процесса анализа «логов» и выводов по ним.

Законы — это спецификации. А пишут их, как будто до сих пор в древнем Риме живём.