Как Мартин не читает код
Роберт Мартин, из поста в X от 23 июля:
«Моя нынешняя стратегия - не читать вообще никакой код, написанный моими агентами».
В том же посте он объясняет, что обкладывает работу агентов тестами, метриками качества и другими проверками. На этом и держится его уверенность в результате.
По-моему, формулировка получилась с явным расчётом на AI-хайп. Автор «Чистого кода» больше не читает код. Такое заявление хочется переслать даже раньше, чем дочитал.
Только я бы с выводами подождал. В интервью Мартин описывает, как именно он «не читает».
В разговоре с Кентом Доддсом, 16:29–17:24, он перечисляет, что его интересует: структура модулей и функций, их имена, размеры, количество аргументов. Иногда прокручивает код на экране и смотрит, не сделали ли агенты чего-нибудь совсем уж нелепого.
То есть до аргументов функций внимание всё-таки добирается. Для «вообще не читаю» довольно подробно.
Причём это интервью вышло 22 июля, за день до твита. Он уже рассказывал о выборочных просмотрах, когда написал ту категоричную фразу.
Да, «моя стратегия» можно понимать как направление, в котором он движется. И выборочный просмотр отличается от разбора каждой строки. Но я всё равно считаю такую подачу лукавой: самое заметное заявление звучит гораздо радикальнее того, что человек делает.
А делает он немало.
В интервью Мэтту Пококу, 26:08–28:14, Мартин рассказывает, как расспрашивал агентов об устройстве системы, оставался недоволен ответами, сам проектировал разделение на модули и отдавал план переделки. Потом появились просмотрщик архитектуры и автоматическая проверка зависимостей. Какие зависимости разрешать, определял он сам. Автоматизировать эту часть работы на момент разговора удавалось плохо.
Вот здесь мне хочется остановиться. Чтобы сказать агенту «ты неправильно разделил модули», надо сначала самому понять, что с ними не так. И зелёных тестов для этого может не хватить.
Допустим, агент размножил правило скидки по двум обработчикам. Сегодня обе копии одинаковые, тесты проходят, функции короткие. Через месяц правило меняют в одном месте, про второе забывают, и цена начинает зависеть от того, каким путём её посчитали.
Кто-то должен заметить такую проблему до следующей задачи. Разобраться, одно ли это правило, где ему жить и кто должен его вызывать. Можно поручить агенту поиск, обсудить с ним варианты, заказать проверку. Но принять его ответ тоже надо уметь.
Мартин может пролистать код и заметить неудачное решение. Другой человек тем же движением колёсика мыши просто доедет до конца файла.
Поэтому я бы осторожнее воспринимал это «не читаю код». Из такого заявления легко забрать самую приятную часть: можно больше не разбираться в том, что написано. А весь опыт, с которым Мартин смотрит на функции и зависимости, останется у Мартина.
Он сам, кстати, советует новичкам писать код, чтобы понимать, с чем работают агенты. Забавное дополнение к истории о том, что кодом теперь можно не интересоваться.
Так что ложная тревога: нас ещё не заменили. По крайней мере, в этих интервью человек по-прежнему разбирается в системе, находит проблемы и решает, что переделать. Доказательств того, что эту работу можно вычеркнуть, я здесь не увидел.
Книги Мартина и Макконнелла возвращаем на стол. Есть смысл снова разобраться в ответственности, зависимостях и сложности. Пригодится хотя бы для того, чтобы отличить удачное решение агента от кода, который просто прошёл тесты.
Не читать код как Мартин тоже надо уметь.