Где-то неделю назад Дима из Дринкит написал у себя пост о том, что они экспериментируют с алгоритмической генерацией сетевого слоя по OpenAPI спеке с модельками, ретрофит интерфейсами и всем таким. Тема интересная. Понятная, красивая программистская задача. Но пост меня триггернул подумать. 🤔
Он там пишет, что у спеки есть особенности. Например, упоминается, что названия классов получаются слишком длинные, если всё точно по спеке делать. А ещё в спеке что-то лишнее есть, что хотелось бы из вида убрать.
Когда идёт речь о подобной автоматизации, в теории она всегда звучит хорошо, но на практике появляются какие-то компромиссы и нюансы, которые надо иметь в виду. Спеку ещё кто-то поддерживать должен. Актуализировать её, не придумывая новые концепции и правила. Всегда должны придерживаться оговоренного, иначе автоматизация будет всё более комплексной и ненадёжной.
Причём, смею предположить, задача перенести спеку в код – плюс-минус одноразовая, когда фичу кто-то пишет. Как минимум – редкая, когда она кардинально меняется.
И вот с такими вводными я уже перестаю понимать, зачем её в 2к25, как говорится, решать алгоритмически. Вот бы у нас был инструмент, который может "подумать" вместо нас, да? Которому можно было бы объяснить, что тебе хотелось бы видеть на выходе.
Claude Code, буквально, молоток в моих руках, всё остальное вокруг – гвозди. 🔨
Так вот, я могу дать ему ту же самую спеку, показать, где лежит верхнеуровневая документация типа "как мы пишем сетевой слой", с пояснениями "как использовать OpenAPI спеку", и он сделает good enough. Он сам примет какие-то решения, над которыми тебе бы пришлось думать во время написания своего.
Более того, собственным решением своих разрабов тоже потом нужно учить пользоваться, даже если оно простое. А сформулировать агенту "по openapi.yml допиши в feature:name сетевой слой" как будто уже базовый скилл любого, кто трогал агентов хоть раз. И чем дальше, тем таких людей будет больше. Нехитрыми уточнениями можно и конкретный метод из этой спеки добавить/изменить в уже существующем коде. Ну да, поработает агент минут десять, но напишет же. Всё быстрее живого разраба. А в своей автоматизации это ещё и нужно было бы изначально закладывать.
На всякий случай замечу, что агента можно научить и своими велосипедами пользоваться, если они есть. У нас, например, агент на слова типа "сделай фича-модуль X" вызовет нашу собственную таску, а не нейронкой будет нагенеривать как видит.
Но мой посыл это не меняет. Похоже, некоторые вещи не имеет смысла писать вообще.
А вы как думаете, где собственно эта грань? Если у вас есть задача, то когда для её решения стоит писать свою автоматизацию, а когда достаточно её отдать агенту? Дело в частоте использования, в желании надёжности, в трудозатратах?