Роботы, автоматизация и искусственный интеллект уничтожат множество рабочих мест в ближайшие 10–20 лет. Мало кто сейчас спорит с этим предсказанием. Мы широко обсуждали эту идею в последние несколько лет, часто используя пример автономных систем вождения и того, как они заменят людей-водителей (самое популярное занятие в Америке сегодня).

Большинство программистов думают, что они не будут в авангарде этой тенденции, потому что программирование программного обеспечения - это когнитивно требовательная деятельность, с которой действительно может справиться лишь небольшая часть людей. Конечно, роботы и искусственный интеллект сначала заменят этих рабочих и менее интеллектуальных белых воротничков, прежде чем подниматься по служебной лестнице и съедать пирог инженеров-программистов?

Я считаю это заблуждением. Программисты могут одними из первых остаться без работы. На это есть несколько причин:

  • Разработка программного обеспечения полностью цифровая. Мы манипулируем цифровыми входами для создания цифровых выходов с помощью логики, реализованной в виде сохраненного в цифровом виде и скомпилированного кода.
  • Мы создали очень хорошую и продуманную автоматизированную инфраструктуру для программного обеспечения: фреймворки для тестирования, механизмы развертывания, мониторинг регрессии и т. Д. Как ни странно, это может помочь заменить ручное программирование моделями ИИ или кодом, генерируемым ИИ, безопаснее и быстрее, чем в других отраслях.
  • Программное обеспечение - одна из самых сложных и удобных вещей, которые мы создаем. Мы живем в эпоху растущей специализации и возможностей: лучшая в мире команда будет делать это для всего мира. Это относится к программному обеспечению больше, чем ко многим другим вещам.

Цифровая природа программирования делает его подходящим для обучения с подкреплением и / или обучения на большом корпусе существующего кода.

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

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

GPT-3 так поразительно хорошо изучил образцы человеческого языка, потому что он прочитал огромное количество книг и других текстов, написанных людьми. То же самое обязательно произойдет с кодом, поскольку большая его часть размещена в сети на Github и других хостингах кода. Эта модель, изучая весь доступный исходный код, по крайней мере, сможет обнаружить любые несоответствия в коде, написанном человеком, т.е. е. ошибки. DeepCode уже сделал очень многообещающий прогресс в этом направлении, изучая PR по исправлению ошибок в других проектах на Github и предлагая исправления в вашем проекте. Арома - еще один интересный проект в этой сфере.

Сравните это с такими областями, как машиностроение или психотерапия. Мы спроектировали и сконструировали больше физических объектов и провели сеансы психотерапии за последние 100 лет, чем написали код. Но мы не записывали, не оцифровывали и не собирали примеры человеческой практики в этих областях. Поэтому я думаю, что будет намного сложнее перейти от GPT-3 к «ИИ-психотерапевту лучше, чем человеческий психотерапевт», чем «ИИ-программист лучше, чем человек-программист», несмотря на то, что психотерапия не «сложнее», чем программирование («оптимальная» психотерапия - это вероятно, очень сложная задача, но человеческие психотерапевты даже близко не подошли к этому, поэтому теоретически их должно быть относительно легко превзойти).

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

Возможность компоновки и возможности программного обеспечения

60 лет назад программисты с нуля занимались программированием своих компьютеров на ассемблере. Потом появились операционные системы и библиотеки. Большинство программных систем, написанных 40–50 лет назад, были автономными и не взаимодействовали ни с чем, кроме людей-операторов (через устройства ввода и вывода) и датчиков.

После библиотек, вероятно, следующим большим классом программ, предназначенных для взаимодействия с другим кодом, были базы данных. Фреймворки программирования (наряду с управляемыми языками, такими как Java) начали появляться в большом количестве, я думаю, около 30 лет назад. Примерно в то же время появились настраиваемые системы или фреймворки, нацеленные на «автоматизацию предприятия» от таких поставщиков, как IBM, Microsoft и SAP. Я думаю, что эти системы предвосхитили сегодняшние тенденции, но в основном потерпели неудачу, потому что были слишком самодостаточными (как предыдущие системы), сложными и медленными.

15 лет назад у нас появились первые примитивы облачных вычислений (Amazon S3) и серверные системы, предназначенные для эффективного выполнения одной задачи (например, вычисление сокращения карты, Apache Hadoop). Сегодня эти инструменты настолько распространились и достигли зрелости, что я бы сказал, что хороший бэкэнд и работа по инжинирингу данных должна быть больше системной и надежной инженерией, чем программированием.

