---
title: "Глава 8. Чтобы агент физически не мог насрать"
url: "https://www.mikefluff.com/ru/read/nobody-writes-code/ch08"
locale: "ru"
author: "Mikhail Savchenko (Mike Fluff)"
updated: "2026-10-10T17:48:25.825Z"
book: "https://www.mikefluff.com/ru/books/nobody-writes-code"
access: "lead-in"
purchase: "https://www.mikefluff.com/ru/books/nobody-writes-code"
alternates:
  - locale: "ru"
    url: "https://www.mikefluff.com/ru/read/nobody-writes-code/ch08"
    markdown: "https://www.mikefluff.com/ru/read/nobody-writes-code/ch08.md"
  - locale: "en"
    url: "https://www.mikefluff.com/en/read/nobody-writes-code/ch08"
    markdown: "https://www.mikefluff.com/en/read/nobody-writes-code/ch08.md"
  - locale: "pt"
    url: "https://www.mikefluff.com/pt/read/nobody-writes-code/ch08"
    markdown: "https://www.mikefluff.com/pt/read/nobody-writes-code/ch08.md"
---

# Глава 8. Чтобы агент физически не мог насрать

*[Код больше не пишут](https://www.mikefluff.com/ru/books/nobody-writes-code)*

В 1961 году японский инженер Сигео Синго приехал на завод компании Yamada Electric, где собирали маленькие выключатели. У каждого выключателя под двумя кнопками должны были стоять две крошечные пружинки, и рабочие время от времени забывали поставить одну из них. Выключатель без пружинки уходил покупателю, покупатель возвращал его, и завод терял деньги и репутацию. Руководство решало проблему так, как её решают почти везде: объясняло рабочим, что надо быть внимательнее, и наказывало тех, кто ошибался.

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

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

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

* * *

Такая среда собирается из слоёв, и каждый слой ловит свой сорт ошибок. Большинство этих инструментов старше языковых моделей на десятилетия, их придумали для людей, и люди пользовались ими неохотно, потому что они раздражают. С агентами всё поменялось, но об этом чуть позже, а сначала пройдёмся по слоям, начиная с самых простых.

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

Над внешним видом стоят типы. В языках программирования с типами у каждой величины есть ярлык, который говорит, что это такое: телефон клиентки — текст, цена — число в рублях, дата визита — дата. Программа, которая проверяет типы, откажется собирать код, где цену пытаются сложить с телефоном или передать дату туда, где ждут число. Звучит как защита от совсем уж глупых ошибок, однако таких ошибок в реальных программах очень много. В 2017 году исследователи из Университетского колледжа Лондона и Microsoft взяли несколько сотен исправленных ошибок из открытых проектов на JavaScript, одном из самых распространённых языков, где типов по умолчанию нет, и проверили, сколько из них поймала бы система типов, если бы её использовали. Оказалось, примерно пятнадцать процентов, то есть каждую седьмую, причём авторы подчёркивали, что это заниженная оценка. Для агента типы особенно ценны, потому что сообщение об ошибке типа приходит мгновенно и точно указывает место.

---

Остальная часть главы — в полной книге. Купить полную книгу (690 ₽): https://www.mikefluff.com/ru/books/nobody-writes-code
