Goal describes the state after the task

A Goal should describe a state after completion rather than a general intention such as “improve the process.” It answers: who benefits, what behavior changes, where it is visible, and what must remain unchanged.

The goal describes system behavior, not a list of files, classes, or technical steps. It is better to leave the implementation approach to the plan.

Goal formula
user or role
+ new behavior
+ where it appears
+ stabilizer (what must not change)

From a vague request to a verifiable goal

VagueMore verifiable
Improve the return process.An operator can add an optional comment to a refund-request.
Make the form more convenient.The comment appears in the return details for financial review.
Add the notes field.The value is saved and passed in the refund.created event.

Goal block template

  1. Identify the task type: feature, bugfix, refactoring, tests, documentation, investigation, or migration.
  2. Name the user, role, or component that will receive the result.
  3. Describe the new or corrected behavior.
  4. Specify where the result can be observed.
  5. Add readiness signals and the critical behavior that must not change.
## Goal

[Role] gets the ability to [action or result].
The change is visible in [interface, API, event, or documentation].
Readiness is confirmed by [observable signs].
At the same time, [behavior that remains unchanged].

Goal for different task types

TypeResult
New featureNew behavior available to the user or system
BugfixA defect removed and the correct scenario confirmed
RefactoringInternal structure changed without changing external behavior
TestsA repeatable protective scenario
InvestigationA conclusion supported by analysis and evidence

What is not a Goal

  • Scope is the parts of the system covered by the work.
  • Constraints are the rules and prohibitions during execution.
  • A solution is a specific implementation approach.
  • A wish is a general assessment without a verification criterion.

Canonical lesson source · JavaRush

Open JavaRush material