Опрошенные порталом The New Stack эксперты рассказывают о том, как разработчики могут творчески использовать искусственный интеллект, включая PR-обзоры, создание путей обучения и генерирование моделей данных.
Сейчас, когда ИИ все шире применяется в технологическом секторе — наряду с соответствующим ростом числа доступных платформ, инструментов и сервисов для кодирования с помощью ИИ, — разработчики ломают голову над тем, как лучше использовать ИИ для решения своих задач и достижения своих целей, чтобы стать более продуктивными, лучше справляясь с некоторыми из наиболее обременительных и трудоемких задач программирования.
Хотя многие используют такие инструменты, как GitHub Copilot, Claude 3 Opus, Pieces for Developers и Codeium, чтобы генерировать код и автоматизировать задачи, разработчики изучают и другие способы, с помощью которых ИИ может помочь им быть более продуктивными.
1. Тестирование кода и PR-обзоры
«Я знаю одного человека, который использует ИИ для создания модульных тестов для кода, который он пишет, — говорит Шейн Томас, ветеран-программист и соучредитель Audiofeed. — Это экономит ему массу времени на написание одних и тех же тестов снова и снова. Ему все еще приходится проверять результаты, но, похоже, это дает положительный эффект».
Хотя использование ИИ для модульных тестов имеет свои плюсы, другие эксперты призывают к осторожности при использовании ИИ для тестирования. Так, Свизек Теллер, техлид компании Tia, советует разработчикам использовать ИИ для тестирования только в некоторых случаях, например, для генерации большого количества «разнообразных исходных данных, похожих на производственные».
Разработчики также используют ИИ для симуляции обзоров кода, что может помочь им подготовиться к обзорам с коллегами-людьми. «Я знаю одного человека, который использует ИИ в качестве первого прохода для проверки запросов на выгрузку для своих коллег, — говорит Томас. — Он рассказал мне, что получил комментарии от других инженеров о тщательности его PR-обзоров. Но многие из его замечаний были впервые отмечены ИИ».
2. Пути обучения
Образование и обучение — еще одна область, где разработчики применяют ИИ с пользой.
«Я использую ChatGPT, чтобы создать для себя путь обучения по мере углубления в подсказки, — говорит Бека Хаврот Вайгель, технический ИИ-специалист OpenSauced. — Я дала ему инструкции о том, что мы должны делать каждый день, и попросила его придумать занятие, которое мы могли бы обсудить».
3. Автоматизация повторяющихся задач
Еще одно творческое применение ИИ для разработчиков — автоматизация некоторых из самых обременительных и трудоемких задач, таких как помощь в сопровождении кода и отслеживание непонятных ошибок путем анализа сложного кода. Технический директор и соучредитель Tabnine Эран Яхав считает, что ИИ поможет устранить часть этой рутинной работы.
«Инструменты ИИ для кодирования автоматизируют так много задач, что разработчики, скорее всего, обнаружат, что некоторые из имеющихся у них навыков больше не нужны, — отмечает он. — Но это неплохо, потому что многие из них связаны с рутинной работой, которую разработчики с радостью оставят».
4. Поиск с помощью ИИ
Хотя практически все разработчики полагаются на инструменты поиска и ИИ для решения проблем с кодом, некоторые из них используют новые инструменты на базе ИИ для поиска специалистов.
«Я необъективна, потому что работаю в OpenSauced, но мы создали инструмент под названием StarSearch, который позволяет находить „звезд“ в пространстве Open Source, индексируя различные формы активности разработчиков, включая историю git, — говорит Вайгель. — Например, вы можете попросить его помочь вам найти разработчиков Tailwind, которые также знают Rust. Это отличный пример того, как ИИ может выйти за рамки завершения кода и обеспечить более глубокое понимание Open Source, улучшая поиск и сотрудничество разработчиков».
5. Генерация документации и моделей данных
«Некоторые из действительно потрясающих примеров, которые я постоянно использую, — это применение ИИ для написания модульных тестов, документации, а также для помощи в создании моделей данных и имен», — говорит Марк Уидман, технический директор и инженер-основатель Pieces for Developers.
ИТ-ветеран Джон Уделл, ныне возглавляющий сообщество steampipe.io, также отмечает возможность использовании ИИ для улучшения документации и делится своим опытом использования инструмента на базе LLM, такого как Unblocked, для улучшения создания и поддержки документации по коду: «Написание документации с нуля — такая же редкость, как и написание кода с нуля. Чаще всего вы обновляете, расширяете или рефакторите существующую документацию. Я ожидал, что инструмент, работающий на LLM, сможет оказать мощную помощь с поддержкой кода и документации, и Unblocked это сделал».
Предостережения и опасения
Хотя Уидману нравится наблюдать за прогрессом OpenAI в целом, и OpenAI API в частности — особенно за тем, как последний приближается к рабочим процессам разработчиков, — он предупреждает, что предстоит еще много работы по улучшению того, что было сделано до сих пор: «Я считаю, что им еще предстоит пройти долгий путь в отношении конфиденциальности данных, дополнительной поддержки ОС и снижения большой стоимости задержки».
Действительно, поставщикам ИИ еще предстоит проделать большую работу по обеспечению конфиденциальности данных, но разработчиков должны беспокоить и другие вопросы, когда они рассматривают творческое применение ИИ. Одна из опасностей заключается в том, чтобы слишком сильно полагаться на ИИ при выполнении слишком большого количества задач, что может привести к снижению качества кода и неспособности разработчиков выполнять задачи разработки без помощи ИИ.
В исследовании GitClear «Coding on Copilot: 2023 Data Suggests Downward Pressure on Code Quality» было показано, что разработка с помощью ИИ ведет к «снижению качества кода», создает «обескураживающие тенденции в области сопровождаемости» и приводит к тому, что «...процент строк кода, которые были исправлены или обновлены менее чем через две недели после написания, по прогнозам, удвоится в 2024 г. по сравнению с базовым, до появления ИИ, уровнем 2021 г.».
Программирование с помощью ИИ: лучшее еще впереди?
Несмотря на все предостережения и потенциальные минусы, неумолимость технологического прогресса означает, что в будущем появится еще больше разработок на базе ИИ, которые программисты будут с нетерпением ждать и творчески адаптировать к своим индивидуальным потребностям. Кристиан Ранстром, владелец Rainstorm Technologies и опытный разработчик ПО, отмечает, что такие инструменты, как GitHub Copilot Workspace, могут поднять производительность разработчиков на новую высоту.
«Он еще не открыт для публики, но я в восторге от Copilot Workspace, — говорит Ранстром. — Я стою в очереди на его получение, и мне не терпится увидеть, как он ускорит мою работу».
Уидман советует разработчикам изучать, как ИИ используется в других областях, не связанных с разработкой ПО, и затем адаптировать и применять эти сценарии. Он также считает, что благодаря новаторской работе исследователей и разработчиков ИИ появится еще больше креативных вариантов использования.
«Одна из самых важных вещей, которыми я руководствуюсь, — это то, что мы стоим на плечах гигантов, поэтому нет ничего плохого в том, чтобы посмотреть, что уже существует, и применить это в своей области, чтобы помочь улучшить процессы, сэкономить время и деньги и сделать много других удивительных вещей!», — отмечает Уидман.