Дядюшка Боб не читает код AI-агентов. Я тоже.
В сети хайпит твит дядюшки Боба, в котором он признается, что вовсе не читает код, который пишут его агенты. Многие пишут, что таким образом он теряет контроль над кодом. Это не так: в том же твите он пишет, что использует много тестов и другие quality gates. Таким образом, он просто меняет способ контроля: автоматические проверки вместо привычного “метода пристального взгляда”.
Я тоже не читаю код, который пишут мои агенты. Сразу уточню, что далеко не весь код я пишу при помощи агентов и довольно много кода пишу руками. Но если уж я решила отдать задачу агенту, то не читаю каждую строчку, иначе во всем этом нет никакого смысла.
Строго говоря, использование кода, написанного агентом, мало чем отличается от использования сторонней библиотеки. Вы же не читаете исходники библиотеки, которую добавляете в свой проект? (Я, по правде, иногда читаю, но только тогда, когда что-то странно работает, и только ту часть, с которой проблемы). Такой подход использует идеи ООП: код, написанный агентом, является черным ящиком, а нас интересует его контракт (делает то, что заявлено), а не внутренняя реализация.
Ниже опишу воркфлоу и ограничения, которые я использую.
1️⃣ Только задачи с уже принятыми решениями
Я отдаю агенту только те задачи, с которыми нет неопределенности: я абсолютно точно знаю, что я сама бы написала, если бы писала это руками. Если я сама точно не знаю, что конкретно надо сделать и нужно решать по ходу, то это не тот случай.
2️⃣ Только мой стек
Агент пишет код только в том стеке, которым я хорошо владею, в моем случае это фронтенд. Мои навыки в бекенд разработке у меня гораздо слабее, поэтому бекенд я пишу самостоятельно, осмысляя каждую строчку.
3️⃣ Не отдаю core часть
Основные части системы я пишу вручную.
Агент хорошо подходит для изолированных утилит, плагинов, вспомогательных модулей и прочих локальных задач.
4️⃣ Спецификацию пишу в виде тестов
Для меня это оказалось более удобным, чем md файлы. В тестах я на естественном языке определяю, как должна работать та часть кода, которую я делаю.
5️⃣ Тесты генерирую агентом
Код тестов генерирую при помощи агентов. Затем читаю и убеждаюсь, что он меня устраивает.
6️⃣ Генерирую код
После генерации тестов я приступаю непосредственно к генерации самого кода.
Затем запускаю тесты, сборку и автоматические проверки (линтер, etc).
Если все ок, тогда смотрю, какие конкретно файлы изменил агент (git status).
Смотрю общий объем сгенерированного кода при помощи git diff.
Если выглядит ок, то делаю commit и push.
Этот воркфлоу, конечно, не идеален, но удобен для меня. Кроме того, как я уже сказала, большую часть кода я по-прежнему пишу руками (там, где нужно по ходу понять, что именно нужно сделать, и core часть).
Всем удачного вайб-кодинга 🥹
🔜 Канал в MAX
В сети хайпит твит дядюшки Боба, в котором он признается, что вовсе не читает код, который пишут его агенты. Многие пишут, что таким образом он теряет контроль над кодом. Это не так: в том же твите он пишет, что использует много тестов и другие quality gates. Таким образом, он просто меняет способ контроля: автоматические проверки вместо привычного “метода пристального взгляда”.
Я тоже не читаю код, который пишут мои агенты. Сразу уточню, что далеко не весь код я пишу при помощи агентов и довольно много кода пишу руками. Но если уж я решила отдать задачу агенту, то не читаю каждую строчку, иначе во всем этом нет никакого смысла.
Строго говоря, использование кода, написанного агентом, мало чем отличается от использования сторонней библиотеки. Вы же не читаете исходники библиотеки, которую добавляете в свой проект? (Я, по правде, иногда читаю, но только тогда, когда что-то странно работает, и только ту часть, с которой проблемы). Такой подход использует идеи ООП: код, написанный агентом, является черным ящиком, а нас интересует его контракт (делает то, что заявлено), а не внутренняя реализация.
Ниже опишу воркфлоу и ограничения, которые я использую.
1️⃣ Только задачи с уже принятыми решениями
Я отдаю агенту только те задачи, с которыми нет неопределенности: я абсолютно точно знаю, что я сама бы написала, если бы писала это руками. Если я сама точно не знаю, что конкретно надо сделать и нужно решать по ходу, то это не тот случай.
2️⃣ Только мой стек
Агент пишет код только в том стеке, которым я хорошо владею, в моем случае это фронтенд. Мои навыки в бекенд разработке у меня гораздо слабее, поэтому бекенд я пишу самостоятельно, осмысляя каждую строчку.
3️⃣ Не отдаю core часть
Основные части системы я пишу вручную.
Агент хорошо подходит для изолированных утилит, плагинов, вспомогательных модулей и прочих локальных задач.
4️⃣ Спецификацию пишу в виде тестов
Для меня это оказалось более удобным, чем md файлы. В тестах я на естественном языке определяю, как должна работать та часть кода, которую я делаю.
5️⃣ Тесты генерирую агентом
Код тестов генерирую при помощи агентов. Затем читаю и убеждаюсь, что он меня устраивает.
6️⃣ Генерирую код
После генерации тестов я приступаю непосредственно к генерации самого кода.
Затем запускаю тесты, сборку и автоматические проверки (линтер, etc).
Если все ок, тогда смотрю, какие конкретно файлы изменил агент (git status).
Смотрю общий объем сгенерированного кода при помощи git diff.
Если выглядит ок, то делаю commit и push.
Этот воркфлоу, конечно, не идеален, но удобен для меня. Кроме того, как я уже сказала, большую часть кода я по-прежнему пишу руками (там, где нужно по ходу понять, что именно нужно сделать, и core часть).
Всем удачного вайб-кодинга 🥹
🔜 Канал в MAX