Писать код теперь дёшево
@ai_longreadsГлавная сложность внедрения агентных (*agentic*) практик разработки — привыкнуть к последствиям того факта, что написание кода теперь практически ничего не стоит.
Это AI-перевод статьи, сделанный каналом Про AI: Лучшие Статьи и Исследования.
Писать код теперь дёшево
Writing code is cheap now Автор: Simon Willison Оригинальный текст:
Новая реальность
Код всегда был дорогим. Написание нескольких сотен строк чистого, протестированного кода занимает у большинства разработчиков целый день или больше. Множество наших инженерных привычек — как на макро-, так и на микроуровне — построены вокруг этого фундаментального ограничения.
На макроуровне мы тратим огромное количество времени на проектирование, оценку и планирование проектов, чтобы наше дорогостоящее время на написание кода расходовалось максимально эффективно. Идеи новых функций продукта оцениваются с точки зрения ценности, которую они могут дать в обмен на затраченное время — фича должна многократно окупить стоимость своей разработки, чтобы быть оправданной.
На микроуровне мы ежедневно принимаем сотни решений, основанных на имеющемся времени и ожидаемых компромиссах. Стоит ли рефакторить эту функцию ради чуть более элегантного решения, если это добавит час работы? А как насчёт документации? Стоит ли писать тест для этого краевого случая? Оправдано ли создание отладочного интерфейса?
Агентные (agentic) инструменты для написания кода радикально снижают стоимость набора кода, что ломает множество наших личных и организационных интуиций о том, какие компромиссы имеют смысл.
Возможность запускать параллельных агентов делает оценку ещё сложнее, поскольку один инженер теперь может одновременно реализовывать, рефакторить, тестировать и документировать код в нескольких местах.
Хороший код по-прежнему стоит дорого
Стоимость создания нового кода упала почти до нуля... но создание хорошего кода по-прежнему обходится значительно дороже.
Вот что подразумевается под «хорошим кодом»:
- Код работает. Он делает то, для чего предназначен, без багов.
- Мы знаем, что код работает. Мы предприняли шаги, чтобы убедиться сами и убедить других, что код пригоден для использования.
- Он решает правильную проблему.
- Он корректно и предсказуемо обрабатывает ошибки: учитывает не только «счастливый путь». Ошибки должны предоставлять достаточно информации, чтобы будущие сопровождающие могли понять, что пошло не так.
- Он прост и минимален — делает только то, что нужно, так, чтобы и люди, и машины могли понять его сейчас и поддерживать в будущем.
- Он защищён тестами. Тесты подтверждают, что код работает сейчас, и служат регрессионным набором, предотвращающим незаметные поломки в будущем.
- Он задокументирован на подходящем уровне, и документация отражает текущее состояние системы — если код меняет существующее поведение, существующую документацию необходимо обновить.
- Архитектура допускает будущие изменения. Важно придерживаться принципа YAGNI — код с избыточной сложностью в расчёте на будущие изменения, которые могут никогда не наступить, часто является плохим кодом — но также важно не писать код, который делает будущие изменения неоправданно сложными.
- Все остальные релевантные «-ости»: доступность, тестируемость, надёжность, безопасность, сопровождаемость, наблюдаемость, масштабируемость, удобство использования — нефункциональные показатели качества, уместные для конкретного класса разрабатываемого ПО.
Агентные инструменты могут помочь с большинством из перечисленного, но на разработчике, управляющем этими инструментами, по-прежнему лежит значительная ответственность за то, чтобы произведённый код был хорошим кодом для того подмножества качества, которое требуется текущему проекту.
Нужно вырабатывать новые привычки
Задача состоит в том, чтобы выработать новые личные и организационные привычки, соответствующие возможностям агентной разработки.
Лучшие практики ещё только формируются в нашей отрасли. Автор признаётся, что и сам всё ещё разбирается в них.
Пока лучшее, что можно делать, — подвергать сомнению свои привычные реакции: каждый раз, когда интуиция говорит «не стоит это строить, не окупится по времени», всё равно отправьте промпт (prompt) — в асинхронной агентной сессии, где худшее, что может произойти, — вы проверите через десять минут и обнаружите, что токены (tokens) были потрачены зря.
Подпишитесь на канал и каждый день читайте лучшие материалы про AI переведенные на русский!
Нашли интересную статью для перевода? Пришлите нашему боту: @ailongreadsbot