Американский издатель, основатель издательства O’Reilly.
В СМИ много говорят о том, что разработчики ПО скоро потеряют работу из-за ИИ. Я в это не верю.
Это не конец программирования. Это конец программирования в том виде, в котором мы его знаем сегодня. Первые программисты соединяли физические цепи для выполнения каждого вычисления. Их сменили программисты, писавшие машинные инструкции в виде двоичного кода, который вводился по одному биту за раз с помощью переключателей на передней панели компьютера. Затем программирование на языке ассемблера положило этому конец. Оно позволяло программисту использовать язык, похожий на человеческий, чтобы указать компьютеру перемещать данные в определенные области памяти и выполнять над ними вычисления. Затем развитие еще более высокоуровневых компилируемых языков, таких как Fortran, COBOL и их последователей C, C++ и Java, привело к тому, что большинство программистов больше не писали ассемблерный код. Вместо этого они могли выражать свои пожелания компьютеру, используя абстракции более высокого уровня.
В конце концов, нормой стали интерпретируемые языки, которые гораздо проще отлаживать.
BASIC, один из первых, кто добился большого успеха, сначала воспринимался как игрушка, но вскоре оказалось, что он стал новой волной. Программирование стало доступно детям и предпринимателям в гаражах, а не только сотрудникам бэк-офисов крупных компаний и государственных учреждений.
Потребительские операционные системы также сыграли большую роль в истории. На заре персональных компьютеров каждому производителю компьютеров требовались инженеры-программисты, которые могли бы писать низкоуровневые драйверы, выполняющие работу по чтению и записи на схемы памяти, жесткие диски и периферийные устройства, такие как модемы и принтеры. Windows положила этому конец. Она стала успешной не только потому, что предоставляла графический пользовательский интерфейс, который значительно упростил использование компьютеров для неподготовленных людей, но также то, что Марк Андрессен, чью компанию Netscape собиралась раздавить Microsoft, пренебрежительно (и ошибочно) назвал «просто мешок драйверов». Этот мешок драйверов, скрытый за API Win32, означал, что программистам больше не нужно было писать низкоуровневый код для управления машиной. Эта задача была эффективно реализована в операционной системе. Из-за Windows и macOS, а также iOS и Android (для мобильных устройств) сегодня большинству программистов больше не нужно знать многое из того, что знали предыдущие поколения программистов.
Это был еще далеко не конец программирования. Программистов было больше, чем когда-либо. Сотни миллионов пользователей потребляли плоды их творчества. Классический пример эластичности спроса: поскольку создавать программное обеспечение становилось проще, его цена падала, что позволяло разработчикам создавать решения, за которые больше людей были готовы платить.
Интернет стал еще одним «концом программирования». Внезапно пользовательский интерфейс стал состоять из понятных человеку документов, отображаемых в браузере со ссылками, которые, в свою очередь, могли вызывать программы на удаленных серверах. Любой мог создать простое «приложение» с минимальными навыками программирования. «No code» стало модным словечком. Вскоре всем понадобился веб-сайт. Такие инструменты, как WordPress, позволили непрограммистам создавать веб-сайты без программирования. Однако по мере того, как возможности технологий росли, успешные веб-сайты становились все более и более сложными. Наблюдалось все большее разделение между «фронтенд» и «бэкенд» программированием. Новые интерпретируемые языки программирования, такие как Python и JavaScript, стали доминирующими. Мобильные устройства добавили новый, вездесущий фронтенд, требующий новых навыков. И снова сложность была скрыта за фреймворками, библиотеками функций и API, которые изолировали программистов от необходимости знать столько о низкоуровневой функциональности, сколько им было необходимо знать всего несколько лет назад.
Большие данные, веб-сервисы и облачные вычисления создали своего рода «операционную систему Интернета». Такие сервисы, как Apple Pay, Google Pay и Stripe, сделали возможным выполнение ранее сложных, высокорисковых корпоративных задач, таких как прием платежей, с минимальными знаниями в области программирования. Все виды глубоких и мощных функций стали доступны через простые API. Однако этот взрыв интернет-сайтов и сетевых протоколов и API, соединяющих их, в конечном итоге создал потребность в большем количестве программистов.
Программисты больше не создавали статические программные артефакты, обновляемые каждые пару лет, а непрерывно разрабатывали, интегрировали и поддерживали долгоживущие сервисы. Что еще важнее, большая часть работы в этих огромных сервисах, таких как Google Search, Google Maps, Gmail, Amazon, Facebook и Twitter, была автоматизирована в огромных масштабах. Программы были разработаны и созданы людьми, а не ИИ, но большая часть самой работы была сделана специализированными предшественниками сегодняшних ИИ общего назначения. Работники, которые выполняют большую часть тяжелой работы в этих компаниях, уже являются программами. Программисты-люди — их менеджеры. Сейчас сотни тысяч программистов выполняют такую надзорную работу. Они уже живут в мире, где работа заключается в создании и управлении цифровыми коллегами.
В каждой из этих волн старые навыки становились устаревшими. Все еще полезными, но уже не необходимыми, и новые становились ключом к успеху. Есть еще несколько программистов, которые пишут компиляторы, тысячи, которые пишут популярные фреймворки JavaScript и библиотеки Python, но десятки миллионов, которые пишут веб- и мобильные приложения и бэкэнд для них. Миллиарды пользователей потребляют то, что они производят.
Внезапно оказалось, что непрограммист может просто поговорить с LLM или специализированным программным агентом на простом английском языке (или на человеческом языке по вашему выбору) и получить в ответ полезный прототип на Python (или на языке программирования по вашему выбору). Для этого даже появилось новое модное словечко: CHOP, или «чат-ориентированное программирование». Рост продвинутых моделей начинает демонстрировать ИИ, способный генерировать даже сложные программы с высоким уровнем подсказок, объясняющих задачу, которую нужно выполнить. В результате многие говорят: «На этот раз все по-другому», что ИИ полностью заменит большинство программистов-людей и, по сути, большинство работников умственного труда. Они говорят, что мы сталкиваемся с волной всепроникающей безработицы среди людей.
Я все еще не верю в это. Когда происходит прорыв, который дает передовые вычислительные мощности в руки гораздо большей группы людей, да, обычные люди могут делать то, что когда-то было прерогативой высококвалифицированных специалистов. Но тот же самый прорыв также открывает новые виды услуг и спроса на эти услуги. Он создает новые источники глубокой магии, которую понимают лишь немногие.
Магия, которая наступает сейчас, самая мощная из всех. И это значит, что мы начинаем глубокий период исследований и творчества, пытаясь понять, как заставить эту магию работать и извлечь новые преимущества из ее силы. Умные разработчики, которые примут эту технологию, будут востребованы, потому что они могут сделать гораздо больше, сосредоточившись на более высоком уровне креативности, которая добавляет ценность.
ИИ не заменит программистов, но он преобразит их работу. В конечном итоге многое из того, что делают программисты сегодня, может оказаться таким же устаревшим (для всех, кроме программистов встроенных систем), как и старый навык отладки с помощью осциллографа. Программист и провидец в области технологий Стив Йегге замечает, что будут заменены не программисты младшего и среднего звена, а те, кто цепляется за прошлое и не принимает новые инструменты и парадигмы программирования. Те, кто приобретают или изобретают новые навыки, будут пользоваться большим спросом. Младшие разработчики, которые владеют инструментами ИИ, смогут превзойти старших программистов, которые этого не делают. Йегге называет это «Смертью упрямого разработчика».
Мои идеи сформированы не только моим собственным 40-летним опытом работы в компьютерной индустрии и наблюдениями разработчиков, таких как Йегге, но и работой историка экономики Джеймса Бессена, который изучал, как первая промышленная революция разыгралась на текстильных фабриках Лоуэлла, Массачусетс, в начале 1800-х годов. Поскольку квалифицированных ремесленников заменили машины, управляемые «неквалифицированным» трудом, заработная плата людей действительно снизилась. Но Бессен заметил нечто странное, сравнив показатели заработной платы рабочих на новых промышленных фабриках с показателями бывших надомных ремесленников. Подмастерью ремесленника требовалось примерно столько же времени, чтобы достичь полной заработной платы квалифицированного подмастерья, сколько требовалось новому неквалифицированному фабричному рабочему начального уровня, чтобы достичь полной заработной платы и производительности. Рабочие в обоих режимах были фактически квалифицированными рабочими. Но у них были разные виды навыков.
Бессен обнаружил, что существуют две основные причины, по которым заработная плата оставалась на прежнем уровне или была низкой большую часть первых 50 лет промышленной революции прежде чем она взлетела и привела к повсеместному росту благосостояния. Первая заключалась в том, что владельцы фабрик копили выгоды от новой производительности, а не делились ими с рабочими. Но вторая проблема заключалась в том, что для достижения наибольшего прироста производительности потребовались десятилетия, поскольку знания о том, как лучше всего использовать новую технологию, еще не были широко распространены. Изобретателям потребовались десятилетия, чтобы сделать машины более надежными, тем, кто их использует, чтобы придумать новые виды рабочих процессов, чтобы сделать их более эффективными, чтобы создать новые виды продуктов, которые можно было бы производить с их помощью, чтобы более широкий круг предприятий принял новые технологии, а рабочим — чтобы приобрести необходимые навыки, чтобы воспользоваться ими. Рабочим нужны были новые навыки не только для использования машин, но и для их ремонта, улучшения, изобретения будущего, которое они подразумевали, но еще не сделали полностью возможным. Все это происходит посредством процесса, который Бессен называет «обучением на практике».
Недостаточно, чтобы несколько человек были впереди всех в освоении новых навыков. Бессен объясняет, что «для завода, отрасли и общества в целом важно не то, сколько времени требуется для обучения отдельного работника, а то, сколько времени требуется для создания стабильной, обученной рабочей силы» (Learning by Doing, 36). Сегодня каждая компания, которая будет затронута этой революцией (то есть каждая компания), должна подставить плечо. Нам нужна рабочая сила, владеющая ИИ. Что такое программирование, в конце концов, как не способ, которым люди заставляют компьютеры выполнять наши приказы? Тот факт, что «программирование» становится все ближе и ближе к человеческому языку, что наши машины могут понимать нас, а не нам приходится говорить с ними на их родном языке нулей и единиц или на каком-то специализированном языке программирования, должен быть поводом для празднования.
Люди будут создавать, использовать и совершенствовать больше программ, и появятся новые отрасли, чтобы управлять и развивать то, что мы создаем. Уроки истории говорят нам, что когда автоматизация делает дешевле и проще поставку продуктов, которые хотят или в которых нуждаются люди, рост спроса часто приводит к росту занятости. Только когда спрос удовлетворяется, занятость начинает падать. Мы далеки от этой точки, когда дело касается программирования.
Парадокс Джевонса снова наносит удар! По мере того, как ИИ становится все более эффективным и доступным, мы увидим, как его использование резко возрастет, превращая его в товар, которым мы просто не сможем насытиться. https://t.co/omEcOPhdIz
— Сатья Наделла (@satyanadella) 27 Января, 2025
Неудивительно, что профессор Уортонской школы бизнеса и евангелист ИИ Итан Моллик также является поклонником работы Бессена. Вот почему он так убедительно доказывает, что нужно «всегда привлекать ИИ», вовлекать его в каждый аспект вашей работы и исследовать «острые края» того, что работает, а что нет. Вот почему он также призывает компании использовать ИИ для расширения прав и возможностей своих работников, а не для их замены. Нужно так много узнать о том, как применять новые технологии. Лучшим исследованием для бизнеса является исследование ваших сотрудников, пользующихся ИИ для решения своих проблем и поиска новых возможностей.
Сэм Шиллес, один из заместителей технического директора Microsoft, согласился с моим анализом. В недавнем разговоре он сказал мне: «Мы находимся в процессе изобретения новой парадигмы программирования вокруг систем ИИ. Когда мы перешли от настольных компьютеров к эпохе Интернета, все в стеке изменилось, хотя все уровни стека остались прежними. У нас по-прежнему есть языки, но они перешли от компилируемых к интерпретируемым. У нас по-прежнему есть команды, но они перешли от каскадной к Agile, к CI/CD. У нас по-прежнему есть базы данных, но они перешли от ACID к NoSQL. Мы перешли от одного пользователя, одного приложения, одного потока ко всему распределенному. Мы делаем то же самое с ИИ прямо сейчас».
Вот некоторые из технологий, которые собираются в новый стек ИИ. И это даже не включает в себя множество моделей ИИ, их API и их облачную инфраструктуру. И это уже устарело!
Взрыв новых инструментов, фреймворков и практик — это только начало того, как меняется программирование. Одна из проблем, отметил Шиллес, заключается в том, что у моделей нет памяти, как у людей. Даже с большими контекстными окнами им трудно делать то, что он называет «метапознанием». В результате он видит необходимость в том, чтобы люди по-прежнему предоставляли большую часть контекста, в котором работают их соразработчики ИИ.
Шиллес развил эту идею в недавнем посте. «Большие языковые модели (LLM) и другие системы ИИ пытаются автоматизировать мышление», — написал он. «Параллели с автоматизацией движения во время промышленной революции поразительны. Сегодня автоматизация все еще груба: мы выполняем когнитивный эквивалент перекачивания воды и ударов молотком — базовые задачи, такие как создание краткой версии, распознавание образов и генерация текста. Мы еще не придумали, как построить надежные двигатели для этого нового источника энергии — мы еще даже не на локомотивной стадии ИИ».
Даже стадия локомотива была в значительной степени расширением грубой силы, которую люди могли использовать для перемещения физических объектов. Существенным следующим прорывом было увеличение средств контроля над этой силой. Шиллес спрашивает: «А что, если традиционная разработка программного обеспечения здесь не совсем уместна? А что, если создание ИИ требует принципиально иных практик и систем управления? Мы пытаемся создать новые виды мышления (наш аналог движения): высокоуровневые, метакогнитивные, адаптивные системы, которые могут делать больше, чем просто повторять заранее разработанные шаблоны. Чтобы использовать их эффективно, нам нужно будет изобрести совершенно новые способы работы, новые дисциплины. Так же, как проблемы ранней паровой энергетики породили металлургию, проблемы ИИ приведут к появлению новых наук о познании, надежности и масштабируемости — областей, которые еще не полностью существуют».
Брет Тейлор, бывший содиректор Salesforce, бывший главный технический директор Meta и в прошлом руководитель команды, создавшей Google Maps, теперь является генеральным директором компании-разработчика ИИ-агентов Sierra, которая находится в центре разработки и внедрения технологий ИИ в бизнесе. В недавнем разговоре Брет сказал мне, что, по его мнению, ИИ-агент компании станет ее основным цифровым интерфейсом, таким же значимым, как ее веб-сайт, таким же значимым, как ее мобильное приложение, возможно, даже более. ИИ-агент компании должен будет кодировать все её ключевые бизнес-политики и процессы. Это то, что ИИ в конечном итоге сможет делать сам, но сегодня Sierra приходится назначать каждому из своих клиентов инженерную команду, которая помогает с внедрением.
«Эта последняя миля, когда вы берете крутую платформу и кучу своих бизнес-процессов и создаёте агента, на самом деле довольно сложна», — объяснил Брет. «Сейчас появляется новая роль, которую мы называем агент-инженером, разработчиком программного обеспечения, который немного похож на разработчика веб-интерфейса. Это архетип, который наиболее распространен в программном обеспечении. Если вы разработчик React, вы можете научиться создавать агентов ИИ. Какой замечательный способ переквалифицироваться и сделать свои навыки актуальными».
Кто захочет продираться через дерево телефонов службы поддержки клиентов, когда они могли бы поговорить с агентом ИИ, который действительно может решить их проблему? Но сделать этих агентов правильными будет настоящим вызовом. Сложно не программирование, сложно глубоко понимать бизнес-процессы и думать о том, как новые возможности могут их преобразовать, чтобы воспользоваться преимуществами новых возможностей. Агент, который просто воспроизводит существующие бизнес-процессы, будет таким же неловким, как веб-страница или мобильное приложение, которые просто воссоздают бумажную форму. (И да, такие все еще существуют!)
Эдди Османи, руководитель отдела пользовательского опыта Google Chrome, называет это проблемой 70%: «В то время как инженеры сообщают о значительном повышении производительности с ИИ, фактическое программное обеспечение, которое мы используем ежедневно, не кажется, становится заметно лучше». Он отмечает, что непрограммисты, работающие с инструментами генерации кода ИИ, могут выпустить отличное демо или решить простую проблему, но они застревают на последних 30% сложной программы, потому что они недостаточно знают, чтобы отладить код и направить ИИ к правильному решению. Между тем:
Когда вы смотрите, как старший инженер работает с инструментами ИИ, такими как Cursor или Copilot, это похоже на магию. Они могут создавать целые функции за считанные минуты, с тестами и документацией. Но смотрите внимательно, и вы заметите нечто важное: они не просто принимают то, что предлагает ИИ... Они применяют годы с трудом завоеванной инженерной мудрости, чтобы сформировать и ограничить вывод ИИ. ИИ ускоряет их реализацию, но их опыт — это то, что делает код поддерживаемым. Младшие инженеры часто пропускают эти важные шаги. Они принимают вывод ИИ более охотно, что приводит к тому, что я называю «карточным домиком из кода» — он выглядит завершенным, но рушится под давлением реального мира.
В этой связи Чип Хуен, автор новой книги «AI Engineering», сделал в электронном письме мне следующее проницательное наблюдение:
Я не думаю, что ИИ вводит новый тип мышления. Он показывает, что на самом деле требует мышления.
Неважно, насколько это ручная работа, если ее может выполнить только горстка наиболее образованных людей, она считается интеллектуальной. Одним из примеров является письмо, физический акт копирования слов на бумагу. В прошлом, когда грамотной была лишь небольшая часть населения, письмо считалось интеллектуальным. Люди даже гордились своей каллиграфией. В наши дни слово «письмо» больше не относится к этому физическому акту, а к более высокой абстракции упорядочивания идей в читаемом формате.
Аналогичным образом, как только физический процесс кодирования станет автоматизированным, значение слова «программирование» изменится и будет означать процесс организации идей в исполняемые программы.
Мехран Сахами, глава кафедры вычислительной техники Стэнфордского университета, выразился просто: «Компьютерная наука — это систематическое мышление, а не написание кода».
…точность в правильной формулировке проблемы становится еще важнее. Агент как корпоративный фронтенд, который обеспечивает доступ ко всем бизнес-процессам компании, будет общаться не только с потребителями, но и с агентами этих потребителей и агентами других компаний.
Вся эта сторона уравнения агента гораздо более спекулятивна. Мы еще не начали разрабатывать стандарты для сотрудничества между независимыми агентами ИИ! В недавней статье о необходимости инфраструктуры агента отмечается:
Текущие инструменты в значительной степени недостаточны, поскольку они не предназначены для формирования того, как агенты взаимодействуют с существующими институтами (например, правовыми и экономическими системами) или субъектами (например, поставщиками цифровых услуг, людьми, другими агентами ИИ). Например, методы согласования по своей природе не гарантируют контрагентам, что какой-то человек будет привлечен к ответственности, когда пользователь поручает агенту выполнить незаконное действие. Чтобы заполнить этот пробел, мы предлагаем концепцию инфраструктуры агентов: технические системы и общие протоколы, внешние по отношению к агентам, которые предназначены для посредничества и влияния на их взаимодействия с их окружением и воздействия на него. Инфраструктура агентов включает в себя как новые инструменты, так и перенастройки или расширения существующих инструментов. Например, для облегчения подотчетности протоколы, связывающие пользователей с агентами, могут основываться на существующих системах аутентификации пользователей, таких как OpenID. Так же, как Интернет полагается на инфраструктуру, такую как HTTPS, мы утверждаем, что инфраструктура агентов будет столь же незаменима для экосистем агентов. Мы выделяем три функции для инфраструктуры агентов: 1) присвоение действий, свойств и другой информации конкретным агентам, их пользователям или другим субъектам; 2) формирование взаимодействий агентов; и 3) обнаружение и устранение вредоносных действий агентов.
Здесь нужно решить огромные проблемы координации и проектирования. Даже самые лучшие ИИ-агенты, которых мы можем себе представить, не решат такие сложные проблемы координации без человеческого руководства. Здесь нужно столько программирования, что даже программисты с поддержкой ИИ будут заняты по крайней мере следующее десятилетие.
Короче говоря, есть целый мир нового программного обеспечения, которое нужно изобрести, и оно будет изобретено не только ИИ, но и людьми-программистами, использующими ИИ как суперсилу. И этим программистам нужно приобрести много новых навыков.
Так много нового нужно узнать и сделать. Так что да, давайте наберемся смелости и предположим, что соразработчики ИИ делают программистов в десять раз продуктивнее. (Ваш показатель может отличаться в зависимости от того, насколько ваши разработчики стремятся освоить новые навыки.) Но давайте также предположим, что как только это произойдет, «программируемая поверхность» бизнеса, науки, нашей построенной инфраструктуры будет расти параллельно. Если будет в 20 раз больше возможностей для программирования, чтобы что-то изменить, нам все равно понадобится вдвое больше этих новых 10-кратных программистов!
Ожидания пользователей также возрастут. Компании, которые просто используют большую производительность для сокращения расходов, проиграют компаниям, которые инвестируют в освоение новых возможностей для создания лучших услуг.
Саймон Уиллисон, опытный разработчик программного обеспечения, который был в авангарде того, чтобы показать миру, как программирование может быть проще и лучше в эпоху ИИ, отмечает, что ИИ позволяет ему «быть более амбициозным» в своих проектах.
Возьмите урок из другой области, где возможности резко ворзасли: рендеринг одного кадра одного из сегодняшних фильмов о супергероях Marvel может занять столько же времени, сколько и рендеринг всего первого фильма Pixar, хотя цена и производительность CPU/GPU выиграли от закона Мура. Оказывается, киноиндустрия не довольствовалась тем, чтобы быстрее и дешевле поставлять грубую анимацию с низким разрешением. Дополнительные циклы пошли на тысячи крошечных улучшений в реалистичности меха, воды, облаков, отражений и многих-многих других пикселей разрешения. Технологическое улучшение привело к повышению качества, а не просто к более дешевой/быстрой доставке. Есть некоторые отрасли, которые стали возможны благодаря выбору более дешевого/быстрого вместо более высоких производственных значений (вспомним взрывной рост количества созданного пользователями видео в Интернете), поэтому не будет выбора или-или. Качество будет иметь свое место на рынке. Так происходит всегда.
Представьте себе десятки миллионов программистов-любителей, работающих с помощью ИИ, которые работают с такими инструментами, как Replit и Devin, или корпоративными решениями, такими как те, что предоставляются Salesforce, Palantir или Sierra. Какова вероятность того, что они наткнутся на варианты использования, которые понравятся миллионам? Некоторые из них станут предпринимателями этого следующего поколения программного обеспечения, созданного в партнерстве с ИИ. Но многие из их идей будут приняты, улучшены и масштабированы существующими профессиональными разработчиками.
В предпринимательстве ИИ значительно повысит возможности создания решений теми, кто ближе всего к любой проблеме. Но лучшим из этих решений все равно придется пройти оставшуюся часть пути, который Шьям Санкар, технический директор Palantir, назвал «путешествием от прототипа к производству». Санкар отметил, что ценность ИИ для предприятия заключается «в автоматизации, в автономности предприятия». Но, как он также отметил, «автоматизация ограничена крайними случаями». Он вспомнил уроки Stanley, беспилотного автомобиля, который выиграл DARPA Grand Challenge в 2005 году: он способен делать что-то выдающееся, но требует еще 20 лет разработки, чтобы полностью справиться с крайними случаями вождения в городе.
«Рабочий процесс по-прежнему важен», — утверждает Санкар, и работа программиста будет заключаться в том, чтобы понять, что может быть сделано традиционным программным обеспечением, что может быть сделано ИИ, что все еще должно быть сделано людьми, и как связать все вещи вместе, чтобы фактически выполнить рабочий процесс. Он отмечает, что «цепочка инструментов, которая позволяет вам получать обратную связь и изучать пограничные случаи, чтобы достичь цели как можно быстрее, является выигрышной цепочкой инструментов». В мире, который представляет себе Санкар, ИИ «фактически освободит разработчиков, чтобы они могли гораздо больше вникать в бизнес и быть гораздо более вовлеченными в оказываемое ими влияние». Между тем, ведущие специалисты в предметной области станут программистами с помощью помощников ИИ. Это не программисты останутся без работы. Это будут люди, на каждой должности, которые не станут программистами с помощью ИИ.
Это не конец программирования. Это начало его следующего переосмысления.