Три частини опису задачі
`Goal` показує напрямок, але не пояснює розрив між поточним і цільовим станом. Для цього окремо фіксують `Current behavior` і `Desired behavior`.
Поточний стан описує спостережувані факти без передчасних висновків про причину. Бажаний стан має бути таким, щоб його можна було перевірити після реалізації.
| Блок | Питання |
|---|---|
| Goal | Навіщо потрібна зміна? |
| Current behavior | Що відбувається зараз? |
| Desired behavior | Що має відбуватися після зміни? |
Факти поточної поведінки
Для багфіксу зафіксуйте точку входу, кроки відтворення, фактичний результат, середовище, workaround і вплив. Для фічі опишіть, з яким обмеженням стикається користувач і як проблему обходять зараз.
На /login вводять правильний email і неправильний пароль.
Після submit сторінка стає порожньою.
Повідомлення про помилку не показується.
Проблема відтворюється локально та на staging. Desired behavior має бути спостережуваним
- користувач залишається на сторінці входу після неправильного пароля;
- форма не зникає й не очищується без потреби;
- під полем пароля зʼявляється зрозуміле повідомлення;
- успішна авторизація працює так само, як раніше.
Evidence проти hypothesis
| Тип | Приклад |
|---|---|
| Evidence | Екран стає порожнім після submit |
| Evidence | У логах є конкретний виняток |
| Evidence | У схемі БД відсутня колонка |
| Hypothesis | Причина може бути у backend-валідації |
| Hypothesis | Подія може формуватися без нового поля |
Facts-first workflow
- Запишіть Goal, Current behavior і Desired behavior.
- Окремо позначте гіпотези, які ще потрібно перевірити.
- Зберіть логи, кроки відтворення та інші докази.
- Попросіть Claude спочатку розділити факти й припущення без редагування коду.
- Перевірте код, схему, обробники, API та події.
- Лише після підтвердження причин переходьте до плану і правок.
- Перевірте кожен пункт Desired behavior окремо.
## Гіпотези для перевірки
- Причина може бути у backend-валідації.
- Спочатку перевір її в коді, потім внось зміни. Канонічне джерело уроку · JavaRush
Відкрити матеріал JavaRush