Для меня халява — это гарантированный результат за вложенные усилия. Логика повествования требует такого определения, дальше всё будет ясно.

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

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

Такая книга действительно есть, но не имел удовольствия прочитать (trolling warning).

Тезисы для поддержки рассуждений

Рассмотрим несколько тезисов сразу, чтобы далее по статье не останавливаться на доказательства и ссылки. Обратите внимание, что первые 3 тезиса могут иметь причинно-следственные связи, как и тезисы 4 и 5.

Тезис 1: ИИ улучшается в решении типовых задач

  • OpenAI GPT 4.1 модели стали лучше писать код (дешевле, быстрее, меньше ошибок) (wired).

  • Предложения от ИИ уже «коммитятся» в C++ std.

  • С 2019 года способность ИИ выполнять длительные задачи удваивается (ИИ может решать задачи всё длиннее) примерно каждые 7 месяцев (исследование Metr).

Тезис 2: ИИ упрощает разработку

  • Доступ к Copilot дал прирост продуктивности (на 13-22% больше PR) в Microsoft (Исследование).

  • Скорость решения типовых программерских задач возрастает вдвое (mckinsey).

Тезис 3: практически все разработчики используют ИИ

  •  76% разработчиков уже используют (планируют), рост продуктивности (81%) (Stack Overflow Dev Survey 2024).

  • 92% разработчиков в штатах используют ИИ дома и на работе (2023).

  • В этом году вышли бесплатные китайские нейросети уровня платных ChatGPT o1 (qwen.ai, deepseek), открыв доступ для разработчиков без денег и VPN.

Тезис 4: крупные компании больше не вкладываются в разработчиков

  • Глобальные инвестиции в AI достигли $500 млрд в 2024 году, отражая приоритет AI в стратегиях крупных компаний.

  • Брин (основатель гугла) сказал: «60 hours a week is the sweet spot of productivity». Раньше гугл был известен лояльностью к сотрудникам и порицал переработки.

  • Инвестиции в сектор SaaS и корпоративного ПО сократились с $17,4 млрд в 2023 году до $4,7 млрд в 2024 году (ctol digital solutions).

Тезис 5: разработчик ПО больше не дефицитная профессия

  • Software‑development вакансии за 2023 год ↘ ‑51 %, самый резкий спад среди всех профессий (Indeed hiring lab 2023). В 2024 спад уменьшился относительно прошлого года, но не относительно других профессий.

    The rise—and fall—of the software developer

Тезис 6: LLM — это не интеллект, а паттерн-матчинг

  • LLM не думают, а симулируют мышление статистически. Делать что-либо, что выходит за рамки обучающей выборки, не могут (подробнее написал в ТГ).

  • В MathTrap GPT-4 и др. рушатся, если в задачу подмешать «ловушки», требующие комбинировать известные правила по-новому (paper).

  • При высокой семантической энтропии ответы превращаются в «конфабуляции» — чистый статистический шум (paper).

  • We Have Made No Progress Toward AGI, LLMs Are Braindead (article, 2025).

  • Большие языковые модели — это pattern matching (paper, 2024).

Этот тезис выбивается из повестки, но только на его основе и строится главный вывод статьи. Давайте обо всем по порядку.

Программирование являлось халявой, но больше не является

В недалеком прошлом достаточно было пройти несколько туториалов, посмотреть примеры собеседований, прорешать пару десятков задач c Leetcode (Codewars, Hackerrank) и идти на рынок.

Легко было обходиться без базовых знаний Computer Science: понимания структур данных и алгоритмов, баз данных, операционных систем, сетей, теории асимптотической сложности и т.п.

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

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

Тренд уже заметен и высмеивается в миниатюрах:

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

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

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

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

Главное заблуждение вайб-кодера

Вайб-кодер думает, что наступили времена, когда за неумение писать код и незнание основ computer science компании будут платить деньги.

Жестокая правда такова, что эти времена как раз закончились с появлением LLM.

Повторюсь. С появлением LLM некомпетентность перестала оплачиваться.

Дело в том, что никакой сложности решать большую часть задач на большинстве проектов не было и раньше. Да, надо было иметь какое-никакое знание языка программирования, но это вопрос одной-двух недель, этому и дошкольников обучают. Вместо 1x запросов к LLM надо было сделать 2x запросов в Google и скопировать код. Может быть, внести мелкие правки.

Никакого волшебства с LLM не произошло, только поиск стал быстрее и нудная рутина ушла. Если речь идет о задаче, которую не решили в интернете, то и LLM не поможет. Говорю как человек, который ежедневно использует ChatGPT с 2022 года.

Никакой сложности решать большую часть задач на большинстве проектов не было и раньше

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

Сейчас работодатель понимает, что типовые задачи легко решаются с LLM, и не готов платить за это много. А желающих получать вознаграждение за легкую работу значительно(!) прибавилось.

Навык алгоритмизации — не то, что определяет программиста сегодня

Про то, что это важно, впервые услышал здесь (youtube).

Даже 10 лет назад большая часть работы абсолютного большинства программистов была не про алгоритмизацию. Мобильные разработчики получали json и рисовали «фид» (ленту), самоутверждаясь переписыванием архитектуры на очередную аббревиатуру (MVC, MVP, MVI, VIPER, MVVM, TEA...). А бекендеры перекладывали json-ы и джойнили таблицы, самоутверждаясь через выделение микросервисов и затаскивание новых технологий в проект.

