Connect with us

Разработка

Сейчас писать код дешево

Задача — выработать новые личные и командные привычки, которые соответствуют новым возможностям и перспективам агентской разработки.

Опубликовано

/

     
     

Самая большая проблема при внедрении методов агентной инженерии — это смириться с последствиями того факта, что написание кода теперь обходится дёшево.

Код всегда был дорогим. Написание нескольких сотен строк чистого, протестированного кода занимает у большинства разработчиков программного обеспечения целый день или даже больше. Многие наши инженерные привычки, как на макро-, так и на микроуровне, построены вокруг этого основного ограничения.

На макроуровне мы тратим много времени на проектирование, оценку и планирование проектов, чтобы гарантировать, что наше дорогостоящее время, затраченное на кодирование, используется максимально эффективно. Идеи функций оцениваются с точки зрения того, какую ценность они могут принести в обмен на это время — функция должна многократно окупить затраты на разработку, чтобы быть стоящей!

На микроуровне мы принимаем сотни решений в день, основываясь на доступном времени и ожидаемых компромиссах. Стоит ли мне переписать эту функцию, сделав её немного более элегантной, если это добавит ещё час времени на кодирование? А как насчёт написания документации? Стоит ли добавлять тест для этого граничного случая? Могу ли я оправдать создание интерфейса отладки для этого?

Использование программных агентов значительно снижает затраты на ввод кода в компьютер, что разрушает многие из наших существующих личных и организационных представлений о том, какие компромиссы оправданы.

Возможность параллельного запуска агентов еще больше затрудняет оценку, поскольку один инженер-человек теперь может одновременно внедрять, рефакторить, тестировать и документировать код в нескольких местах.

Хороший код по-прежнему имеет свою цену

Стоимость разработки нового кода снизилась почти до нуля… но разработка качественного кода по-прежнему обходится значительно дороже.

Вот что я подразумеваю под «хорошим кодом»:

  • Код работает. Он делает то, что должен делать, без ошибок.
  • Мы знаем, что код работает. Мы предприняли шаги, чтобы подтвердить себе и другим, что код соответствует своему назначению.
  • Он решает правильную проблему.
  • Он корректно и предсказуемо обрабатывает ошибки: он не просто рассматривает «счастливый сценарий». Ошибки должны предоставлять достаточно информации, чтобы помочь будущим разработчикам понять, что пошло не так.
  • Он прост и минималистичен — он делает только то, что необходимо, таким образом, чтобы и люди, и машины могли понять это сейчас и поддерживать в будущем.
  • Он защищен тестами. Тесты показывают, что он работает сейчас, и служат набором регрессионных тестов, чтобы избежать его незаметного сбоя в будущем.
  • Документация составлена ​​на соответствующем уровне и отражает текущее состояние системы — если код изменяет существующее поведение, существующая документация обновляется в соответствии с ним.
  • Проект предусматривает возможность будущих изменений. Важно придерживаться принципа YAGNI — код с дополнительной сложностью для прогнозирования будущих изменений, которые могут никогда не произойти, часто является плохим кодом, — но также важно не писать код, который значительно усложняет будущие изменения.
  • Все остальные соответствующие «возможности» — доступность, тестируемость, надежность, безопасность, удобство сопровождения, наблюдаемость, масштабируемость, удобство использования — нефункциональные показатели качества, подходящие для конкретного класса разрабатываемого программного обеспечения.

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

Нам нужно выработать новые привычки

Задача — выработать новые личные и командные привычки, которые соответствуют новым возможностям и перспективам агентской разработки.

Эти лучшие практики всё ещё формируются на уровне всей индустрии. Я и сам продолжаю их для себя нащупывать.

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

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: