Definition of Ready (DoR) is a set of criteria that it is recommended to meet when defining a task before handing it over to a developer for implementation.

DoR helps to:

  • avoid ambiguity in requirements
  • reduce rework during development
  • speed up delivery and prevent analysis paralysis
  • make planning more accurate and predictable
  • improve the overall quality of the final result

Core DoR Criteria

1. Acceptance Criteria

Answers the question: What must be implemented for the task to be considered complete?

  • Verifiable, specific, and behavior-oriented: “User can do X”, “System must not do Y”
  • Includes both positive and negative scenarios
  • Written in behavioral terms; focuses on outcomes, not implementation
  • Supports writing manual and automated tests
  • May include non-functional requirements (performance, scalability, etc.)

Examples:

  • Bad: “Make it convenient”
  • Good: “User can change password without reloading the page”

Tip: Use BDD (Given-When-Then) to describe behavior in scenarios.

Feature: Backup  
Scenario: Only selected folders  
Given: Folders A and B exist  
When: I exclude B from the backup  
And: I start the process  
Then: Only folder A is saved

2. Business Value

  • Why is this task needed? What problem does it solve? Who is the end user?
  • Helps prioritize, especially with limited resources
  • Preferably names the business owner or someone who can clarify the value
  • Considers client commitments, deadlines, and stakeholder interests

Tip: Use the User Story format to express business context: “As a [role], I want to [action], so that [goal]”

Example: “As a content manager, I want to see the moderation status so I can quickly review new materials.”

3. Specifications

Answers the question: How should the behavior described in the acceptance criteria look and work?

  • Includes mockups, UX flows, APIs, display rules, edge cases, diagrams
  • Must be clear and agreed upon with the team
  • Ideas for implementation should be noted separately as comments—not replace specs

Understanding the difference:

  • Acceptance Criteria = what to build
  • Specifications = how it should look and behave

Example:

Acceptance Criterion:

  • “User can change password without reloading the page.”

Specification:

  • Figma mockup of the password change form
  • POST /user/password with { old_password, new_password }
  • Validation messages: “Password must be at least 8 characters”
  • After password change: force logout from all sessions

4. Work Estimation

Work estimation assesses complexity, not precise duration in hours or minutes.

  • Typically done in story points or a virtual scale (e.g., 1–10)
  • Covers all stages from DoR to DoD: development, testing, documentation
  • It’s an approximation, not a commitment; update estimates if the task changes

5. For Bugs and Research Tasks

Bugs:

  • Description of expected vs actual behavior
  • Steps to reproduce
  • Screenshots, logs, errors

Estimation:

  • If the bug is clear—give an estimate
  • If not—use timeboxing: “We’ll investigate the bug for 2 days. If unresolved, we’ll reassess the priority”

Tip: One bug — one ticket. Link related bugs if needed.

6. Constraints and Conditions

  • Technical: “Only works on PostgreSQL 12”
  • Organizational: “Cannot add new dependencies”
  • Product-related: “Only for users in Kazakhstan”

Tip: Anything that might affect implementation should be explicitly stated upfront—especially if developers or analysts may rotate.

Suggested Task Template Structure

  • Description
  • Priority
  • Expected and actual behavior (for bugs)
  • Steps to reproduce (for bugs)
  • Personas / User Story
  • Initial solution proposal
  • Mockups / Design
  • Acceptance Criteria
  • Work Estimation
  • Test Plan
  • Points of Contact