Claude Certified Architect · Модуль 3 · Урок 3.5
Техники итеративного уточнения
Суть
Конкретные пары вход/выход эффективнее прозаических описаний для задания преобразований: модель обобщает по примерам, а не по инструкциям. Тест-ориентированная итерация использует падающие тесты как однозначный сигнал, что менять.
Пакет против последовательности
Взаимосвязанные проблемы чините одним сообщением; независимые — последовательно. Итеративная регрессия (починил одно — сломал другое) — признак неполных критериев приёмки. Паттерн интервью поднимает соображения дизайна до реализации, снижая слепые зоны.
Вход: { "created": "2024-01-15T14:30:00Z" }
Выход: { "created": "Jan 15, 2024 at 2:30 PM UTC" }
Вход: { "created": 1705329000 }
Выход: { "created": "Jan 15, 2024 at 2:30 PM UTC" }
Вход: { "created": null }
Выход: { "created": "Unknown" }Anti-patterns
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
| Описывать преобразование прозой при нестабильном результате | Проза трактуется по-разному; модель обобщает по примерам | Дать 2–3 конкретные пары вход/выход, включая краевые случаи |
| Слать взаимосвязанные баги по одному | Каждый фикс меняет состояние; второй фикс может обнулиться первым | Все взаимосвязанные — одним сообщением; последовательно лишь независимые |
| Сначала реализация, потом тесты «для проверки» | Такие тесты подгоняются под реализацию; краевые случаи теряются | Сначала набор тестов на поведение; итерировать, делясь падающими тестами |
Exam traps
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
| Проза там, где для стабильности нужны примеры | Неоднозначность сохраняется | Конкретные пары вход/выход |
| Чинить взаимосвязанное последовательно | Промежуточное состояние рождает новые ошибки | Пакетировать взаимосвязанные правки |
| Итерация без полных критериев приёмки | Цикл «починил — сломал» | Определить полный чек-лист приёмки до итерации |
Практическое задание (T5)
- Найти задачу-преобразование, где проза даёт нестабильный вывод; заменить 3 конкретными парами и измерить рост стабильности.
- Написать набор тестов до реализации; итеративно делиться падающими тестами, пока все не пройдут.
- Применить паттерн интервью к незнакомой области (напр. «распределённая блокировка») и отметить вопросы дизайна, которые всплыли.
- Найти 2 взаимосвязанных бага; починить одним сообщением; сравнить с последовательным и увидеть проблему промежуточного состояния.
- Задокументировать свои эвристики уточнения: когда тянуться к каждой из четырёх техник.
Проверка знаний
Продуктивность разработчика с Claude
Разработчик просит «привести все ответы API к единому формату». Claude выдаёт разные форматы: где camelCase, где snake_case, где вложенно, где плоско. Как эффективнее всего донести ожидаемое преобразование?
Верный ответ: C
C верно. Конкретные пары вход/выход — самая эффективная спецификация, когда проза даёт разнобой: они показывают точную форму и позволяют верно обобщить. A не снимает неоднозначность — «плоско» и «camelCase» всё ещё недоопределены. B полезна, но не решает недоспецифицированность. D никогда не является верным подходом.
Продуктивность разработчика с Claude
Рефакторинг модуля аутентификации. Первая попытка — верная структура, но устаревшая JWT-библиотека. После «используй jose вместо jsonwebtoken» вторая теряет multi-tenant claim tenant_id. К третьей пропадает другое обязательное поле. Каждая итерация чинит одно и ломает другое. Корень и решение?
Верный ответ: B
B верно. Регрессия «починил — сломал» возникает при частичных критериях успеха; каждая узкая правка рождает новую слепую зону. Полный чек-лист до итераций оценивает каждую попытку по всем требованиям. A — дело не в сложности, а в неполных критериях. C — все правки и так в истории диалога. D — параллельные прогоны без полной спецификации дадут те же регрессии.
Продуктивность разработчика с Claude
Просят сгенерировать REST-эндпоинт. Первый черновик — хороший happy path, без валидации ввода. После 6 последовательных правящих промптов эндпоинт уже не очевидно лучше первого черновика. Какой подход к уточнению был бы эффективнее?
Верный ответ: C
C верно. Оценка по полной рубрике и один комплексный правящий промпт разрывают цикл регрессии: фикс валидации не задевает коды ошибок, раз они заданы вместе. Последовательные одиночные правки рождают слепые зоны. A идеально, но часто невозможно — детали проясняются лишь на черновике. B теряет выгоду итерации. D — про контекст, не про качество правок.