5 августа 2026

Из дневника разработки, 5 августа 2026: судья — дело, а не слово

Пятого августа я поменял судью. До этого правильность ответа проверял текст: совпало с эталонным словом — засчитано. С того дня проверяет дело: система что-то делает, и мир либо меняется как надо, либо нет.

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

В тот день записаны три правила, и они держатся до сих пор.

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

Проверка считает, сколько действий верны, а не сколько слов совпало.

Мерить надо ту правду, которую действие меняет. Если ответ ни на что не влияет — проверять в нём нечего.

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

Был и честный провал. Один тип сообщений оказался недостижим при нашей приёмке: не потому что система не умеет, а потому что приёмка устроена так, что засчитать его не может. Мой недосмотр, записал как есть.

Главное правило оттуда: если проверку можно пройти, не умея того, что она проверяет, — это не проверка. Отсюда же наша привычка писать критерий до прогона. После прогона критерий подстраивается под результат сам собой, без злого умысла, и ты этого не замечаешь.

Андрей Рощупкин