Марио Зехнер, создатель одной из самых популярных Java-библиотек для игр libGDX, высказал серьезные опасения относительно влияния автономных кодирующих агентов на качество программирования. Он утверждает, что скорость работы таких агентов может не только увеличивать производительность, но и способствует нарастанию ошибок, поскольку они не обучаются и не развиваются.
Проблемы ускоренного программирования
Зехнер отмечает, что у человеческих разработчиков есть естественные ограничения: скорость набора текста, время на понимание кода и усталость. Эти факторы способствуют контролю качества — чем быстрее работает агент, тем легче происходит масштабирование ошибок. «Люди могут допускать ошибки, но они все равно ограничены в своих возможностях», — подчеркивает он. Вместо этого агентов не сдерживают такие ограничения, и это приводит к тому, что ошибки копируются в больших объемах кода.Одной из причин проблемы — то, что эти агенты извлекают архитектурные паттерны из обучающих данных, включая неблагоприятные абстракции, которые были созданы ранее. Выводы таких систем обычно стремятся к средним значениям, а потому часто приводят к созданию избыточных абстракций и потере согласованности внутри модулей.
Необходимые изменения в подходах к программированию
Зехнер предлагает несколько решений: ограничение ежедневного объема работы агентов, документирование архитектурных решений и парное программирование для поддержания вовлеченности человека. Однако он подчеркивает, что ограничения на количество строк кода, написанных в день, не решают проблему. «Важно не то, сколько строк кода написано, а насколько глубоко команда понимает свою систему», — заявляет он.Исследования показывают, что уменьшение трения в процессе программирования может привести к утрате понимания — люди не всегда осознают, когда они что-то не понимают. Зехнер утверждает, что ошибки происходят, когда код пишется без активной вовлеченности разработчиков, лишая их шанса встраивать знания в процессе программирования.
Практическое значение для разработчиков
Для команд в России это важно, поскольку у них также есть риск пропустить важные аспекты проектирования и внедрения кодов. Ограничения должны сосредоточиться не на количестве, а на степени понимания и анализа, проведенного людьми перед слиянием кода. Такой подход поможет предотвратить появление неполных или неправильных решений в сложных проектах.Следующим шагом для разработки будет переоценка интерфейсов взаимодействия человека и интеллектуальных агентов, чтобы гарантировать наличие понимания до одобрения кода.