Будущее разработчиков: как технологии искусственного интеллекта изменят профессию
Директор по наукам и технологиям персонального ассистента «Алоль» Роман Душкин написал для vc.ru колонку о том, что ждёт профессию разработчика с распространением технологий искусственного интеллекта и как программист может остаться востребованным на рынке.
В предыдущей публикации мы говорили о замене специалистов разных профессий искусственным интеллектом и чат-ботами. Тема будущего программистов в связи с таким поворотом вызвала волну обсуждения, и мы решили подробнее раскрыть этот вопрос.
Код, который пишет код
Три года назад разработчик Кори Бекер опубликовал подробный материал о своём подходе, при помощи которого можно заставить эволюционировать код на языке Brainfuck. Это подход на деле демонстрирует принципы «генетического программирования».
Написанная Кори Бекером программа получает на вход некоторое описание функции приспособленности, которая описывает целевую программу, после чего «выращивает» код на языке программирования, который решает поставленную задачу.
Простыми словами: вы ставите программе задачу написать другую программу, которая выведет на экран слово «Hello!» — и она это делает. Технически это означает воплощение решения при помощи искусственного интеллекта неформализованных задач. Похожий подход используется в персональном помощнике Viv, над которым работают создатели голосового ассистента Siri.
В выводах эксперимента Кори Бекер подчёркивает, что в недавнем прошлом ресурсов вычислительного устройства не хватило бы, чтобы такая программа в принципе функционировала. Сегодня же она выполняет условия разной степени сложности от одной минуты до нескольких часов.
Язык программирования Brainfuck является Тьюринг-полным, а это значит, что на нём можно написать программу, которая вычислит любую теоретически вычислимую функцию. Это язык общего назначения, и подобным методом можно «вырастить» программу, которая, скажем, будет представлять собой операционную систему, по сложности не уступающую Windows, Unix или macOS.
Возможно, для языков с более высоким уровнем абстракции (Haskell или Pascal) также существуют подобные разработки. Использование Brainfuck — наиболее простой подход к решению задачи в «домашних условиях». Пример иллюстрирует, что человек вне корпорации или большого проекта в силах реализовать такую задачу. А значит, что решение может быть значительно масштабировано в рамках индустрии. И индустрия уже движется в этом направлении.
От программирования к управлению программами
В феврале в компании Google сменили Амита Сингхала, главного специалиста по поисковым алгоритмам, на Джона Джинандреа, ставшего руководителем направления технологий искусственного интеллекта. Эта перестановка иллюстрирует переход от разработки и написания алгоритмов к управлению нейросетями глубокого обучения.
В процессе решения задач с помощью «классического» программирования и с помощью ИИ-технологий есть важное отличие. В первом случае функциональность и логика работы программы понятна и подконтрольна разработчику, так как полностью определяется созданной им структурой кода. В случае с нейросетями, как и в примере с программой Кори Бекера, алгоритм, который используется для выполнения задания, недоступен и часто не может быть проинтерпретирован человеком даже после «дизассемблирования».
Это меняет суть работы программиста, так как осуществляется переход от производителя к управляющему ИИ-продуктом. От такого человека требуется писать меньше кода, но больше работать с оценкой и анализом результатов продукта, управлять им и планировать его развитие.
Сегодня бизнес, условно говоря, держит одного высокоуровневого системного архитектора, который описывает задачи и передаёт их десятке кодеров, чтобы они перевели задачи на синтаксис заданного языка. Получается парадоксальная ситуация: при наличии языков высокого уровня, чем сложнее ставятся задачи, тем проще нанять кучу кодеров в Бангалоре для их решения. Но в ближайшие 7–10 лет такой подход будет вытеснен — функции «переводчика» возьмёт на себя ИИ.
«Индустриализация» в программировании
Приход методов искусственного интеллекта в профессии — это не апокалипсис в духе фильмов про Терминатора, это про деньги. Прогресс и растущая экономика требуют разделения труда и появления узких специалистов. При подъёме тренда спрос на специалистов растёт, что мы и наблюдаем сегодня.
Чем больше перенасыщается рынок и чем больше специалистов вовлекается в «производство», тем больше возникает потребность снижать затраты, в том числе и путём сокращения расходов на персонал.
Программированию тоже предстоит пройти подобную «индустриализацию», это нормально. Искусственный интеллект станет тем парнем, на которого ляжет выполнение рутинных операций и помощь в проверке гипотез и принятии решений. Число специалистов, решающих задачи, сократится. Условно, вместо 10 сотрудников, понадобятся двое или трое, чтобы ставить задачи искусственному интеллекту, оценивать и анализировать результаты его работы, разрабатывать новые подходы и так далее.
Само по себе умение писать код перестанет быть тем уникальным навыком, на котором можно зарабатывать. В цене останутся способность творчески мыслить, умение разрабатывать новые методы и алгоритмы. В этом смысле профессия программиста всегда будет востребована.
Деньги ускоряют технологии
Разработки в области искусственного интеллекта сегодня смещаются из научной области в бизнес, поэтому развитие технологий будет ускорятся. Одна из приоритетных задач в индустрии — вывести анализ естественных языковых запросов на новый уровень. За последние 20 лет удалось снизить процент неправильно распознаваемых слов с 43% до 6–7%. Сегодня нужно сосредоточиться на обучении ИИ тому, как адекватно реагировать на запросы в случаях языковой неопределённости.
В проекты, связанные с ИИ и анализом естественного языка, инвестируют гиганты индустрии: Microsoft, Google, Amazon, IBM и многие другие. Прогнозируется, что к 2025 году рынок продуктов на основе методов искусственного интеллекта вырастет в шесть раз и составит примерно $36 млрд. За 10 лет денежные вливания и требования рынка заставят ИИ, который сегодня пишет примитивный код, «закрыть» более сложные участки работы: поиск и исправление ошибок, анализ и оптимизацию алгоритмов и так далее.
Вместо заключения
Ближайшее будущее программирования — в создании продуктов на технологиях искусственного интеллекта, управление ими и внедрение их в другие отрасли.Чтобы быть на волне изменений, которые произойдут в индустрии, я рекомендую совмещать совершенствование в программировании с изучением смежных областей:
- Изучать фундаментальную математику (линейную алгебру, формальную логику, теорию автоматов и другие разделы дискретной математики) как методологию символьных вычислений. Эти знания помогут лучше понять, как работают искусственный интеллект.
- Изучать такие прикладные области знаний, как лингвистика (необходимо понимать, как устроено общение на естественном языке), психология (это поможет разобраться в том, как устроено мышление) и биохимия (чтобы изучить, какое «железо» лежит в основе сознания и процессов мышления и общения).
- Изучать современные достижения, методы и техники, связанные с искусственным интеллектом: искусственные нейронные сети, машинное обучение, обработка естественного языка, символьные вычисления и др.
- Решать практические задачи, связанные с ИИ, участвовать в хакатонах, общаться с другими разработчиками. Могу рекомендовать наших друзей AI Сommunity, которые активно создают тусовку ИИ-специалистов в России.
© vc.ru