Старая добрая советская мечта — «Вкалывают роботы, счастлив человек!» — в наше время все более реальна. Роботы — большой и правильный тренд, с которым человечество связывает самые оптимистичные ожидания. Насколько этот оптимизм оправдан — покажет время. Пока что роботы успешно применяются для рутинных операций. Например, роботов можно научить пилотировать, но вести воздушный бой — вряд ли. Роботы лучше людей собирают автомобили, но едва ли смогут проектировать новые типы двигателей. Робот-уборщик, робот-сиделка — да, верю. Но доверил бы кто-то из нас роботу сложную хирургическую операцию?
— Масштаб изменений, которые мы увидим в ближайшие 5-10 лет, затмит собой все, что произошло за последние тридцать. Искусственный интеллект, машинное и глубокое обучение, нейронные сети сделали возможной автоматизацию автоматизации. Это означает, что люди, пишущие софт, — простые программисты, — больше не нужны. Код пишет себя сам. Это ведь просто математика. В прошлом, когда я писал код, алгоритм был простым, но требовал смекалки. Постепенно он становился сложнее, умнее и позволял делать все более интересные вещи. Сейчас все это автоматизируется. Вы должны знать, как этим воспользоваться. Потому что-либо софт работает на вас, либо — вы на софт. И тогда, как только софт начнет писать себя сам, потребность в вас отпадет.
Марк Кьюбан сравнивает программирование с математикой, — неплохая аналогия. Но математика бывает разная. Одно дело — решать задачки в школе, другое — искать доказательство теоремы Ферма или выдвигать новые гипотезы.
Программисты — люди, которые всерьез занимаются автоматизацией, — хорошо понимают границы возможного в этой области и им будет трудно разделить оптимизм Кьюбана.
Процесс создания программ можно разбить на несколько стадий: анализ предметной области, поиск решения, проектирование, разработка. Написание кода происходит в основном на этапе разработки. Возможно, об этой части работы и говорил Марк Кьюбан. Считается, что в ней есть некоторое поле для автоматизации. Это действительно так, но надо понимать, что написание программного кода — достаточно сложная и творческая деятельность.
Текущие и перспективные разработки в области искусственного интеллекта — это все задачи класса «подай-принеси», и до автоматизации программирования еще очень далеко. Через несколько десятков лет, возможно, реализуют какую-то часть интеллекта собаки, спустя еще несколько десятков — смогут сделать что-то с минимальными признаками осмысленности. Но даже для разработки программ по готовым алгоритмам требуется интеллект много выше среднего.
Эйфория вокруг достаточно скромных реальных достижений робототехники возникает в основном от непонимания того, что внутри. То, что сейчас называют искусственным интеллектом, — это уровень рефлексов, а они есть и у амебы. По моему мнению, как минимум в ближайшие 20 лет мы не сможем рассчитывать на серьезную помощь роботов в разработке программ и программисты будут не менее востребованы, чем сейчас.
Вот причины, почему этот так, и не может быть иначе:
Программирование — творческая деятельность. Оно похоже на работу писателя или архитектора. Многие ошибочно сводят работу программиста к алгоритмизации. Это не всегда так, а иногда совсем не так. Программисты проектируют и создают информационную реальность. Это может быть какое-то отражение того, что есть, или создание чего-то нового. В этой работе очень велика творческая составляющая. Пока надежных способов не то что автоматизировать, но даже повысить производительность труда программистов не найдено.
Об этом еще в 1986 году писал в своей статье «Серебряной пули нет» Фредерик Брукс (Frederick Brooks «No Silver Bullet», 1986). За тридцать с лишним лет взрывного по темпам прогресса в области информационных технологий ситуация не изменилась.
Технический прогресс сдерживается сложностью решения определенных задач. Например, люди изобрели колесо. Это было непросто, понадобилось несколько десятков тысяч лет. Потому что колесо — вещь неочевидная. Очевидная — волокуша. Техническая задача — снизить трение. Непонятно, неочевидно, сложно. Решение было найдено, и позднее были найдены решения других первичных задач: транспорт, строительство, производство.
Сегодня решаются еще более сложные задачи. Это задачи управления — машинами и механизмами, транспортом, производством, финансами и т.д.
Например, изобретение конвейера — грамотно решенная задача управления, которая в десятки раз повысила производительность труда, его качество. Примерно такого класса задачи сейчас решают те, кого в широком смысле называют программистами.
Если строителя попросить построить дом без фундамента или проектировщика автомобиля — сделать машину, которая ездит без топлива, то они скорее всего, не возьмутся за такую работу. Есть объективные физические законы, и классические инженеры работают «в рамках». Программисты работают с виртуальными (информационными) объектами и не ограничены законами физики. Более того, очень часто они проектируют целые миры и сами создают законы. Поэтому программирование — одна из самых сложных технических профессий. Нет рамок, возможно всё, проблема лишь в том, чтобы удержать под контролем то, что ты «натворил». Ключевые задачи, из которых состоит ежедневная работа программистов, — поиск закономерностей, генерация идей, разработка решений, — невозможно автоматизировать.
То, что в ближайшие 5-10 лет работа программистов будет автоматизирована, — наивная иллюзия. Это невозможно. По крайней мере, не так скоро.
Востребованность программистов не только не снизится, а наоборот, вырастет. Причем существенно быстрее, чем система подготовки будет выдавать хороших специалистов. Подготовка программиста — это пять-семь лет упорной работы. При условии, что на входе — некоторое количество таланта и десять-одиннадцать лет не менее упорной работы в школе. Выгоды от цифровизации хорошо понятны, работы много, а делать ее некому, потому что все, кто есть, уже заняты. Кадровый голод на программистов будет свирепствовать еще очень долго. Такова реальность.
Мнение редакции может не совпадать с мнением авторов Inc.