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

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

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

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

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

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

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

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

Три пекаря

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

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

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

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

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

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

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

Десять догм крафт-кодинга

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

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

Что это даёт

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

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

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

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

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

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

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

Что теряешь

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

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

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

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

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

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

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