Около 10 лет назад возникла новая тенденция, когда программные системы абстрагируются от больших сложных задач, таких как балансировка нагрузки и доставка контента (Cloudflare), платежи (Stripe), управление мобильной сетью (Twilio), разработка веб-сайтов (Netlify), инженерия данных (Fivetran). ), мониторинг инфраструктуры и устройств (Datadog) и т. д. Прочтите статью Стивена О'Грейди Дополнение по абстракции, чтобы получить более подробную информацию.

В этих продуктах учтены ошибки более ранних систем автоматизации предприятия от IBM и SAP. Эти новые «вертикальные» системы интегрируются с максимально возможным количеством внешних систем и API, поддерживают все популярные языки программирования, предоставляют хорошие API и стремятся казаться как можно более простыми для пользователей (программистов) и абстрагироваться от самых сложных.

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

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

Программная инженерия переходит от стадии ремесла к стадии серийного производства. Это нормально. Но мне это кажется отрицанием того, что инженеры-программисты каким-то образом будут пользоваться большим спросом, чем сегодня, когда отрасль завершит переход. Я не совсем верю аргументу, что повышение эффективности программиста будет уравновешено потребностью в гораздо более сложном программном обеспечении. Более высокий процент населения мира составляли фабричные рабочие в первой половине 20-го века, чем сегодня, тем не менее, сегодня мы производим гораздо больше фабричных товаров (на душу населения), чем раньше, за счет автоматизации, компоновки и всемирного влияния. Чем в этом отношении индустрия программирования принципиально отличается от производства?

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

Что нам, программистам, следует делать в ответ на это?

Я пока особо не задумывался об этом, но вот несколько стратегий, которые приходят мне в голову (в порядке их расположения, обеспечивающие краткосрочное или долгосрочное «облегчение»):

Программируйте вещи, которые сложнее заменить инструментами без кода и искусственным интеллектом

Я в первую очередь думаю о встроенном, низкоуровневом, системном программировании и DevOps (которые выполняют работу по интеграции). Большинство других областей, от серверной части до внешнего интерфейса, мобильного программирования и программирования игр, выглядят более уязвимыми для автоматизации.

Используйте машинное обучение и искусственный интеллект в своей работе над программированием

Это может варьироваться от того, чтобы стать больше инженером машинного обучения или специалистом по данным, чем «простым» программистом, до раннего внедрения инструментов генерации кода на основе DeepCode или GPT-3.

Удвойте внимание на системное проектирование, проектирование надежности и бизнес-анализ

Я думаю, что пройдет гораздо больше времени (по крайней мере, 10–20 лет), пока ИИ превзойдет людей в системном анализе. Йоша Бах отказался от идеи (в этом интервью), что в настоящее время ИИ работает на когнитивном уровне решения задач, определенных людьми. Переход на уровень определения задач (т. Е. Того, что делают системные инженеры и бизнес-аналитики) - это для них качественный скачок. (И еще более высокий уровень - это приоритетность задач, то есть этика.)

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

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

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

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

К сожалению, это все пути усиления интеллектуальной конкуренции. Кроме того, они предоставляют лишь временное решение: я бы ограничился примерно 30 годами. Кроме того, я думаю, что практически все программирование, независимо от уровня, сложности и новизны задачи, будет выполняться ИИ.

Перейти в менеджмент или в бизнес

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

Сдаться ИИ и перейти к ремеслу или межличностной работе

Я думаю, что поражение чемпиона го по ИИ и GPT-3 означало, что мы в конечном итоге проиграем битву с ИИ во всех интеллектуальных и творческих областях без исключения. Я не верю в романтическое представление о безграничных возможностях человеческого мозга. Компьютеры будут править людьми.

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

Фермерство - популярный побег для бывших инженеров-программистов в Америке. Это также может быть здравоохранение, уход за ребенком, уход за пожилыми людьми, кулинария и т. Д. Это может быть ремесленное программирование (например, инди-игры), письмо или искусство.

Заключение

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

Спасибо за прочтение!

Подпишитесь на новые инженерные идеи в подстеке.

Ресурсы и дальнейшее чтение / просмотр

Горький урок »Рича Саттона

21 урок для 21 века Юваль Ноа Харари

GPT-3: AI Deepfaking Understanding? - интервью с Йошей Бахом