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

Почему скорость перестаёт быть главным преимуществом
ИИ может набросать фичу за минуты. Сначала это впечатляет, особенно если команда раньше ждала полдня за первую рабочую версию.
Но логика меняется. Если один инженер генерирует в пять раз больше кода, у команды теперь в пять раз больше вариантов, которые нужно проверить, протестировать и поддерживать. Выдача уже не в дефиците. Дефицит — это внимание.
Поэтому сырая скорость перестаёт быть главным преимуществом. Более сложный вопрос — не «можем ли мы быстро получить код?», а «получили ли мы правильный код в правильной форме по правильной причине?».
Плохие решения теперь проскальзывают быстрее. Дополнительный сервис, запутанная схема, скрытая уязвимость или неточная подсказка, породившая неправильную абстракцию, могут стоить дней впоследствии. Команды часто путают быструю генерацию с реальным прогрессом, а затем тратят следующий спринт на исправление кода, который не должен был попасть в мастер.
Старшие инженеры помогают, отсекая плохие ставки на ранней стадии. Они замечают, когда сгенерированное решение решает сегодняшнюю задачу, но осложняет работу в следующем месяце. Они задают простые вопросы, которые реально экономят время: подходит ли это к системе, добавляет ли это новые точки отказа и поймёт ли другой инженер этот код на следующей неделе?
Это особенно важно в маленьких командах. В стартапе может быть один старший инженер, два миддла и инструмент ИИ, постоянно предлагающий pull request'ы. Без человека, фильтрующего этот поток своим суждением, беклог на бумаге движется быстрее, а продукт на деле — медленнее.
Лучшие навыки программирования с ИИ часто выглядят не как набор текста, а как редактирование. Хорошие инженеры уменьшают объём, отвергают «умный» код и сохраняют систему скучной там, где ей положено быть скучной. Это не эффектная работа. Но она экономит деньги, сокращает переработки и сохраняет продукт стабильным.
Это видно в компактных командах, ориентированных на ИИ. Небольшая группа может поддерживать серьёзные продакшн‑системы, если поддерживать строгие стандарты и отказываться от лишней сложности. Выигрыш приходит не от генерации максимального объёма кода, а от доставки меньшего количества ошибок.
Скорость всё ещё важна. Никто не хочет возвращаться к ручному написанию шаблонного кода. Но когда ИИ делает программирование дешёвым, суждение становится дорогим. Инженер, который предотвращает лишние 500 строк, часто приносит больше пользы, чем тот, кто написал их первым.
Как выглядит хороший вкус в коде
Вкус в коде обычно означает выбирать меньше. Когда ИИ может за пару минут сделать пять рабочих версий, полезный навык — отвергнуть четыре из них. Если две архитектуры решают одну задачу, выбирайте ту, где меньше подвижных частей и меньше мест, где могут скрываться баги.
Это часто значит простой код вместо хитроумного. Уставший коллега должен уметь прочитать его во вторник днём и понять, что происходит. Если для понимания нужно рисовать схему, открывать три вспомогательных файла и следовать кастомному шаблону — дизайн уже слишком тяжёлый.
Имена делают большую часть работы. Хорошие имена простые, конкретные и согласованные. «calculateInvoiceTotal» лучше, чем «BillingComputationOrchestrator», потому что говорит, что происходит, без попытки впечатлить.
Последовательность имеет такое же значение. Если в одном файле «customer», в другом — «account», в третьем — «client» для одного и того же понятия, ревью замедляется и ошибки проскакивают. Инструменты ИИ усугубляют это, потому что они охотно генерируют новые имена, которые почти совпадают со старыми.
Лишние слои — ещё одна распространённая проблема. Модели часто добавляют обёртки, менеджеры, фабрики и вспомогательные классы, потому что эти паттерны часто встречаются в публичном коде. Многим командам они не нужны. Если обработчик может вызвать небольшую функцию напрямую, обычно это лучше, чем строить сервисный слой, который лишь пересылает те же данные.
Хороший вкус также означает знать, когда остановиться. ИИ делает дополнительные правки дешёвыми, поэтому инженеры продолжают полировать, добавлять опции и готовиться к будущему, которое может никогда не наступить. Через шесть месяцев команде придётся поддерживать каждую ветку и каждый флаг. Чистый, слегка скучный код обычно выигрывает.
Перед мерджем задайте несколько прямых вопросов. Может ли новый человек объяснить поток за минуту? Соответствуют ли имена тому, что код действительно делает? Можно ли удалить слой без потерь? Добавили ли вы гибкость для реального случая или только потому, что могли?
Быстрая генерация даёт больше черновиков. Вкус — это то, что сохраняет финальную версию небольшой, читаемой и вызывающей доверие.
Установите границы до того, как попросите модель
Сильные навыки программирования с ИИ начинаются до первой подсказки. Если вы попросите «улучшить этот сервис» или «почистить код», модель заполнит пробелы догадками. Старшие инженеры выигрывают, сужая задачу, чтобы модель имела меньше пространства для отклонений.
Начните с одного предложения, которое определяет задачу. «Добавить логику повторных попыток в email worker, не меняя его публичный API» даёт модели работу. «Сделать worker лучше» — нет. Коротко бьёт хитро.
Затем зафиксируйте жёсткие ограничения. Назовите файлы или модули, которые можно трогать. Назовите инструменты, которые нужно использовать. Укажите, какие данные нельзя раскрывать, логировать или отправлять. Если имя таблицы, контракт API или настройки деплоя должны остаться прежними — запишите это. Стабильные системы ломаются, когда модель «помогает» за пределами запрошенной области.
Чёткие подсказки обычно включают такие ограничения:
- Изменять только логику повторных попыток платежей и связанные тесты.
- Сохранять текущую схему базы данных и ответы API.
- Использовать TypeScript и существующую библиотеку очередей.
- Не трогать файлы авторизации, логирования и деплоя.
- Добавить тесты на тайм‑ауты, дублирующие события и частичные отказы.
Малые изменения лучше, чем переписывания. Как только генерация становится дешёвой, широкие переработки выглядят заманчиво. Но они создают длинные диффы, скрытые изменения поведения и усталость ревьюверов. Попросите одно изменение, проверьте его, затем попросите следующее. Такой темп в первые пять минут кажется медленнее, но в конце недели выходит быстрее.
Тесты особенно важны на рискованных участках. Если двигаются деньги, удаляются данные или фоновые задания могут выполниться дважды, требуйте тесты в подсказке. Не относитесь к тестам как к уборке после факта. Делайте их частью задачи.
Бережливые команды быстро этому учатся. Защищайте стабильный код, ограничивайте радиус воздействия и просите узкие диффы. Тогда ИИ становится проще доверять. Оставьте края неясными — и вы получите быстрый вывод с медленным восстановлением.
Почему письменное обоснование важно сейчас больше чем раньше
Когда модель может за несколько минут дать рабочий код, скорость набора перестаёт быть узким местом. Медленная часть — это решение, что должно существовать, что следует исключить и почему один вариант безопаснее другого.
Именно поэтому сильные навыки программирования с ИИ теперь включают письменную работу до кода. Старший инженер, который записывает проблему простым языком, даёт модели более чистую цель. Он также даёт команде способ проверить, действительно ли результат решил нужную проблему.
Короткая заметка перед генерацией часто достаточна. Укажите потребность пользователя, ограничение и предел. «Добавить письма‑приглашения для админов команды. Не менять биллинг. Оставить существующий аудит‑лог.» Это займёт меньше минуты и сократит много мусорного вывода.
Две версии, сгенерированные ИИ, обе могут пройти тесты и при этом сильно отличаться по стоимости, риску и будущему сопровождению. Если вы зафиксируете, почему выбрали одну из них, следующий ревьювер не будет гадать. Через шесть недель никому не придётся восстанавливать вашу логику, опираясь только на код.
Короткая заметка лучше длинной встречи
Хорошие заметки короткие. Им не нужен дизайн‑документ. Достаточно контекста, чтобы другой инженер ясно ревьюировал выбор.
Полезная заметка обычно отвечает: какую проблему вы решаете, какой вариант вы выбрали и почему, какие предположения ещё нужно проверить и какие риски остаются открытыми.
Это также меняет ревью кода, сгенерированного ИИ. Ревью уже не только «собралось ли?» или «пробежали ли тесты?». Ревью становится «логично ли обоснование?». Это куда лучшее применение времени старших инженеров.
Малой продуктовой команде это сразу видно. Допустим, команда просит ИИ добавить потоки приглашений для новой админ‑панели. Одна версия добавляет три таблицы и фоновые задания. Другая держит функциональность в одной таблице с простым правилом истечения. Старший инженер пишет: выбираем более простой вариант, потому что объём приглашений небольшой, поддержка базовая, и команде сейчас нужно меньше подвижных частей. Затем он добавляет один открытый вопрос: если крупные клиенты позже потребуют историю приглашений по ролям — пересмотреть схему.
Такая заметка занимает 30 секунд, но экономит дни.
Письменные технические обоснования также помогают при передаче дела. Если появляется баг, следующий инженер видит, какое предположение провалилось. Если продукт меняется, он видит, какая граница сместилась. Когда генерация кода становится дешёвой, ясное мышление — то, что нельзя пропускать.
Простой рабочий цикл, когда ИИ помогает с кодом
Когда модель может написать 200 строк за минуту, безопасный ход — сужать задачу, а не расширять. Дайте одному человеку явную зону ответственности для небольшого изменения: один эндпоинт, одна миграция, одно состояние UI или один баг‑фикс. Этот владелец решает, что значит «готово», и не даёт модели добавлять лишнее.
Хорошие навыки программирования с ИИ проявляются в этом цикле, а не в количестве сгенерированного кода. Старший инженер часто кажется медленнее, потому что он держит изменение узким, ранжирует риски и избегает работы, которая не нужна.
Спросите у модели варианты до того, как просите код. Двух‑трёх подходов обычно достаточно. Один может быть быстрым и грязным, другой — лучше вписываться в кодовую базу, пусть и длиннее. Запишите, почему выбрали один путь. Короткая запись типа «выбрали более простой запрос, потому что откат лёгкий» ускоряет ревью и предотвращает уклон подсказок.
Простой цикл работает так:
- Опишите изменение в одном коротком абзаце с ограничениями.
- Попросите две‑три альтернативы.
- Выберите одну и запишите, почему она подходит.
- Протестируйте странные входы, пути ошибок и откат.
- Смерджьте минимально полезный срез и наблюдайте реальное использование.
Зелёные тесты не гарантируют всё. Проверьте случаи, которые модель часто пропускает: пустые значения, дублирующие запросы, медленные API, устаревшее состояние и странный ввод пользователя. Если изменение затрагивает данные, авторизацию или биллинг — решите, как откатить, ещё до релиза.
Небольшие мерджи лучше героических подсказок. Малой продуктовой команде можно за день выпустить три безопасных изменения и учиться на каждом. Одна огромная ветка, сгенерированная ИИ, часто возвращает это время при ревью, очистке и исправлениях.
После релиза наблюдайте за изменением короткое время. Проверьте логи, ошибки и поведение пользователей, пока изменение ещё свежо в голове команды. Если что‑то ломается, владелец быстро откатит и объяснит, почему.
Реальный пример из маленькой продуктовой команды
Одна небольшая SaaS‑команда должна была реализовать новый поток отмены до следующего биллингового цикла. Пользователи уже могли приостанавливать аккаунты, понижать тариф и обращаться в поддержку за частичными возвратами. Продукт‑менеджер хотел один простой экран, где пользователь может отменить подписку, выбрать причину и увидеть, что произойдёт дальше.
Команда использовала ИИ, чтобы набросать первую версию за несколько часов. Модель сгенерировала поля формы, тексты писем, базовую валидацию и набор тестов для API‑хендлера. Всё выглядело быстро, аккуратно и почти готово.
Старший инженер специально притормозил одну часть. Она знала, что биллинговый код накопил за годы странные правила. Годовые планы возвращали деньги иначе, чем месячные. Командные аккаунты отменялись на уровне рабочей области, тогда как у некоторых старых клиентов биллинг был посевным. Пользователь, отменивший в последний день триала, не должен был проходить тот же путь, что платный аккаунт.
Её заметка с перечислением пограничных случаев изменила работу:
- триал заканчивается сегодня
- месячный план отменён сразу после продления
- годовой план ещё внутри окна частичного возврата
- аккаунт с неоплаченным инвойсом
- владелец рабочей области отменяет при активных дополнительных местах
Черновик ИИ трактовал «отключить доступ» и «остановить будущие списания» как одно событие. На деле это разные действия с разными последствиями для клиента. Инженер сузила изменение: один новый эндпоинт для намерения отмены, один сервис‑метод, который вызывает старые биллинговые правила, и письма, соответствующие каждому результату.
Команда всё равно выпустила быстрее. ИИ справился с повторяющимися частями: правкой текстов, состояниями формы и каркасами тестов. Старший инженер взяла на себя вкус, рамки и письменное обоснование. Она решила, что модель может генерировать, а что должно оставаться под контролем человека.
Они выпустили за два дня вместо пяти. Ещё важнее — служба поддержки не проснулась под завал жалоб на возвраты на следующее утро. Вот как выглядят сильные навыки программирования с ИИ в маленькой команде: не столько скорость набора, сколько держание изменения маленьким, понятным и безопасным.
Ошибки, которые делают быструю генерацию дорогой
Быстрый вывод кажется дешёвым ровно до того момента, когда команде приходится отлаживать его в продакшене. Как только модель может написать неделю кода за один день, стоимость смещается: время на ревью, риск отката и грязная доработка.
Худшие проблемы обычно начинаются с выборов, которые в моменте кажутся безобидными.
Огромный набор изменений выглядит эффективным, потому что кажется завершённым. На практике его никто не сможет хорошо проверить. Небольшие изменения упрощают поиск багов и безопасный откат.
Разрешать модели самостоятельно выбирать библиотеки часто приводит к инструментам, которые команда не просила. Появляется ещё одна зависимость, ещё один цикл обновлений и ещё одна вещь, за которую никто не хочет отвечать через полгода.
Отсутствие записей о том, что и почему поменяли, экономит пять минут сейчас и отнимает часы позже. Письменное обоснование даёт ревьюверам карту. Без неё каждая следующая правка начинается с догадок.
Простые тесты создают ложное доверие. Модели хороши в «счастливом пути». Реальные пользователи встречают странные состояния, старые данные, медленные сети, дублирующие клики, битые вводы и незавершённые потоки.
Смешивание экспериментов с кодом, видимым клиентам, тихо съедает бюджет. Пробная подсказка должна находиться за флагом, в ветке или во внутреннем инструменте, пока команда не поймёт, как это себя ведёт.
Пример: модель переписывает биллинг, добавляет новый пакет и проходит три теста — но всё равно может падать при повторной попытке оплаты после тайм‑аута или при старых данных. Тогда команда чинит доходный код под давлением — и это всегда дороже, чем делать сначала узкое изменение.
Здесь старшие инженеры окупают себя. Они режут объём, отклоняют эффектные выборы библиотек, просят «уродливые» тесты и оставляют заметки с простым объяснением компромиссов. Модель ускоряет набор текста. Инженерное суждение не даёт этой скорости превратиться в долг.
Это видно в ИИ‑первичных командах, которые всё равно держат продакшн стабильным. Oleg Sotnikov показал, что небольшие операции с поддержкой ИИ могут управлять серьёзными системами почти с идеальным аптаймом, но только если изменения контролируются и команда воспринимает обоснование и ревью как часть работы.
Быстрый код полезен. Дешёвый код — это код, которому можно доверять, объяснить и изменить на следующей неделе без страха.
Быстрая проверка перед выходом кода в продакшен
Быстрый вывод может обмануть команду. Модель за минуты делает рабочий код, но ошибки при релизе всё ещё происходят по старым причинам: неясный объём, сломанные предположения, плохие имена, слабые планы отката и риски без записи.
Сильные навыки программирования с ИИ проявляются прямо перед релизом, а не только во время генерации. Полезный вопрос прост: может ли человек объяснить, что поменялось, что осталось и что ещё может пойти не так?
Короткое ревью перед деплоем ловит многое:
- Попросите одного человека объяснить изменение простыми словами. Если нужен жаргон или продолжительный скрин‑шэр, изменение, вероятно, слишком туманно.
- Проверьте, что команда сдержала объём. Новый код должен решать одну задачу, не меняя молча поведение, которому пользователи доверяют.
- Прочитайте имена, сообщения об ошибках и логи. Они должны соответствовать языку продукта. Если пользователь нажимает «Экспорт», приложение не должно жаловаться «serialization pipeline failure», разве что это сообщение остаётся внутри инженерных инструментов.
- Убедитесь, что откат можно сделать за несколько минут. Это может быть флажок, простой revert или безопасный fallback. Если откат занимает час — релиз не готов.
- Запишите оставшиеся риски. Одна короткая заметка: что не протестировано, какой трафик вызывает беспокойство или какой случай данных может ещё сломать.
Это занимает мало времени. В маленькой продуктовой команде это может быть 10‑минутная пауза перед мерджем или деплоем. Эта пауза часто спасает от ночной починки, недоумённых тикетов в поддержку и второго раунда срочных патчей.
Бережливые команды обычно делают это лучше больших, потому что им некому спрятаться за процессом. В небольшой AI‑поддерживаемой операции кто‑то должен отвечать за объяснение, откат и оставшийся риск.
Если никто не может чётко выполнить эти три вещи, код всё ещё черновой, даже если тесты зелёные.
Что делать дальше с вашей командой
Большинству команд не нужен новый процесс с нуля. Нужен небольшой набор правил, который делает быстрый вывод безопасным. Начните с одной повторяющейся задачи, где ИИ уже экономит время: написание тестов, CRUD‑эндпойнты, скрипты миграции или небольшие UI‑обновления.
Если задача раньше занимала 90 минут, а теперь 30 — этого достаточно, чтобы на этом строить. Выберите такую задачу первой. Не внедряйте ИИ во всё разом.
Затем напишите одну страницу правил. Держите её простой и конкретной. Укажите, что модель может менять, что оставлять нетронутым, как должен выглядеть код и что ревьюер обязан проверить перед мерджем. Короткая страница такого рода принесёт больше пользы, чем ещё одна пачка приёмов по подсказкам.
Простой стартовый план работает так:
- Выберите одну повторяющуюся задачу с чётким входом и чётким критерием готовности.
- Запишите лимиты объёма, правила стиля и чек‑листы ревью в одном общем документе.
- Попросите старших инженеров добавлять короткую заметку к каждому изменению с участием ИИ.
- Пересмотрите результаты через две недели и ужесточите правила там, где команда обожглась.
Эта короткая заметка важна. Попросите старших инженеров объяснять решения, а не просто выпускать код. Они должны указать, почему выбран подход, какие риски увидели и от чего отказались. Когда генерация кода становится дешёвой, суждение — более медленная и полезная часть работы.
Эта привычка также помогает менее опытным разработчикам. Они читают обоснования изменений, а не угадывают, почему подсказка сработала. Со временем команда вырабатывает общий стандарт вкуса, границ и ревью.
Некоторым командам нужен внешний голос. Если люди продолжают спорить об архитектуре, правилах ревью или о том, где ИИ должен останавливаться, внештатный CTO может задать ограничители без затрат на фулл‑тайм найм. Oleg Sotnikov на oleg.is делает такие консультации для стартапов и малого бизнеса с практическим опытом в ИИ‑ориентированной разработке, бережливых операциях и ревью архитектуры.
Первый выигрыш — не больше кода. Это меньше плохих сюрпризов, чище ревью и команда, которая умеет письменно объяснять свои решения.
Часто задаваемые вопросы
Почему старшие инженеры важнее, когда ИИ быстро пишет код?
Потому что быстрая генерация создаёт больше решений, а не меньше. Старший инженер отсекает плохие идеи на ранней стадии, держит объём изменений небольшим и замечает риски в схемах, биллинге, авторизации и поддержке прежде, чем это превратится в переработку.
Какой навык важнее всего после того, как программирование становится дешёвым?
Судить и выбирать — обычно самая важная способность. Победа приходит от выбора правильного изменения, отказа от лишней сложности и сохранения кода понятным через неделю.
Как выглядит хороший вкус в коде?
Обычно это выглядит просто: понятные имена, минимум слоёв и потоки, которые усталый коллега поймёт без диаграммы. Если можно удалить обёртку или хелпер без потери функциональности — лучше удалить.
Как мне формулировать подсказку модели для кода?
Начните с одного предложения, которое определяет задачу, затем задайте жёсткие ограничения: какие файлы можно трогать, что менять нельзя, какие инструменты использовать и какие тесты нужны. Чёткие подсказки уменьшают увод модели в сторону.
Плохи ли переработки с ИИ?
Чаще всего — да. Попросите минимально полезное изменение, проверьте его и выпускайте кусками. Большие переработки дают длинные диффы, скрытые изменения поведения и утомлённых ревьюверов.
Почему инженерам стоит писать короткие заметки перед мерджем?
Краткая заметка экономит будущее время. Опишите, какую проблему вы решили, почему выбрали этот подход и какие риски остаются. Это даёт контекст ревьюверам и ускоряет последующие правки.
Что стоит тестировать в коде с поддержкой ИИ?
Проверяйте уродливые случаи, а не только счастливый путь. Пустые входы, дублирующие запросы, тайм‑ауты, устаревшее состояние, повторные попытки и откат — особенно если изменение касается денег, авторизации или удаления данных.
Как ревьюить pull request, созданный ИИ?
Сначала убедитесь в объёме. Изменение должно решать одну проблему, имена и сообщения соответствовать продуктовой терминологии, и не должно быть неожиданного правления в auth, логах, биллинге или деплое. Затем убедитесь, что откат можно сделать быстро.
Какие ошибки делают быструю генерацию кода дорогой позже?
Большие PR, случайные библиотеки, слабые тесты и отсутствие объяснений часто дорого обходятся. Эти выборы экономят минуты сейчас и съедают часы на ревью, поддержку и исправления в продакшене.
Когда маленькой команде стоит привлечь внештатного CTO?
Когда команда спорит об архитектуре, правилах ревью или границах использования ИИ, внешнее мнение может быстро расставить приоритеты. Опытный внештатный CTO задаст ограничители и поможет двигаться быстрее без накопления долга. Если нужно внешнее сопровождение, Oleg Sotnikov делает подобные консультации для стартапов и малого бизнеса.