Как AI помогает повседневной работе команды разработки

Статья ориентирована на читателя, который еще сомневается, стоит ли ему пробовать чат‑боты в работе. Если вы знакомы с технологией и пробовали её в повседневной деятельности, то вряд ли найдете её полезной.

Немного расскажу о реальном применении GPT у нас в компании.

Введение

Про генеративные модели рассказано много: всевозможные источники предрекали вымирание каждой второй интеллектуальной профессии. Обязательно находились люди, которые рассказывали что «программисты не нужны, вон username из city сделал сайт/скрипт/чертёж.txt при помощи ChatGPT, уволил всех программистов и сидит один грустный ищет новых теперь его бизнес работает сам, а он только деньги собирает».

Благодаря фурору, который произвёл ChatGPT наклейка «АЙ АЙ» появилась на каждом втором утюге. При этом самих же нейронных сетей в различных архитектурах было предостаточно в технологиях, которыми мы привыкли пользоваться без явного подчёркивания, что «там работает искусственный интеллект».

В совокупности, у меня это всё вызывало только раздражение, но отрицать полезность чат‑бота глупо — даже в текущем виде мы применяем его внутри компании, и он помогает моим коллегам и мне решать рабочие рутинные задачи. Сегодня я немного расскажу о некоторых удачных практических применениях.

Генерация UML схем

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

В процессе проектирования бывшему разработчику проще всего накинуть будущие модели, используя какой‑либо язык программирования, например C# или Typescript. Это удобно, так как в любимых ORM часто используется code first подход, и в коде очень легко выразить нужные связи в естественном для разработчика виде. А на основании этих связей можно накинуть DSL и немного детальнее проработать предметную область.

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

На рынке существует несколько продуктов, которыми я смогу решить эту задачу, но они платные (что ожидаемо) и/или требуют подключения к БД, которой ещё нет. Затраты по времени и усилиям не стоят покупки или использования этих продуктов — быстрее самостоятельно сделать эту диаграмму и бесплатно.

Вот тут на помощь приходит GPT и простая просьба сгенерировать ERD диаграмму с использованием PlantUML. И с этой задачей он справляется относительно неплохо — со 2–3 раза получается вполне читаемая диаграмма, достаточная для иллюстрации решения.

Вот пример решения такой задачи.

Предположим, у нас есть некоторая сущность Order, с которой связанны некоторые объекты имеющие определённый тип. Пример намеренно маленький — на масштабах работает так же.

Hidden text

Вот такую диаграмму мы получим на выходе. Описание UUID, конечно, лишнее, но это уже придирки.

Генерация комментариев к коду

Комментировать код является хорошей и распространённой практикой. Комментарии позволяют быстро получить недостающий контекст о назначении участка кода, метода или класса без ущерба читаемости самого исходного кода, и разработчики привыкли эти комментарии оставлять (ну или их принуждают они стараются это делать). Но часто ли вам приходится объяснять назначение каждого ФАЙЛА?

Одним из условий сдачи проекта была передача исходного кода заказчику. Команда вела разработку проекта несколько лет — было написано более 3000 файлов исходного кода. И вот, разработка окончена и начинаются приёмо‑сдаточные испытания.

И какого же было удивление команды, когда стало известно об одном интересном факте: согласно внутренним документам заказчика каждый файл исходного кода должен сопровождаться комментарием о том, для чего он тут нужен.

Возможно, требование покажется абсурдным, возможно, оно уже устарело как морально, так и организационно, но сделать его нужно. Задача кажется трудоёмкой и скучной — зайти в каждый файл, посмотреть на него, сделать некоторое резюме. Скучная, но выполнимая. Кому же поручить такую задачу? Джуниор разработчику? А он не уволится расстроится после такой задачи? Отвлечь на часок всю команду?

И тут мы вспомним про замечательное умение нашего GPT — cпособность к обобщению! А не это ли нам нужно?

Попробуем проверить. Возьмём файлик с нашим кодом и попросим его рассказать: а что тут происходит?

Hidden text

Как оказалось, GPT вполне явно определил что содержит этот файл. Попробуем на масштабе — немного дорабатываем запрос, проходимся кодом по нашему репозиторию, просим GPT через API обобщить каждый файл и выводим это в текстовый файл.

Мы бегло перепроверили работу помощника. Всё сходилось.

Задача решена, нервы коллег сохранены!

Шторминг проблем

Иногда при шторминге проблем не знаешь, с чего начать: мысли путаются, непонятно, где причина, а где следствие. Проблема часто скорее психологическая — правильно начать, не сбиться с мысли.

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

Если ты не хочешь отвлекать коллегу, то чат‑бот может стать таким собеседником. Он особенно полезен, когда ты не обладаешь глубокой технической экспертизой в определенной области и тебе нужен не просто утёнок, а senior утёнок, который может и подсказку дать.

А иногда вопросы задавать просто стыдно. Наверное самое популярное — это проблемы с git. Несмотря на обширную документацию и огромное количество примеров, очень многие в упор игнорируют его изучения и из раза в раз повторяют одни и те же ошибки или бездумно выполняют скрипты со stackoverflow.

Вопрошающий (которому очень стыдно за эту часть статьи) не только не связал локальный репозиторий с удалённым, но и не сделал коммит.

Hidden text

Иногда для рассуждений нужна экспертиза. Нужно было перенести данные из одной таблицы в другую, используя миграцию. Важным нюансом являлось то, что сервис поддерживал работу с двумя СУБД: PostgreSQL и SQLite.

Переписка с GPT 3.5 была достаточно нудной, и его сложно было заставить выдать нужный результат. А вот GPT 4 с задачей справился.

Решение конечно не полное, но главное, что оно дало толчок к размышлениям в нужную сторону без необходимости призыва старших коллег.

Hidden text

Эпилог

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

GPT же инструмент новый, а значит, пока плохо изученный со стороны использования.Поэтому пока рано оценивать его эффективность в полноценной работе: то, что чат‑бот не смог решить нужную тебе задачу, не говорит о том, что он не может этого сделать при достаточном опыте владения им. Аналогично можно сказать про умение пользоваться поисковыми системами — далеко не все знают о том, что поисковая строка того же Google имеет встроенные поисковые операторы и ещё меньше ими пользуются в реальной жизни, хотя это существенно сокращает время поиска.

Его использование сейчас конечно имеет известные недостатки:

  • Чат‑бот может дать неправильный ответ или даже выдумывать его — это опасно, если ты не обладаешь экспертизой по задаче и результат нельзя проверить при помощи тулинга.
  • GPT не знает о событиях и технологиях возникших до определённого года, — по свежим проблемам и технологиям чат‑бот не спросишь.

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

А иногда просто помогает улыбнуться.

Начать дискуссию