Привет, Хабр! Поговорим о роли ИИ в жизни разработчика — мы в блоге beeline cloud часто обсуждаем темы, которые волнуют ИТ-сообщество.
Увольнения, увольнения, увольнения, кажется, они никогда не закончатся. На сайте layoffs.fyi есть даже трекер увольнений в технологической сфере. Финансирование стартапов опускается на минимальный за последние 5 лет уровень, пишет Crunchbase. Помимо общих экономических проблем, на горизонте маячит страх, что ИИ и вовсе вытеснит программистов.
Техноновости напоминают репортажи о конце света. Так ли это?
Как человек, который начал свою карьеру программиста сразу после того, как лопнул пузырь доткомов, я могу с уверенностью утверждать, что все не так уж плохо. Когда я только начинал свою профессиональную деятельность, люди говорили мне, что «Интернет мертв» и мне стоит поискать настоящую работу. А проблемы, с которыми боролись доткомовские стартапы, никуда не делись. Причём многие из найденных в начале 2000-х решений были зарыты в землю, лишь для того, чтобы вновь объявиться несколько лет спустя.
![](https://habrastorage.org/getpro/habr/upload_files/9f9/a24/14c/9f9a2414cf4745f3bc8e1f8f12e04553.png)
Это еще не конец, равно как и в 2000 году
Когда я начинал работать младшим программистом в 2001 году, «пузырь доткомов» нанес ощутимый удар по технологической сфере. Из-за него Google пришлось запустить рекламную платформу, чтобы выйти на прибыль. Технокомпании, которым повезло остаться на плаву, старались как можно быстрее начать зарабатывать. Однако многие из них так и не смогли уцелеть. Индустрия технологий и программного обеспечения постепенно восстанавливалась, совершенствовалась и активно развивалась на протяжении последующих лет.
Сказка судного дня «Интернет умер» в итоге оказалась несостоятельной. Интернет, технологии и программное обеспечение развивались быстрее, чем когда-либо прежде. Это не было концом тогда и не является концом сегодня. Глубоко вдохните и оглянитесь вокруг. Мы по-прежнему летаем на дозвуковых самолетах, до сих пор не существует летающих машин, и я даже не могу заказать себе ховерборд. 3D без очков — это полная ерунда, у нас до сих пор нет технологий видеозвонка, показанных в «Звездных войнах» в 1980-е годы.
![](https://habrastorage.org/getpro/habr/upload_files/478/997/d2c/478997d2c4d3fe802fbdd7f6ae67571e.png)
Ваша машина не может даже самостоятельно припарковаться, не говоря уже о том, чтобы ездить по городу без присмотра. Да, существуют самоуправляемые автомобили с нелепо огромным количеством всяких датчиков, как у Waymo от Google. Но... просто поместите дорожный конус на капот самодвижущегося автомобиля, чтобы ощутить всю мощь нынешнего ИИ.
ИИ в ближайшее время не сможет заменить ни одного разработчика
«Новые средства разработки и увеличение вычислительных мощностей означает, что нам понадобится меньше программистов» — таково было кредо начала 2000-х годов. На самом деле все обстояло с точностью до наоборот. Несмотря на то что отдельные программные проекты обходились меньшим количеством разработчиков, общее стремление к технологиям означало, что проектов становится всё больше, а следовательно, нужно привлекать новых и новых разработчиков. ИИ и облачные технологии радикально повышают производительность труда разработчиков. Однако они порождают новые проблемы и возможности, для решения которых нужно еще больше разработчиков.
Если вы хотя бы раз использовали Github Copilot, ChatGPT, Google Gemini или Chevrolet Chat для создания кода, то наверняка заметили, что обучение и область применения этих моделей существенно ограничены.
Обучение LLM и «дилемма ИИ»
Если попросить любой LLM написать на Swift код для in-app purchase на iOS, то, скорее всего, на выходе получится реализация StoreKit1, состоящая примерно из 50-60 строк. Однако StoreKit2, анонсированный 2 года назад, значительно упрощает процесс in-app purchase и сокращает код всего до нескольких строчек. При обучении LLM, таких как ChatGPT или Copilot, либо используются устаревшие данные, либо в выборке преобладает реализации StoreKit1, что заставляет LLM всегда использовать именно его, так как нейросеть «считает» его самым подходящим.
Дело в том, как именно устроены LLM. Это языковые модели, они не «понимают» и не «постигают» истинный смысл слов. Они используют имеющуюся информацию, чтобы создать вариацию на заданную тему. Эта вариация действительно выглядит как нечто новое, так как раньше информация в таком виде не существовала. Однако результат, как ни крути, все равно опирается на готовые учебные данные. Это приводит к дилемме ИИ, когда инновациям становится очень трудно пробиться в мир, так как модель склонна использовать наиболее применимый и, следовательно, наиболее популярный вариант ответа.
«Создай фотографию программиста в 2050 году, который пишет приложения для компьютера» — Что, что? Экраны компьютеров снова уменьшатся, и мы снова начнем носить галстуки в процессе работы с кодом? ;)
В социальных науках и информатике этот эффект известен как эффект Матфея или «богатые богатеют». Чем больше информации производит LLM, тем чаще эта информация становится основой для обучения модели после ее применения человеком. В какой-то момент LLM перестанет привносить что-то новое и начнет ходить по кругу и использовать только старую информацию, если люди перестанут подпитывать ее своим творчеством. В конце концов это заведет нас в тупик.
Есть способы решить эти проблемы в малых масштабах и в более простых реализациях, вроде рекомендательных движков. Однако если говорить о более глобальных задачах, где широко применяются LLM, то вряд ли можно найти научно обоснованное алгоритмическое решение этой дилеммы.
Единственное жизнеспособное решение на данный момент? Вмешательство человека.
Есть вещи, которые LLM могут никогда не узнать
LLM нужно обучать. Для этого им необходимо получить от людей большое количество данных. Причем данные им нужны в цифровом виде. Сейчас я приведу очень простой и понятный пример.
Человек: Сколько рейхсмарок стоила первая поездка в первом классе из Кельна в Барселону в 1931 году?
Copilot: К сожалению, у меня нет точных данных о стоимости проезда для этого конкретного маршрута в 1931 году.
ChatGPT: Сложно предоставить точную информацию о стоимости поездки на поезде первого класса из Кёльна в Барселону в 1931 году, так как исторические цены на билеты могут варьироваться и не всегда хорошо документированы.
Ответ, кстати, есть — 160 рейхсмарок (110 во втором классе и 70 в третьем). Откуда я знаю? Я могу прочитать исторические документы, которые никогда не сканировались и не доступны в цифровом виде.
Та же фундаментальная проблема касается и программирования. Когда я писал свою статью «Vintage Programming On Macintosh System 7.5 With Think C & ResEdit», я перепробовал несколько LLM. Ни одна из них не смогла создать даже простенькую кнопку, показывающую диалог с сообщением при нажатии. Они потерпели полный провал и выдавали либо тарабарщину, либо код, даже отдаленно не связанный с системой Macintosh. И все это лишь единичные примеры, ведь список ограничений LLM практически бесконечен.
Отдать на откуп LLM портирование приложения под Macintosh 90-х годов на современную macOS? Что ж, удачи.
Это не столько архивная информация, сколько очень специфическое поле знаний, на работу в котором придется натаскать модель. А точность — это далеко не конек нейросетей. Алгоритмы этого не предусматривают. В СМИ полно примеров, когда LLM, уже находящиеся в эксплуатации, отходят от предоставленных исходных данных и плодят ошибки, которые приводят к реальным проблемам.
Невозможно скопировать органический объект, который до конца не изучен
Спросите любого нейробиолога, что именно происходит в человеческом мозге, когда человек влюбляется. Ответ будет таким: а мы и сами точно не знаем. И это совершенно нормально. Наука еще не «отдебажила» человеческий мозг. Его невозможно воспроизвести. Даже лечить его толком не получается, за исключением некоторых операций, которые люди будущего наверняка сочтут варварством и средневековьем.
Наука понятия не имеет, как работает эта штука с мыслями.
Как создать искусственный интеллект общего назначения, если ты понятия не имеешь, как устроен органический мозг? Никак. Чтобы что-то воспроизвести, нужно полностью понять его функциональность во всех деталях. Человечество очень, очень далеко от понимания того, как именно функционирует человеческий мозг. И еще дальше мы находимся от понимания, как мозг учится и хранит информацию. Все, что мы можем сделать, — это «эмулировать» разум примитивными средствами.
Не поймите меня неправильно: Я люблю LLM и считаю, что мы добились больших успехов в области ИИ. Синтезированные голоса стали очень хороши, и их крайне сложно отличить от натуральных человеческих. Генерация изображений и видео — это фантастика. Однако я думаю, что мы еще очень далеки от того, чтобы увидеть полноценный голливудский блокбастер, полностью снятый компьютером без вмешательства человека.
Программы и технологии превзошли людей
Стремительный прогресс в технологиях, в программном обеспечении, в облачных вычислениях, в искусственном интеллекте позволяет людям найти множество новых решений для известных (и даже неизведанных) задач. На первый взгляд, некоторые наши трудности лежат в области технологий, например, самоуправляемые автомобили. Но на деле всё обстоит сложней.
Мой опыт вождения автономного автомобиля BMW показывает, что большинство проблем возникает из-за того, что люди создают беспорядок на дороге, например, рисуют невнятную разметку, с которой даже опытный водитель не справится. Противоречивые дорожные знаки — еще одна занятная проблема. И все это в Германии, стране, известной своей точностью и правовой щепетильностью. Тем, что в ней принято следовать очень конкретным и точным правилам. Казалось бы, идеальная среда для автономного автомобиля. Отнюдь.
Если даже люди не могут разобрать дорожную ситуацию, то как это сделает компьютер?
Именно хаос, свойственный человеку, мешает технологическому прогрессу.
Большинство людей не знают, какие чипы стоят в их телефонах и для чего они нужны. Не говоря уже о том, как это все работает.
Люди не понимают, почему их кредитная карта действует за границей. Они не понимают, как их мобильный телефон передает данные, аутентифицируется с VLR и HLR. Технологии буквально каждую секунду диктуют нам правила повседневной жизни, а большинство людей, использующих их, даже не догадываются, как это работает на самом базовом уровне. Они знают, как пользоваться технологиями, но не имеют фундаментальных знаний. Количество технологий, которыми люди пользуются каждый день, но о которых при этом не имеют ни малейшего понятия, просто умопомрачительно.
Общество, в котором технологии развиваются быстрее людей и намного опережают их, может породить очередную эпоху темных веков. Эпоху, когда технологии и науку придется прятать от людей, чтобы предотвратить страх и мифы. Предостережения Сэма Альтмана могут свидетельствовать о том, что наше общество уже движется в этом направлении.
Общество переживает кризис образования
Для того, чтобы человек мог идти в ногу с техническим развитием, жизненно необходимо постоянное обучение и просвещение. Однако упадок системы образования оставляет миллионы людей позади.
Это касается не только условных Тома, Дика и Гарри, но и разработчиков программного обеспечения. Если взглянуть на внедрение современных облачных технологий, бессерверных приложений и таких подходов, как событийно-ориентированные архитектуры, а затем сравнить это с количеством «классических» трехуровневых веб-аппов, то можно заметить, что внедрение современных архитектур приложений — это долгий путь. Есть даже новые приложения, построенные на традиционных архитектурах, которые в современном мире не имеют смысла. Их создают так не потому, что это целесообразно, а потому, что разработчики не знают ничего более подходящего.
Сейчас перелет из Лондона в Нью-Йорк занимает в два раза больше времени, чем в 80-е годы.
Хотите верьте, хотите нет, но до сих пор существует немало сайтов, которые не оптимизированы под мобильные устройства (в 2024 году!). Я лично встречал веб-разработчиков, которые не смогли даже в самых общих чертах объяснить, как работает TCP/IP или даже HTTP. А ведь это сетевые протоколы, которые они используют и с которыми работают каждый день.
Недавние увольнения в технологической сфере аргументируются «избытком кадров». Однако если бы переизбыток персонала привел к появлению большего количества программ, большего количества сервисов, большего количества пользователей и большему доходу, не было бы необходимости сокращать штат. Вместо того чтобы повышать производительность за счет увеличения числа сотрудников, технологические компании становились менее продуктивными, когда брали на работу новых людей.
Компаниям пришлось осознать, что в найме персонала должен быть баланс между количеством и качеством.
Нанять тьму людей — не значит решить все проблемы, вместо этого нужно разыскать строго нужное количество квалифицированных специалистов. Сейчас компании уже почти не сокращают штат, а перестраивают его с учетом повышения производительности труда, которое придет с новыми и более совершенными ИИ-инструментами. В конце концов они снова начнут нанимать сотрудников, но теперь будут гораздо более разборчивы.
Кривая обучения в наши дни стала круче, в то время как учиться стало намного проще. У разработчиков и инженеров-программистов с нужными навыками не будет проблем даже в условиях нынешнего рынка труда. Точно так же, как это было в начале 2000-х. Постоянное обучение и движение в ногу с технологиями было, есть и будет единственным способом выжить в индустрии программного обеспечения.
Кстати, мы в beeline cloud регулярно запускаем бесплатные курсы — ловите подборку по разным направлениям:
Base Cloud DevOps — основы гибкой разработки в облаке, лучшие практики DevOps и Kubernetes
Base Data Engineer — особенности управления данными, подходы к их хранению и визуализации
Base Cloud Security — основы и лучшие практики информационной безопасности