Разработка с AI

Debugging с AI: От 'Не работает' до решения

Debugging занимает до 50% времени разработчика. Stack Overflow помогает, но нужно найти правильный вопрос. AI понимает твой контекст и генерирует гипотезы специально для твоего бага. Это меняет правила игры.

  • **Описание бага**: Expected/Actual/Steps/Context/Attempts — AI понимает структуру
  • **Систематический подход**: Гипотезы по вероятности, последовательная проверка
  • **Rubber Duck**: AI задаёт вопросы, ты находишь ответ сам
  • **Паттерны**: AI видел миллионы 'Cannot read property of undefined'

Предварительные знания

  • Prompt Engineering: The Art of Asking the Right Questions

Искусство описания бага

'Не работает' - худшее описание бага. 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 errorBackend не отправляет правильные headers
Connection refusedСервис не запущен или неправильный порт
TimeoutСеть, долгий query, или deadlock
Memory leakEvent listeners не удаляются, циклические ссылки
Race conditionAsync код без правильной синхронизации

**Важно:** 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 для текущей проблемы. Помогло?

Связанные уроки

  • se-01
Debugging с AI: От 'Не работает' до решения

0

1

Войти