Разработка с AI
Debugging с AI: От 'Не работает' до решения
Debugging занимает до 50% времени разработчика. Stack Overflow помогает, но нужно найти правильный вопрос. AI понимает твой контекст и генерирует гипотезы специально для твоего бага. Это меняет правила игры.
- **Описание бага**: Expected/Actual/Steps/Context/Attempts — AI понимает структуру
- **Систематический подход**: Гипотезы по вероятности, последовательная проверка
- **Rubber Duck**: AI задаёт вопросы, ты находишь ответ сам
- **Паттерны**: AI видел миллионы 'Cannot read property of undefined'
Предварительные знания
Искусство описания бага
'Не работает' - худшее описание бага. AI не телепат. Качество помощи прямо зависит от качества описания проблемы.
**Формула описания бага:** 1. **Expected**: Что должно происходить? 2. **Actual**: Что происходит на самом деле? 3. **Steps**: Как воспроизвести? 4. **Context**: Окружение, версии, данные 5. **Attempts**: Что уже пробовал?
**Ключевой момент:** Error message и stack trace - это золото. Всегда включай их в описание. AI умеет читать stack traces.
Запрос к API возвращает пустой массив вместо данных. Что включить в описание для AI?
Систематический debugging с AI
AI - отличный помощник для **систематического** debugging. Вместо хаотичного 'попробую это' - структурированный подход.
**Промпт для систематического debugging:** 'Помоги отладить проблему систематически. [Описание бага] 1. Какие гипотезы наиболее вероятны? 2. Как проверить каждую гипотезу? 3. Начнём с самой вероятной.'
**Преимущества систематического подхода:**
- Не тратишь время на маловероятные причины
- Документируешь процесс debugging
- Учишься на каждом баге
- AI помогает генерировать гипотезы, которые ты мог упустить
AI предложил 3 гипотезы. Первая - 80% вероятность, третья - 5%. С какой начать?
Rubber Duck Debugging с AI
**Rubber Duck Debugging** - объясняешь проблему 'утёнку' (или коллеге), и в процессе объяснения сам находишь решение. AI - идеальная 'утка'.
**Почему это работает:** 1. Формулирование проблемы заставляет структурировать мысли 2. AI задаёт уточняющие вопросы 3. Ответы на вопросы часто приводят к озарению 4. AI может заметить то, что ты упустил
**Промпт для Rubber Duck сессии:**
Ты объясняешь баг AI и вдруг понимаешь причину сам. Что произошло?
Распознавание паттернов ошибок
Опытные разработчики быстро находят баги потому, что узнают **паттерны**. AI видел миллионы багов и знает эти паттерны.
**Промпт для распознавания паттерна:** 'Ошибка: [error message] Это похоже на какой-то известный паттерн? Какие типичные причины этой ошибки? Как обычно решают?'
**Частые паттерны ошибок:**
| Ошибка | Типичная причина |
|---|---|
| CORS error | Backend не отправляет правильные headers |
| Connection refused | Сервис не запущен или неправильный порт |
| Timeout | Сеть, долгий query, или deadlock |
| Memory leak | Event listeners не удаляются, циклические ссылки |
| Race condition | Async код без правильной синхронизации |
**Важно:** AI узнаёт паттерн, но решение зависит от контекста. 'CORS error' решается по-разному для dev vs prod, для SPA vs SSR.
AI найдёт любой баг за меня
AI помогает систематизировать поиск и узнаёт паттерны, но ты должен понимать код
AI не видит твою систему целиком. Он не знает, что PR #234 изменил схему БД. Контекст и ownership за тобой.
Ошибка 'ECONNREFUSED 127.0.0.1:5432'. Какой паттерн?
Ключевые идеи
- **Качество описания = качество помощи**. Expected/Actual/Steps/Context/Attempts
- **Систематический debugging**: Гипотезы по вероятности, проверка от вероятного к маловероятному
- **Rubber Duck с AI**: Объяснение проблемы часто приводит к решению
- **Паттерны ошибок**: AI знает типичные причины типичных ошибок
- **Контекст за тобой**: AI не видит всю систему, ты должен направлять
Куда дальше?
Debugging - это реактивная работа. Дальше - проактивные практики:
- Тестирование с AI — Предотвращение багов через тесты
- Документирование с AI — Фиксация решений для будущего
- Обучение с AI — Углубление понимания после дебага
Вопросы для размышления
- Вспомни последний сложный баг. Как бы ты описал его для AI по формуле Expected/Actual/Steps/Context?
- Какие паттерны ошибок ты встречаешь чаще всего в своих проектах?
- Попробуй Rubber Duck сессию с AI для текущей проблемы. Помогло?