Как генеративный ИИ меняет разработку ПО

31 Октября 2024 16:5931 Окт 2024 16:59 |
Поделиться

Генеративные модели искусственного интеллекта ускоряют написание простых фрагментов  кода. Благодаря этому уже сейчас меняется сфера разработки программного обеспечения. Как разработчики используют нейросети и что ждать от развития технологии в будущем, рассказывает Тимур Купаев, эксперт по ИИ компании Axenix.

Что используют разработчики

Любая технология проходит три основных этапа развития. Первый этап — исследования и эксперименты. Он сопровождается прогнозами, разброс которых может быть очень велик. Второй — принятие и внедрение, когда можно оценить реальную эффективность использования технологии. Третий — зрелость и повсеместное распространение, когда инновация становится рабочим инструментом.

Согласно свежей оценке цикла зрелости развивающихся технологий (Hype Cycle for Emerging Technologies) от Gartner, в стадию внедрения переходят технологии улучшения производительности разработчиков (Boost Developer Productivity), а также разработка ПО с использованием ИИ (AI-Augmented Software Engineering).

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

Несмотря на хайп вокруг ГенИИ, по-настоящему толковых моделей на рынке сегодня не так много. Обучение модели — процесс дорогостоящий, который может себе позволить только очень крупная корпорация. Цена тренировки одной модели составляет десятки и сотни миллионов долларов.

Многие модели для генерации кода, такие как OpenAI Codex (используемый в GitHub Copilot), StarCoder, CodeGen, начинали в качестве большой языковой модели общего назначения и затем прошли дообучение на данных с программным кодом.

Программист может общаться с нейросетью в процессе работы по аналогии с ChatGPT. Например, выделить фрагмент кода, задать по нему вопрос или попросить продолжить.

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

Они могут быть интегрированы в любые типы приложений, включая чат-боты и внутренние базы знаний компании, а также установлены on-prem, то есть на внутренние серверы, что исключает передачу данных на внешние сервера, как это происходит с закрытыми моделями. Это важно для компаний, которые хотят сохранить данные внутри корпоративного ИТ-контура.

Зачем нужен ГенИИ в разработке

Про кадровый голод в ИТ говорят уже несколько лет. Последние исследования показывают, что 46% компаний вынуждены переносить сроки реализации ИТ-проектов из-за нехватки специалистов.

При этом процесс найма на позиции разработчиков, DevOps-инженеров и специалистов по Data Science может занимать до полугода. Внедрение ГенИИ уменьшит потребность в разработчиках: команды смогут реализовывать больше проектов без увеличения штата.

Так, по данным опроса платформы для написания кода GitHub Copilot, продуктивность разработчиков при ее использовании увеличивается на 88%. Количественные исследования показали, что разработчики создавали код с помощью ИИ на 55% быстрее, чем без него.

Что важно знать про ИИ-программиста

ГенИИ ускоряет написание кусков кода —, но при соблюдении определенных условий и с заметными ограничениями. Так, результат, выданный нейросетью, всегда требует тщательной проверки. Появилось выражение «галлюцинация модели». Это ситуация, когда модель генерирует ответы на основе вероятностных закономерностей, а не фактических знаний. Например, нейросеть может предложить корректный код, но для другой или даже несуществующей версии библиотеки.

Еще одна проблема — ограниченный объем контекста, который модель способна обработать. Особенно это заметно при работе с большими и сложными проектами. Модель может предлагать упрощенные решения без учета структуры проекта, его модулей, архитектурных ограничений и взаимозависимости между файлами. Иногда помогает разделение задачи на более мелкие блоки, с которыми модель может справиться.

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

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

Генерируемый код критически зависит от формата общения с моделью. Формулировка запроса на 90% определяет ответ. Умение «общаться» с моделями становится ценным навыком разработчика, который нужно развивать. Для этого важно экспериментировать: менять постановку вопросов, дать намек на правильный ответ в запросе, задать одну и ту же задачу в разных чатах.

Как ГенИИ скажется на развитии профессии

Остается дискуссионным вопрос — как скажется развитие ГенИИ на профессиональных компетенциях программистов. Сегодня чем опытнее специалист, тем меньше он нуждается в помощи нейросети. Именно потому многие разработчики высокого уровня (senior) относятся к технологии скептически: им проще и быстрее написать код самостоятельно.

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

Начинающим программистам (junior) ГенИИ помогает быстрее вникнуть в концепции языка программирования, понять взаимосвязи, важные структуры. Таким образом, использование технологии ускоряет погружение в профессию. Кроме того, нейросети могут способствовать снижению уровня стресса у студентов или новичков из-за страха задавать вопросы и показаться некомпетентным.

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

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

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

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

Профессия в будущем

Под влиянием ИИ профессия разработчика изменится. Исследование объединения AI-Enabled ICT Workforce Consortium показало, что ИИ изменит 91,5% позиций в ИТ, при этом 34% трансформируются принципиально. В сфере разработки ПО 20% профессий испытают сильное влияние ИИ, 80% — среднее. Изменения коснутся преимущественно позиций начального и среднего уровня (junior и middle).

Ключевым навыком разработчика станет настройка и формулирование запросов для генеративных моделей. Появится должность «инженер промта», который будет составлять и оптимизировать запросы к ИИ-инструментам для получения максимально точных решений. Для них важным будет не только знание кода, но и понимание логики взаимодействия с ИИ​.

Специалисты высокого уровня (senior) останутся ключевыми фигурами проектов. Изменятся их функции, которые будут направлены на контроль процессов, адаптацию стратегий и их интеграцию в общие системы. Они будут играть роль «диспетчеров», которые разбираются во всех частях кода и знают, что куда нужно направить. Это позволит значительно увеличить их продуктивность за счет управления большим количеством проектов и более быстрого развития продуктов без роста нагрузки.

erid: LjN8K3ngsРекламодатель: ООО «Акстим»ИНН/ОГРН: 7705476338/1027705028405Сайт: https://axenix.pro/

Полный текст статьи читайте на CNews