Уровни детализации
когда хватит одной строки, а когда нужно мини-ТЗ
Что это
Подробный запрос не всегда лучше короткого. На мелкой правке мини-ТЗ — это десять минут, потраченных вместо одной, а на большой задаче короткая строка оборачивается часом переделок.
Выбор уровня определяется не размером задачи, а ценой ошибки: сколько стоит получить не то. Статья даёт правило, по которому уровень выбирается за пару секунд.
Как выглядит в коде
Три уровня, от короткого к подробному.
Уровень 1. Одна строка
Для правок, которые видно глазом и которые легко откатить.
Переименуй get_data в fetch_weather во всём файле.Добавь логирование в начало каждого хендлера.Проверка занимает секунды: посмотрел дифф — принял или откатил. Расписывать тут нечего.
Уровень 2. Абзац
Рабочая лошадка. Обычная фича, которую надо вписать в существующий код.
В handlers/weather.py добавь кеш ответов погоды на 10 минут,
чтобы не дёргать API на каждый запрос. Храни в памяти, словарём
по названию города. Новых зависимостей не добавляй.Здесь уже есть все четыре части запроса, просто сжатые в три строки. Этого хватает в большинстве случаев.
Уровень 3. Мини-ТЗ
Для задач, которые трогают несколько файлов, меняют структуру данных или которые тяжело откатить.
Задача: перевести хранение подписок из JSON-файла в SQLite.
Контекст: сейчас подписки лежат в data/subs.json, читаются
функцией load_subs() в storage.py. Вызовов load_subs и save_subs
в проекте пять штук, все в handlers/.
Что нужно:
- таблица subscriptions: user_id, city, created_at
- те же функции load_subs/save_subs, сигнатуры не меняем,
чтобы хендлеры трогать не пришлось
- миграция: при первом запуске переносим данные из JSON,
файл переименовываем в subs.json.bak
Ограничения:
- только стандартный sqlite3, без ORM
- хендлеры не меняем вообще
Готово, когда: бот запускается на пустой базе, подписки из старого
JSON видны после перезапуска, а все пять вызовов работают как раньше.Длинно — и это окупается. Такую задачу с одной строки переделывают по три раза.
Как сказать ИИ
Правило выбора: смотри не на размер задачи, а на то, что будет, если выйдет не то.
| Цена ошибки | Уровень | Признак задачи |
|---|---|---|
| Секунды, видно глазом | строка | переименование, форматирование, один вызов |
| Минуты, легко откатить | абзац | новая функция, правка в одном файле |
| Полчаса и больше | мини-ТЗ | несколько файлов, структура данных, миграции |
Два вопроса, которые решают сомнения:
- Смогу ли я проверить результат, не вчитываясь в код? Если нет — нужен уровень выше, и в первую очередь критерий готовности.
- Легко ли откатить? Один коммит — откатывается легко. Миграция базы — нет.
На что смотреть
Мини-ТЗ на мелкую правку вредит. Чем больше текста, тем больше ИИ «помогает»: переписывает соседние функции, добавляет обработку случаев, о которых не просили. Короткая задача — короткий запрос.
Длина запроса не равна подробности. Три строки с версией фреймворка, именем файла и критерием готовности полезнее двадцати строк рассуждений о том, как было бы хорошо.
Уровень растёт по ходу работы. Начал со строки, получил не то — не дописывай к той же реплике, а сформулируй заново уровнем выше. Переписать дешевле, чем латать.
Шпаргалка
Уровень выбирается по цене ошибки, а не по размеру задачи.
Строка — видно глазом и легко откатить.
Абзац — обычная фича, рабочий режим.
Мини-ТЗ — несколько файлов, структура данных, миграции.
Не можешь проверить результат не читая код — уровнем выше.
Получил не то — формулируй заново, а не дописывай.