Спойлер
да, но она сильно изменится
В 2004 году вышел фильм «Я, робот», который оброс мемами. Один из ключевых эпизодов картины — сцена, где робота спрашивают, может ли он написать симфонию или создать какой-либо шедевр. Робот отвечает: «А вы?» Сегодня искусственный интеллект рисует обложки для журналов, сочиняет музыку, пишет книги. Что вообще происходит? Предлагаю обсудить, как изменится деятельность разработчиков ПО в ближайшие годы в связи с широким распространением ИИ.
Меня зовут Александра Мурзина, я консультант по ML-технологиям в Positive Technologies, и моя задача — автоматизировать процессы информационной безопасности с помощью машинного обучения. Иногда я об этом рассказываю со сцены.
Пять лет назад меня принимали чуть ли не за городскую сумасшедшую, когда я говорила о возможной замене людей на некоторых направлениях информационной безопасности искусственным интеллектом. С появлением LLM такие прогнозы уже не кажутся бредом. Коллеги даже просят, чтобы я не автоматизировала их работу слишком быстро.
Когда все началось
Одной из первых значимых вспомогательных технологий для программистов стал текстовый редактор Emacs, появившийся в 1979 году, — пионер среди инструментов для автоматизации рутинных действий в разработке. В одной программе можно было редактировать код, компилировать и выполнять отладку.
В 1997 году Microsoft выпустила IntelliSense — технологию, которая существенно облегчила написание кода: система анализирует код в реальном времени и предлагает разработчику возможные варианты продолжения строки.
В 2005 году на рынок вышла система управления версиями Git, которая позволила отслеживать изменения в коде и управлять различными версиями проектов, а чуть раньше разработали подход Agile. Все это способствовало улучшению взаимодействия внутри команд, однако попытки автоматизировать разработку долгое время оканчивались ничем.
Неудачные проекты до GenAI
В 2015 году уже появились решения, претендующие на звание сopilot для разработчиков. Можно вспомнить IntelliCode от Microsoft или более продвинутый помощник Kite для Visual Studio Code. Работали они куда хуже, чем ожидалось. Создатели таких систем попали в технологический тупик: сделать хорошее решение для автоматизации написания кода в то время было невозможно. Многие разработчики впервые столкнулись с цифровыми помощниками именно тогда — и теперь, когда они слышат о новых, то не хотят ими пользоваться, вспоминая о прошлом неудачном опыте.
Как итог:
AI разочаровал разработчиков. Но потом пришел GenAI.
Краткая история больших языковых моделей
Прорыв в машинном обучении произошел в 2017 году благодаря исследователям из Google Brain. Они изобрели трансформер — архитектуру глубоких нейронных сетей, основанную на механизме внимания без использования рекуррентных нейронных сетей. Если помните, существовали такие рекуррентные сети — RNN, LSTM и другие, развивавшиеся для задач машинного перевода. Исследователи задавались вопросом: как же этот машинный перевод улучшить, сделать более естественным? Так появилась архитектура моделей нейронных сетей sequence-to-sequence (seq2seq) — еще не трансформер, но уже очень близко.
Важным изобретением стал механизм внимания (англ. attention mechanism, attention model), который сначала значительно повысил качество машинного перевода, а затем стал применяться и в других областях. Автоэнкодер с механизмом внимания и назвали трансформером. На его базе появилась BERT — языковая модель, которая уже была генеративная, то есть могла генерировать, а как следствие и решать большое количество задач. И вот на основе BERT, по сути трансформера, появились современные большие языковые модели (large language model, LLM). Наверняка многие уже пользовались ChatGPT от OpenAI, Claude от Anthropic, YandexGPT или «Нейро» от Яндекса. Сейчас кажется, что развитие этих систем не остановить и все это будет только развиваться.
В 2023 году венчурный фонд Sequoia Capital (основатель которого в свое время одним из первых вложил деньги в акции Apple, Oracle и Cisco) создал карту инструментов для разработки, где по горизонтали отмечены этапы разработки, а по вертикали — инструменты, от классических до использующих ML-технологии и полностью AI-powered. Как видно на картинке, развертывание и запуск приложений пока (во всяком случае в 2023 году) отстают от других этапов разработки.
На сколько процентов программист будет лучше самого себя за счет AI?
Сегодня инструменты ML развиваются с невероятной скоростью. Но какие ежедневные задачи с их помощью может выполнять разработчик? И, самое интересное, упрощают ли эти инструменты его жизнь?
Чтобы ответить на эти вопросы, мы будем опираться на три исследования, которые точно стоит прочитать в оригинале. Если CodeSignal и GitHub проводили опросы разработчиков, то McKinsey организовали целую лабораторию: они пригласили туда разработчиков и замеряли их продуктивность без использования и с использованием инструментов AI. Давайте посмотрим, из чего, согласно аналитикам, состоит работа программиста (для удобства в статье мы обобщаем результаты трех исследований и приводим усредненные значения).
Написание кода: 25%
Тестирование и отладка: 20%
Ревью кода: 15%
Встречи и коммуникация: 20%
Документирование: 10%
Настройка или изменение окружения: 10%
Агрегированные результаты этих исследований показывают, что процесс написания кода при использовании GitHub Copilot можно ускорить на 55%, тестирование и дебаггинг займут на 30% меньше времени. Продуктивность ревью кода вырастет на 20–25%, скорость работы с документацией увеличится на 20–25%, время установки ПО и настройки среды уменьшится на 10–15%.
Анализ результатов исследований показывает, что разработчик с помощью AI может ускорить свою работу на 20–60%. Это немало, но еще далеко от подтверждения слов главы Nvidia Дженсена Хуанга (Jensen Huang): «Не учите детей на программистов. Искусственный интеллект заменит их всех».
Почему такой небольшой процент?
Разработчики все еще разочарованы в современных помощниках для написания кода
Многие разработчики все еще с недоверием относятся к современным AI-помощникам. С одной стороны, причина тому — память о малополезных «помогайках» прошлых поколений. С другой стороны, у генеративных ассистентов пока много недостатков:
AI не всегда выдает качественные ответы.
В больших проектах все еще трудно работать с контекстом.
Безопасность и конфиденциальность остаются под вопросом.
Не все любимые IDE совместимы с генеративными инструментами.
Но есть еще одна важная причина, почему многие разработчики разочарованы в генеративных ассистентах: чтобы получить хороший результат — нужно уметь писать хорошие промпты.
Какие сложности с написанием промптов возникают:
Нужно уметь формулировать свои мысли. Это правда не так просто.
У разных LLM могут быть свои особенности, и их нужно знать.
Нужно потратить время, чтобы научиться писать промпт и попрактиковаться.
Результат не всегда сразу получается идеальным, зачастую нужно итеративно улучшать промпт.
Так, чтобы получить хороший результат, нужно написать хороший промпт — это требует времени и навыков. А навыки промпт-инжиниринга — не всегда те навыки, которые программист хочет получить в моменте. Выходит парадокс: мы бы хотели этими умными помощниками снять когнитивную нагрузку с разработчика, но обучение новому навыку эту нагрузку увеличивает. По крайне мере, пока разработчик не овладеет им.
Промпт-инжиниринг — навык будущего?
Конечно, есть люди, которые не очень интересуются генеративными технологиями — а есть те, для кого использование AI становится основным навыком. В первую очередь это студенты и в целом подрастающее поколение, которому сейчас несложно обучиться новому, — предсказание, что через пять лет мы получим разработчиков с основным навыком написания кода через помощников, уже не выглядит таким нереальным. И кажется, что индустрии придется принять это, потому что других разработчиков не будет. Но назревают и другие изменения.
Решения low-code и no-code. Естественный язык для разработки
Помимо промпт-инжиниринга, в разработке появляются и другие новые тенденции: low-code, no-code и естественный язык для разработки. И сегодня в венчурном фонде Y Combinator почти половина горячих тем (таких, над которыми, по мнению создателей фонда, должны работать как можно больше людей) касаются ИИ и автоматизации написания кода. А значит, таких стартапов будет очень много: то, что промпт-инжиниринг становится важным навыком будущего для разработчиков, подтверждается и индустрией, которая готова в это инвестировать.
Появляются разные вопросы. Будут ли люди писать код через пять лет, если уже сейчас акселераторы готовы активно вкладываться в ИИ? Если ИИ такой умный, может быть, пусть сам промпты и пишет?!
Создатели системы Devin, представленной недавно, обещают сделать помощника, который будет максимально похож на человека: при ошибках система будет автоматически перекомпилировать и перегенерировать код, предоставляя обратную связь. Что-то похожее обещает и GitHub Copilot Workspace, предлагая генерировать решение на основе задачи, описанной разработчиком. Интересны и такие решения no-code, как Tilda — конструктор для создания сайтов: они позволяют создавать полноценные веб-продукты без написания кода. Это открывает новые возможности для тех, кто не владеет навыками программирования.
Весной 2024 года Илон Маск заявил, что искусственный интеллект станет умнее любого человека уже в 2025 году, а к 2029-му, вероятно, будет умнее всех людей вместе взятых. Нам остается только подождать и проверить эти прогнозы. На мой взгляд, несмотря на прогресс, навыки программирования остаются важными: именно они помогают понять, как правильно взаимодействовать с AI-инструментами. Будущее за синергией человека и машины.
Какие выводы можно сделать
Мы стоим на пороге новой эры в разработке программного обеспечения. Кажется, ИИ не заменит программистов, а станет их сверхмощным напарником, который расширит границы возможного. Подобно тому, как симфонический оркестр сочетает звучание различных инструментов, создавая нечто большее, чем просто сумма частей, так и союз человеческого интеллекта с ИИ откроет новые возможности для прорывных решений.
Разработчики будущего — это не просто программисты, а виртуозные дирижеры цифровых оркестров. Они будут мастерски управлять ансамблем инструментов ИИ, платформ low-code и классических языков программирования. Их главной силой станет не столько умение писать код, сколько способность формулировать идеи, решать сложные проблемы и создавать архитектуру систем, которые изменят мир.
Промпт-инжиниринг эволюционирует в новую форму программирования, где слова станут кодом, а воображение — главным ограничителем. Но даже в этом новом мире фундаментальное понимание принципов разработки ПО останется бесценным, именно оно позволит создавать по-настоящему инновационные решения.
Готовясь к этому захватывающему будущему, мы должны не бояться перемен, а привыкать к ним, постоянно обучаясь и адаптируясь. Ведь в конечном итоге именно симбиоз креативности человека и мощи ИИ позволит нам писать код будущего — код, который изменит мир к лучшему.