Сегодня (низкоуровневая) алгоритмизация нужна и того меньше. Когда ясно, что алгоритмизировать, — например, после гугления и разбора, — можно скопипастить готовое решение или попросить LLM написать код из формального определения. А вот чтобы это было ясно, нужна база, которая включает в себя теорию сложности алгоритмов, сами алгоритмы и структуры данных.

Я хочу сделать акцент на том, что прорешав кучу задач с Leetcode, вы больше не являетесь завидным кандидатом. Искусственные простенькие задачки — это бутафория. Надо уметь их решать, но не нужно делать это самоцелью.

А еще никому не нужен — или вот-вот станет не нужен — программист с отношением: говорите мне, что «закодить», а я «закожу». LLM сделает это быстрее. Теперь надо знать, что и зачем кодить.

Знание фреймворка становится менее ценным

Если вы познакомились с фреймворком по туториалам и прорешали десяток литкод-задач, вы ничем не лучше, чем любой подросток с ChatGPT.

Промпт-программистам сегодня легко даются решения, которые гуглятся и без ChatGPT, а всё, что касается популярных фреймворков, гуглится легко. Базовых ошибок, вроде утечек памяти, или «секьюрных» дыр, вроде сохранения ключей в коде, можно избежать, если настроить LLM на ревью кода. Не уверен, что вайб-кодеры так делают, но рекомендую им это в первую очередь.

Если фреймворк не важен, то что важно?

  • Понимание ограничения фреймворка, и желательно, не одного.

  • Опыт чтения и отладки исходного кода фреймворка.

  • Опыт разбора неочевидных проблем (например, поиск утечки памяти NDK в андроид-приложении).

  • Опыт работы со сложным многопоточным кодом.

  • Знание экосистемы: CI/CD, tooling, deploy, навыки профилирования.

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

Шкала технических навыков программиста сегодня

Я вижу технические навыки программиста в таком приоритете:

  1. Умение выстраивать и масштабировать архитектуру системы.

  2. Базовые знания Computer Science.

  3. Умение писать поддерживаемый код вне зависимости от языка.

  4. Умение писать код на заданном языке.

  5. Умение решать алгоритмические задачи.

Тут самое главное, что важны первые три и совершенно не важны последние два.

Архитектура и масштабируемость — основа, так как влияет на предсказуемость расходов, надежность с SLA, скорость разработки, «поддерживаемость» системы со временем.

Базовые знания для программиста становятся более востребованными, потому что навыки написания кода и использования фреймворка легко компенсируются ИИ, а понимание основ computer science позволяет:

  • решать задачи, которые LLM решить не может.

  • контролировать то, что пишет ИИ, сразу замечая проблемы;

  • понимать новые фреймворки, базы данных, девопс-тулзы и прочие технологии быстрее;

  • утилизировать LLM эффективнее (давать более точные указания);

Важно, чтобы кодовая база хорошо «старела». Другими словами, надо уметь минимизировать accidental complexity, иначе со временем проект физически невозможно будет поддерживать — решение одной проблемы будет порождать две других (гидра).

Чем опытнее разработчик за рулем, тем меньше accidental complexity. Сложность 100 означает невозможность поддержки кодовой базы.

Пункты 4 и 5 практически не важны, так как легко решаются через LLM и будут решаться еще лучше со временем (см. тезис 1 из начала статьи). Проблему написания неидиоматичного кода и специфичные для ЯП проблемы можно отловить через ревью теми же LLM.

Исключение: переход с высокоуровневого языка (JS) на низкоуровневый (C++). Тут LLM не помогут, но это можно отнести к пункту 2 (базовые знания), ведь в JS не нужно думать ни о потоках, ни о памяти.

На собеседованиях пункты 4 и 5 до сих пор ставят в приоритет. Это является ошибкой компаний. Надо либо разрешать пользоваться LLM на собеседовании, обращая внимания на то, что человек замечает и как рассуждает, или вообще не тратить на алгоритмические задачки ни свое, ни время кандидата.

Почему важно понимать бизнес

У некоторых программистов — да и у меня самого, не буду лукавить, — отношение к бизнесу индифферентное. Неинтересно думать о бизнесе — интересно писать код и разбираться в технологиях.

Кто-то открыто говорит, что готов затаскивать «ненужные» технологии в проект, потому что интересно и для резюме полезно. CV-driven development. И боль последующих поколений, кому это поддерживать.

Бизнес в конечном итоге платит за ценность. В идее из абзаца выше ценности мало, мало ее и в том, чтобы «закодить» описанную вдоль и поперёк задачу. Это может любой с LLM.

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

  • Сделать проигрывание музыки в андроид-приложении через webview, MediaPlayer или ExoPlayer?

  • Нужен ли нам backend-driven UI?

  • Нужно ли при обсуждении API настоять на добавлении пагинации сразу?

  • Монолит, сервисы или микросервисы?

  • Если микросервисы, то как их разделять, чтобы не получился распределённый монолит?

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

Халявное послесловие

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

Начинающие разработчики, особенно «промптеры», думают: без основ computer science и навыков программирования пойду работать программистом. Но как раз таки в прошлом, а не сейчас, это было легче.

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

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

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

Идею статьи в общем случае передал одним сообщением в телеграме.

P.S.

Судя по комментариям, кто-то думает, что статья про то, что программисты не нужны. Тезис ровно противоположный. LLM — просто тулза для решения рутинных задач.