Разработка ПО в 2026 году
Monday, 23 Mar 2026
Три года назад я написал довольно внятный текст «четыре главных навыка разработчика», но с тех пор утекло немало воды, и, несмотря на то, что тезисы, изложенные там, остаются верны, они нуждаются в небольшой коррекции в связи со свалившейся на нас благодати в виде больших языковых моделей.
Я прошел все пять стадий неизбежного за год.
① Отрицание — я видел, как мои коллеги год назад восторгались автодополнениями и галлюцинациями и даже выиграл несколько пари наподобие того, которое предложил своему бухгалтеру герой Адриано в великом фильме.
② Гнев — я продолжал писать код руками, но в мои обязанности входит отстирывать штаны коллег после изменившихся концепций (я делаю много ревью), и количество нейрослопа перешло всяческие разумные границы: даже если код компилировался, он выглядел, как Рим с высоты птичьего полета: очень много неряшливо разбросанных тут и там обломков хороших практик, перемежавшихся трущобами глубоко вложенных условных операторов. Мне приходилось буквально переписывать за модельками большие куски, потому что я к ревью отношусь серьезно и до сих пор воспринимаю его как инструмент обучения подмастерьев.
③ Торг — примерно месяцев семь назад я попробовал натравить модель на свою старую библиотеку, которая отчаянно нуждалась в нормальной документации; как ни странно, документация получилась осмысленная, почти полная, и, несомненно, была лучше, чем её отсутствие. Я зажмурил глаза и попросил тесты. Половина тестировала стандартную библиотеку языка и детали реализации, зато вторая половина — принесла несомненную пользу. Как те суровые сибирские мужики из анекдота, я сказал: «У-у-у-у, бля». И заплатил за Warp.
④ Депрессия — за первый месяц использования я доделал два личных проекта, до которых у меня не доходили руки годами, оснастил детальной документацией и недостающими тестами все библиотеки, поигрался с созданием собственного языка программирования и даже доверил модели полностью решить тестовое задание в одну из контор, из написавших мне напрямую с предложением (тестовое прошло на ура, но работать там я и так никогда не стал бы, потому что HR нарушил все мыслимые правила хорошего тона при хедхантинге). Я не опасался, конечно, что меня вышвырнут на улицу и наймут Клода на мое место, до моего уровня экспертизы модели до моего ухода на пенсию не дойдут, но писать код — одно из моих самых любимых занятий в жизни, и у меня отбирали возможность продолжать им наслаждаться.
⑤ Принятие — сейчас на дворе конец марта 2026 года и я могу с уверенностью сказать, что языковые модели оказывают мне существенную помощь в разработке, не особенно вторгаясь в ту часть моей жизни, которой я дорожу: они пишут прекрасную документацию, довольно внятные тесты и под надзором и дулом Ctrl+C — умеют перекладывать джейсон. Сложный код я до сих пор пишу сам, и уверен, что так будет продолжаться до моей смерти за рулём спортивного мотоцикла.
В то же самое время в сети множатся истории успеха всяческих пустозвонов, от стартапщиков с тремя классами церковно-приходской школы, вооруженных восторгом, ограниченностью кругозора, и бесплатной версией ChatGPT, — до мамкиных трейдеров, у которых воображаемый профит уже позволяет им купить бумажную яхту на Бали. Большие языковые модели в руках людей, далеких от разработки, обречены на два малоприбыльных применения: можно развлекаться созданием мемов с поросятами, пьющими мохито в Кремле, либо повторить продукт, который уже есть на рынке, и который в этой нише уже никогда не догнать.
Чтобы применять модели (теперь еще можно применять агенты, но сути это вообще никак не меняет), нужно — как минимум — понимать принципы их работы. Автомобильной промышленности потребовалось сто лет, чтобы подарить пользователям радость управления транспортным средством ни разу в жизни не открыв капот. Самолеты все еще не дошли до этой стадии. Я не вижу никаких причин, которые бы позволяли предположить, будто очень продвинутое автодополнение — способно само себя ремонтировать. И это помимо того, что языковые модели — в принципе тупиковая ветка развития искусственного интеллекта. Даже Ян Лекун это понял, но, к сожалению, пока неясно, насколько его собственные идеи — не другой тупик.
Так вот.
Если вам надо создать с нуля на коленке магазин никчемной бижутерии, которую делает ваша жена, — современная модель справится на ура. Аккуратный непритязательный дизайн, удобное добавление новых браслетиков, фоточки, платежная система. Моделька сделает вам веб, мобильное приложение и еще черта в ступе. И оно заведется с первого раза, скорее всего. Потому что в процессе обучения она насмотрелась на такое говно в миллиардах различных вариантов. По сути то, что всех так восхищает — результат работы четырех команд системной оболочки: cp, grep, sed, awk. В прошлом веке эта технология носила гордое имя «сниппет». Поэтому для клонирования уже существующих сущностей, модель — помощник хоть куда. Веб-студии, создающие лендинги, — скорее всего действительно умрут (они и так не должны в принципе были существовать, но это уже другой вопрос).
Что касается проектов посложнее — даже не посложнее per se, а понеобычнее, — тут без поводыря-архитектора модель опозорится на первом же барьере. Потому что добиться скупо описанного результата можно пятнадцатью различными путями, рано или поздно решения безмена (динамометра, не контаря) заведут в топь и выбраться уже не получится, потому что признавать поражение — не наш путь, модель будет играть в рулетку до последнего, как Достоевский в Баден-Бадене.
Я недавно как раз писал о том, почему вычурными промптами и подробными описаниями хорошего результата не добиться — см. вторую часть «Искусственный „интеллект“», — повторяться здесь не стану, приведу лишь ключевой тезис.
Человек, способный разбить большую задачу на минимальное количество меньших, удовлетворяющих условию «однозначности решения» — способен в современных реалиях написать достаточно сложное приложение за пару дней.
Я имею в виду, что умение отличать задачи с ветвлениями логики от многозвенных силлогизмов — становится как никогда востребовано. Нарисуйте в голове блок-схему выполнения, и если там есть ромбики — модели нужно их либо специальным образом прорешать (тут влево ходи, тут вправо ходи, тут снег башка попадет, совсем больно будет). А еще лучше — разбить основную задачу на несколько, чтобы полностью эти самые «условия/решения» элиминировать. Но это вряд ли возможно, если вы представления не имеете, как такой код написать самостоятельно.
Помимо дурачков, которые попробовали сделать сайт и у них получилось, — существуют еще вредители. Они значительно опаснее тем, что на неподготовленного читателя производят впечатление «людей в теме». Я говорил, что перед тем, как оплатить подписку на облачную модель — досконально разобрался в том, как именно они работают? Я всегда так делаю. Если мне втемяшится втащить в проект библиотеку xyz, я начну с того, что разберусь в её исходном коде. При выборе технологии я не стану читать истории успеха внедрения и смотреть бенчмарки, я напишу на ней свой «магазин бижутерии в Мытищах». Чтобы использовать языковые модели в повседневной работе, да еще и платить за это, — мне недостаточно горячечного бреда Альтмана и кокетливого салфеточного кода от Карпаты. Я должен понимать, как именно оно функционирует под капотом, чтобы превентивно избежать разочарований и краха надежд.
В общем, те, кто научился по инструкции запускать модели и задавать им высосанные из пальца вопросы, якобы что-то там проверяющие или даже доказывающие, — ей-богу, лучше бы молчали. Потому что все, что мне попадалось в поле зрения — напоминает галлюцинации первой версии ChatGPT, «Улисса» Джойса, полёты Кастанеды и в принципе любое выступление на партийном съезде секретаря верхнеморжопской ячейки, нажравшегося мухоморов.
Пройдусь глиссандо (или, как говорил Довлатов, пунктиром) по основным пунктам.
Тесты и бенчмарки
Сравнения разных моделей по наборам картонных тестов и пластиковых бенчмарков — чистейшей воды профанация. Достаточно посмотреть на сводную таблицу по языкам на AutoCodeBench → Experimental Results (да, это сарказм). Claude Opus 4 для тайпскрипта не дотягивает до 50, а для эликсира — выходит за 80. Переводя с бухгалтерского на русский (и немного преувеличивая, конечно) — если ваш проект на тайпскрипте, то модель вам скорее мешает, а если на эликсире — ей можно поручить рефакторинг на 1000 строк.
Контекст
RAG в любом более-менее сложном проекте (точнее, его «RA» часть) — важнее самой по себе модели в сотни раз. Почему всякие клоды лезут к вам в компьютеры своими средами разработки (и в последнее время — интерфейсами командной строки), как думаете? — А все просто, весь контекст каждый раз отправлять на сервер — дорого и неэффективно (да и вопреки рекламным обещаниям флагманов, более ста тысяч токенов не умеет обрабатывать без заметной потери качества никто). Поэтому каждая модель отправляет на сервер некую «выжимку».
Важно понимать, что любая языковая модель работает в режиме конечного автомата начало → контекст → вопрос → ответ → останов. Там нет никаких «сессий». Вы не можете «запустить» модель и общаться с ней, каждый ваш запрос для нее — начинается с чистого листа. У моделей как таковых — нет никакой «памяти», поэтому сохранение контекста — критически важно. Но, в отличие от героя Хоффмана из «Человека дождя», даже мы не в состоянии запомнить шесть колод карт, что уж говорить о моделях, с их узким, как Ормузский пролив, контекстным окном! Мой вялотекущий проект Ragex — попытка хоть как-то формализовать — и минимизировать без потери общности — контекст, необходимый для обработки значительных по размеру кодовых баз. Посмотрим, получится ли у меня, но то, что на обозримом горизонте я одинок, — оптимизма не внушает.
Планы и рассуждения
При решении более-менее нетривиальных задач, модель нужно заставить набросать план и задать по нему все вопросы, которые у нее возникли в процессе создания этого самого плана. Она с радостью сдаст вам все внутренние условные операторы из блок-схемы. На эти вопросы нужно ответить максимально четко, рублеными фразами, не допускающими двойных толкований. Требование после каждой фазы плана снабжать результат тестами и полностью приводить всю документацию на проекте в соответствие с текущим состоянием кодовой базы — должно быть прошито в общие правила.
Каждый этап требует git diff с неформальным ревью. Также я всегда использую «думающие» модели, и слежу глазами в реальном времени за этими рассуждениями, чтобы как только она попробует свернуть не туда (а на нетривиальных задачах она обязательно попробует) — убить эту гниду Ctrl+C и разъяснить ей, почему она неправа.
Язык
Согласно моему опыту, лучше использовать тот язык, ответ на котором в интернете найти проще всего. Для кода — это всегда английский, для малоизвестных подрообностей биографии Лорки — испанский, для обзора рынка сексуальных услуг в Берлине — немецкий.
Доказательств у меня нет, к сожалению, кроме общего понимания принципа работы этого Т9 на стероидах, но эмпирики — вагон. Мой испанский болтается в районе B2–C1, поэтому сначала я все-таки пробую английский; если результат выглядит так себе, я напрягаю свои пальцы по-испански, и потом — не жалею об этом в подавляющем большинстве случаев.
Вежливость
После каждого успешного завершения задачи я говорю что-нибудь типа «Awesome», или «Astonishing», или «Stunning», или типа того. Каждый запрос формулирую, как просьбу и всегда добавляю «please». На карбоновые выбросы моё поведение влияет не сильнее, чем на демократические выборы в пятидесятимиллионной стране, а мне так проще и приятнее. Вдобавок, как однажды сказал Нильс Бор: «Разумеется я не суеверен. Но говорят, подкова приносит удачу даже тем, кто в эту чепуху не верит».