Впервые за несколько месяцев я вырубил GitHub Copilot. Не потому что он плох — просто мой текущий таск требует думать, а не генерировать. Это странное чувство, когда привыкаешь к автодополнению на стероидах, а потом возвращаешься к «голому» редактору.
Когда AI помогает, а когда мешает
На проекте с унаследованным AngularJS-кодом Copilot был спасением — он угадывал шаблонные $scope-биндинги быстрее, чем я успевал их печатать. Но сейчас я проектирую систему событий для Web Components, и здесь каждый триггер должен быть продуман до миллисекунды.
AI начинает предлагать:
- Очевидные, но бесполезные варианты (спасибо, я и сам знаю про
addEventListener) - Решения из чужих парадигм (React-хуки в нативном JS)
- Опасные антипаттерны (синхронные dispatchEvent в середине жизненного цикла)
Пример реального провала:
// Что предложил Copilot
element.dispatchEvent(new CustomEvent('update', {
detail: data,
bubbles: true,
cancelable: true
}));
// Почему это плохо:
// 1. Не учитывает фазу жизненного цикла компонента
// 2. Detail передаётся по ссылке — риск мутаций
// 3. Cancelable без реальной стратегии отмены
Vibe coding vs. точные спецификации
Есть задачи, где AI-ассистенты работают идеально — например, при прототипировании или написании тестов. Я называю это «vibe coding»: когда точный результат не важен, а нужно быстро набросать структуру.
Но как только требуется соблюдение:
- Строгих перформанс-ограничений
- Специфичных конвенций кода
- Нюансов браузерных API
… начинается боль. Cursor (который я пробовал вместо Copilot) особенно грешит «креативными» интерпретациями. Он может заменить простой for...of на Array.reduce с side effects, потому что «так функциональнее».
Agentic workflow: как я научился делегировать
После месяца проб и ошибок выработались правила:
- Для boilerplate кода (сервисы, утилиты) → Copilot + ChatGPT
- Для рефакторинга → только после ручного анализа AST через ESLint
- Для архитектурных решений → чистый редактор + Excalidraw
Сюрпризом стало, что для TypeScript-трансформаций AI часто полезнее, чем для ванильного JS. Он неплохо справляется с:
- Генерацией типов из JSON-схем
- Автодополнением дженериков
- Подсказками по utility-типам
Но ключевое слово здесь — «помощник». Как только пытаешься переложить на него принятие решений, получается дорогостоящий техдолг.
Что попробовать в 2024
Из новинок, которые выглядят перспективно:
- RAG-интеграции для company-specific knowledge (вместо обучения на публичном коде)
- MCP-анализ (Multi-Criteria Prompting) — когда AI получает не одну, а несколько точек принятия решений
- Локальные модели типа CodeLlama для sensitive-кода
Главный урок: AI-ассистенты не заменяют экспертизу, они меняют её фокус. Вместо запоминания API теперь важно уметь:
- Формулировать constraints для промптов
- Быстро валидировать предложения
- Различать, когда нужен speed coding, а когда — глубокая проработка
P.S. Через два часа после отключения Copilot я поймал себя на том, что вручную пишу JSDoc для метода, который никогда не будет reused. Старые привычки умирают тяжело.
Попробуй сам: Cursor — AI-редактор для разработчиков.