Craft coding: пишем код сами, а ИИ доверяем ревью

· 1 мин чтения
ai-coding vibe-coding code-review opinion skills
Craft coding: пишем код сами, а ИИ доверяем ревью

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

Делание и проверка

Любая работа, пишет Блум, состоит из двух стадий: doing и checking. Вы пишете код — и проверяете его на баги. Пишете текст — и вычитываете. Текущий ИИ недостаточно надёжен, чтобы делать обе одновременно: рано или поздно он сойдёт с рельсов — иногда громко, вроде удалённой базы данных, но чаще тихо, медленно превращая кодовую базу в неподдерживаемую кашу.

Отсюда правило: если подключаете ИИ к части проекта — либо он делает, а вы проверяете его работу, либо вы делаете, а он проверяет вашу.

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

Поэтому схему надо перевернуть: вы пишете, ИИ проверяет. Лучший образ — code review от опытного senior-разработчика.

Три пекаря

Своё название подход получил через метафору трёх пекарей.

Ханна — домашняя фанатичка: закваска, контроль температуры, сложные процессы расстойки. Хлеб великолепный, но ручное замешивание не масштабируется — и её это устраивает. В коде это hand-coder: человек, который отвергает ИИ и сознательно хранит древнее ремесло, окупается оно коммерчески или нет.

Вивиан — коммерческий пекарь, заполняющий полки супермаркетов. Решения о процессе делегированы нанятым технологам, сама она следит за агрегированной статистикой: как продаётся и сколько стоит себестоимость. Качество хлеба волнует её ровно настолько, насколько оно волнует покупателей. Это vibe-coder: несмотря на «расслабленное» название, современный vibe coding — это профессиональная разработка, в которой невозможно представить, что программист детально читает весь сгенерированный код.

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

Почему это важно: наука и безопасность

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

Вторая, всё более острая ниша — безопасность. Люди не пишут безопасный код, но раньше это не имело значения: кто плохо ищет уязвимости, тот их и не эксплуатирует. Теперь появилась сущность, которая мгновенно находит проблемы, невидимые человеку. На фоне резонанса вокруг безопасности frontier-моделей и волны ИИ-ассистированных атак ручной код, по Блуму, просто небезопасен: он содержит уязвимости, которые вы никогда не найдёте, а ИИ-атакующий эксплуатирует их без усилий.

Десять догм craft coding

  1. Никакого ИИ в IDE — включая LLM-автодополнение. Каждый символ каждой строки написан вашим пальцем по клавише.
  2. В идеале не давать ИИ доступ к кодовой базе: копируйте сниппеты в веб-интерфейс. Если доступ есть — только на чтение.
  3. Не позволяйте ИИ ничего запускать. Он предлагает — вы запускаете.
  4. Не копируйте код из чата ИИ.
  5. Не используйте ИИ для того, что сделает обычный поиск.
  6. Читайте документацию, прежде чем спрашивать ИИ.
  7. Просите решение у ИИ, только если не смогли сами. Дайте себе время подумать.
  8. Проверьте код сами, прежде чем отдавать на ревью.
  9. Запустите код, найдите проблемы — пусть ИИ найдёт остальные.
  10. Не реализуйте предложение, которого не понимаете.

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

Что это даёт

Код становится лучше. Как ревьюер Claude Fable, по опыту Блума, определённо сверхчеловечен: находит большинство ошибок без запуска кода и многие runtime-баги, которые автор никогда бы не поймал. Пока он не показал модели ни одного своего сниппета, где та не нашла бы серьёзную проблему — и это не ложные срабатывания: каждую находку он проверяет и принимает только понятные предложения.

Скорость — по сравнению с ручным кодингом. Исчезают баги, останавливающие разработку на недели и требующие отдельных тестовых скаффолдов. Для Блума это разница между «не могу заниматься исследованиями» и «пары свободных вечеров в неделю хватает».

Понимание своей кодовой базы. Научный код нужно держать в голове целиком — каждый угол. При vibe coding это невозможно: функции и классы появляются без вашего ведома.

Активное обучение вместо deskilling. Ревью — лучший канал передачи навыков от senior к junior, потому что обсуждается то, что junior только что написал сам. С ИИ вы всегда junior — горькая пилюля: выпуститься в senior больше не получится, останется только учиться. Альтернатива — «Guitar Hero от программирования»: бесконечно весёлая игра, дающая чувство мощи, но убирающая всю трудность, на которой строится обучение. В craft coding каждое предложение фильтруется через ваше внимание — вы продолжаете учиться.

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

Стимул проверять код. Когда Claude — ваш ревьюер, хочется выдать ему код без багов (не выходит, но хочется). Немного жалко пытаться произвести впечатление на машину — но это лучше апатии и deskilling. Тут Блум сравнивает ИИ с совой из Duolingo.

Честность перед собой. Критики ИИ часто судят о моделях по давнему бесплатному ChatGPT, а проверять регулярно мешает эго: никому не хочется узнавать, что машина его обгоняет. Craft coding заставляет сталкиваться с реальными способностями frontier-моделей каждые несколько дней.

Что теряешь

Навык глубокой, методичной отладки — та неделя по восемь часов в день на поиск бага — атрофируется: глубокий баг Claude просто назовёт. Если ИИ исчезнет, вы будете шокированы усилием, которое раньше требовал такой поиск. Остальное почти не страдает: используемые навыки растут, потому что ревью показывает то, о чём вы не знали или не подумали.

Сообщество уже ищет середину

  • Codeberg принял широкую анти-ИИ политику: против не только vibe coding, но и «проектов, сильно связанных с экосистемой LLM».
  • В Debian шло голосование, начавшееся с брекзит-подобного выбора «запретить или обнять», но расширенное до многих опций. Вариант G разрешает ИИ для ревью написанного людьми кода — ровно то, о чём пишет Блум.
  • Линус Торвальдс высказался за разрешение ИИ-инструментов — в контексте именно review-инструментов; про vibe coding он говорил, что это безобидно, пока не используется для чего-то важного. Инструмент из того обсуждения ловит свыше 50% багов, пропущенных людьми-ревьюерами.

Вместо вывода

Калькулятор не отменил устный счёт как полезный навык: он всё ещё помогает думать на ходу. Так же и ручное написание кода, даже когда оно перестанет быть необходимостью, останется навыком, который выделяет вас и даёт более глубокое понимание профессии. Поскольку никто не знает, какие навыки переживут ИИ, Блум советует вкладываться в те, что приносят радость и с приличной вероятностью пригодятся.

Сам он этот пост тоже «крафт-написал»: черновик — свой, а вычитка, фактчек и общая критика — Claude. Итог: пока мы осторожны и не перестаём использовать мозг, решения лежат прямо перед нами.

Источник: https://peterbloem.nl/blog/craft-coding