ГлавнаяПроекты
AI в разработке

Основные проблемы использования LLM и Cursor в разработке: честный разбор без хайпа

16 Декабря 202510 мин чтения Pavel Katskov, Founder of Katskov Tech

LLM-инструменты вроде Cursor стремительно ворвались в повседневную разработку. Они обещают ускорение, снижение рутины и «продуктивность x10».

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

Введение

LLM отлично справляются с генерацией шаблонного кода, поиском идей и быстрым прототипированием. Однако при долгосрочной разработке продуктов они начинают влиять не только на код, но и на поведение разработчиков и процессы внутри команды. Цель статьи — систематизировать основные проблемы, с которыми мы столкнулись при использовании LLM и Cursor в продакшене, и показать, где именно возникают риски. После прочтения вы получите: • понимание ключевых технических и процессных проблем, • реальные примеры из командной практики, • рекомендации, где LLM стоит ограничивать или использовать осознанно.

1. Генерация плохого кода

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

typescript
function processUser(data: any) {
  if (data && data.user && data.user.profile && data.user.profile.name) {
    return data.user.profile.name;
  }
  return null;
}

Формально код работает. Но: • any маскирует ошибки, • логика плохо масштабируется, • отсутствуют явные контракты. LLM редко задаётся вопросом «а зачем это так сложно?».

2. Непростые и неочевидные решения

Cursor часто предлагает решения, которые: • сложно читать; • трудно отлаживать; • невозможно быстро объяснить на код-ревью. Причина проста: модель оптимизирует ответ под запрос, а не под долгосрочную поддержку. В результате: • возрастает когнитивная нагрузка, • падает скорость внесения изменений, • увеличивается время на онбординг новых разработчиков.

3. Разный код-стайл в разных местах проекта

Даже при наличии ESLint, Prettier и style guides код, сгенерированный LLM: • использует разные паттерны для одной и той же задачи; • смешивает стили (functional / OOP); • игнорирует архитектурные договорённости проекта. Пример: • в одном модуле — async/await, • в другом — цепочки then, • в третьем — кастомные хелперы без причины. Итог — визуальный и архитектурный шум, который сложно устранить автоматически.

4. Провоцирует программистов не смотреть код

Одна из самых опасных проблем — поведенческая. Cursor снижает порог «вставить код», но: • разработчик не всегда читает, что именно он вставил; • пропускаются ошибки в логике и безопасности; • code review превращается в формальность. Мы наблюдали ситуации, когда: • баг находили спустя недели, • никто в команде не мог объяснить, как работает участок кода. LLM усиливает иллюзию контроля, но не гарантирует понимания.

5. Не подходит для поддержки проектов

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

Выводы

LLM и Cursor — это инструмент ускорения, но не замена инженерному мышлению. Ключевые takeaways: • LLM часто генерируют работающий, но плохой код; • они усложняют архитектуру и поддержку; • провоцируют отказ от осознанного чтения кода; • в долгой перспективе увеличивают стоимость изменений.

Если вы используете LLM в разработке:

  • Проверяйте и адаптируйте код, сгенерированный LLM, исходя из архитектурных стандартов проекта;
  • Ограничивайте использование LLM для сложных или критичных частей системы — полагайтесь на экспертизу команды;
  • Используйте LLM как ускоритель прототипирования, но не как источник окончательных решений — всегда проводите ревью.
Заказать проект

FAQ

Можно ли полностью отказаться от LLM?

Можно, но не обязательно. Важно — осознанное и ограниченное использование.

Подходит ли Cursor для senior-разработчиков?

Да, если использовать его как ассистента, а не генератор готовых решений.

Помогают ли линтеры и тесты?

Частично. Они не решают проблему архитектуры и читаемости.