Перейти к основному содержанию
ИИ и автоматизация3 мин чтения

ИИ в разработке: что мы автоматизировали, а что оставили людям

ИИ-ассистенты действительно ускоряют разработку, но не там, где ожидают. Рассказываем, что мы им доверяем, а что проверяем вручную — и почему.

Размытые строки кода на тёмном экране редактора

Про ИИ-ассистентов в разработке говорят двумя способами: либо «программисты больше не нужны», либо «это игрушка, генерирующая мусор». Мы пользуемся ими каждый день в коммерческих проектах и видим, что верно ни то, ни другое. Ниже — конкретика без обеих крайностей.

Где ускорение реальное

Наибольший выигрыш даёт не написание сложной логики, а работа с шаблонным кодом и с незнакомыми областями. Ассистент экономит время там, где решение известно, но требует набора большого объёма текста или чтения документации.

Наши наблюдения по типам задач
Тип задачиУскорениеТребуется проверка
Шаблонный код, формы, типыВ 2–3 разаМинимальная
Тесты по готовой функцииВ 2 разаСредняя: проверяем полноту случаев
Разбор незнакомой библиотекиВ 2–4 разаОбязательно сверяем с документацией
Миграции и рефакторинг по шаблонуВ 1,5–2 разаСредняя
Бизнес-логика предметной областиПочти нетПолная
Оптимизация запросов и производительностиНетПолная, нужны замеры

Три проблемы, которые пришлось решать

Устаревшие API

Модель обучена на коде, которому в среднем год-два. Она уверенно предлагает подходы, которые в текущей версии фреймворка уже не работают. Особенно заметно на быстро меняющихся частях — например, в асинхронных параметрах маршрутов Next.js.

Что предлагает модель по памяти и что верно сейчас
// Устаревший вариант: в Next.js 15+ так больше не работает
export default function Page({ params }: { params: { slug: string } }) {
  const post = getPost(params.slug)
  return <Article post={post} />
}

// Актуальный вариант: params стал асинхронным
export default async function Page({
  params,
}: {
  params: Promise<{ slug: string }>
}) {
  const { slug } = await params
  const post = getPost(slug)
  return <Article post={post} />
}

Правдоподобно неверная логика

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

Пропущенные проверки безопасности

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

Отсутствие проверки владельца записи
// Сгенерированный вариант: делает, что просили, и открывает чужие данные
export async function getOrder(orderId: string) {
  return db.orders.findUnique({ where: { id: orderId } })
}

// Что нужно: запрос всегда ограничен текущим пользователем
export async function getOrder(orderId: string) {
  const session = await auth()
  if (!session) throw new Error("Требуется авторизация")

  return db.orders.findUnique({
    where: {
      id: orderId,
      // Без этого условия любой авторизованный пользователь
      // получит доступ к заказу по номеру
      userId: session.user.id,
    },
  })
}

Как мы выстроили работу

  1. Ассистент пишет черновик, разработчик отвечает за результат. Ответственность не делится с инструментом.
  2. Всё, что касается прав доступа, платежей и персональных данных, пишется и проверяется вручную.
  3. Каждое обращение к внешнему API сверяется с текущей документацией, а не принимается на веру.
  4. Сгенерированные тесты проверяются на полноту: модель охотно пишет проверки удачного пути и забывает про ошибочные.
  5. Ревью проходит весь код одинаково, независимо от того, кто его набрал.

Ассистент ускоряет набор кода, но не думает за инженера. Ответственность за то, что попадёт в продакшен, остаётся на человеке целиком.

Что это значит для заказчика

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

Если подрядчик обещает сократить проект в пять раз «потому что мы используем ИИ», это повод задать вопрос, за счёт какого именно этапа. Обычно за счёт того, который потом придётся переделывать.

Частые вопросы

Ускоряют ли ИИ-ассистенты разработку на самом деле?
Да, но неравномерно. Шаблонный код, типы, тесты и разбор незнакомых библиотек ускоряются в два-три раза. Бизнес-логика предметной области и оптимизация производительности практически не ускоряются, поскольку требуют понимания контекста конкретного проекта.
Какие риски у кода, написанного ИИ?
Три основных: обращение к устаревшим версиям API, правдоподобно выглядящая ошибка в граничном случае и пропущенные проверки безопасности — например, отсутствие ограничения запроса по владельцу записи. Поэтому весь код проходит обычное ревью, а участки с правами доступа и платежами пишутся вручную.
Сокращает ли использование ИИ стоимость разработки?
Стоимость типовых этапов действительно снижается. Но сроки задач, требующих понимания бизнеса заказчика, определяются интервью, согласованиями и проверкой гипотез, а не скоростью набора кода. Обещание сократить проект в разы «за счёт ИИ» обычно означает экономию на этапе, который придётся переделывать.
внедрение ИИразработкаинструментыкачество кода

Похожая задача в вашем проекте?

Разберём вашу ситуацию и пришлём оценку по этапам — без обязательств и общих слов.

Обсудить задачу

Вопрос по статье
или по своему проекту

Отвечаем на заявки в течение одного рабочего дня. Если задача не наша — скажем прямо и подскажем, к кому обратиться.

Написать нам

Поля со звёздочкой обязательны для заполнения.