Программирование с ИИ
ENRU
1.1

Кто здесь главный

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

Что это

У работы с ИИ есть устройство, которое стоит проговорить вслух, потому что по умолчанию оно размывается.

Ты — архитектор и ревьюер. ИИ — исполнитель.

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

Что это значит на практике

Архитектор решает, что строить

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

Ревьюер решает, что принять

Код не становится твоим от того, что он появился в твоём файле. Он становится твоим, когда ты его прочитал и согласился. До этого момента в проекте лежит чужое решение, которое ты не проверял.

Исполнитель делает и предлагает

ИИ хорошо пишет код, подсказывает варианты, объясняет чужие решения и замечает то, что ты пропустил. Он может — и должен — спорить и предлагать лучше (статья 3.11). Но последнее слово не за ним.

Что бывает, когда роли путаются

Две крайности, и обе встречаются постоянно.

Ты становишься исполнителем

Выглядит так: получил код, не понял, вставил, запустил. Не заработало — попросил исправить. Опять не понял. Повторил.

Это та самая петля без чтения из статьи 1.2. Формально работа идёт, но решения принимает не тот, кто за них отвечает. Через месяц в проекте код, который никто не читал, и баг, который некому найти.

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

ИИ становится архитектором

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

Проблема не в том, что решения плохие. Обычно они нормальные — средние по индустрии. Проблема в том, что они не твои, а ты узнаешь о них через месяц, когда понадобится что-то поменять.

Признак: в проекте есть библиотека, о которой ты не знаешь, зачем она.

Как сказать ИИ

Роли задаются не настройками, а тем, как ставится задача. Архитектор говорит, что строить:

Лучше
Хранить будем в SQLite, не в JSON — записей будет много
и нужны выборки по дате. ORM не используем, запросы
пишем руками, их немного.

Исполнителю оставляется то, в чём он силён:

Лучше
Предложи структуру таблицы для подписок. Нужны user_id,
город и дата создания. Скажи, какие индексы стоит добавить
и почему.

И отдельный приём — попросить вернуть тебе роль, если чувствуешь, что решения принимаются без тебя:

Запрос
Какие решения ты принял за меня в этом коде?
Перечисли списком, с вариантами, которые были.

На что смотреть

Ты давно не спорил с ИИ. Если все предложения принимаются, скорее всего, они не читаются. Нормальная работа — это несколько «нет, давай иначе» на сессию.

Ты не знаешь, почему в проекте такое решение. Любая часть, про которую нельзя сказать «я выбрал это, потому что…», — чужая.

Задачи формулируются как «сделай хорошо». Так говорит заказчик, а не архитектор. Архитектор называет ограничения.

Правки принимаются без чтения диффа. Самый надёжный признак, что роль ревьюера вакантна (статья 2.13).

Шпаргалка

  • Ты — архитектор и ревьюер, ИИ — исполнитель.

  • Архитектор решает, что строить; ревьюер — что принять.

  • Код становится твоим, когда ты его прочитал и согласился.

  • Не можешь объяснить файл в своём проекте — ты стал исполнителем.

  • Есть библиотека, назначения которой ты не знаешь, — ИИ стал архитектором.

  • Спроси: «какие решения ты принял за меня?»