Joining the Backend Team

Definition of Done

ReadingPreview

আপনি একটি free preview lesson দেখছেন।

এখন পর্যন্ত আমরা requirement বুঝেছি, user stories এবং acceptance criteria লিখেছি, এবং আমাদের engineering context establish করেছি।

এখন একটি important question:

একটি engineering task কখন সত্যিই complete?

শুধু code লেখা শেষ হলে?

Local machine-এ run করলে?

Tests pass করলে?

Pull Request merge হলে?

Production-এ deploy হলে?

Real engineering team-এ "done" শব্দটির clear meaning থাকা দরকার।

এই lesson-এ আমরা Definition of Done, বা সংক্ষেপে DoD, establish করব।

এটি আমাদের পুরো course project-এ একটি shared quality bar হিসেবে কাজ করবে।


Why "Done" Is Ambiguous

ধরে নিন engineer বলল:

BACKEND-104 is done.

কিন্তু "done" বলতে সে কী বোঝাচ্ছে?

Possibility:

I finished writing the code.

অথবা:

The code compiles.

অথবা:

I tested the happy path manually.

অথবা:

The Pull Request is open.

অথবা:

The Pull Request has been merged.

অথবা:

The change has been deployed successfully.

সবগুলো আলাদা state।

যদি team-এর প্রত্যেকের "done" সম্পর্কে আলাদা interpretation থাকে, planning এবং delivery unreliable হয়ে যায়।


Definition of Done কী?

Definition of Done হলো team-এর shared agreement:

কোন minimum conditions satisfy হলে একটি work item complete হিসেবে consider করা যাবে।

For example, একটি backend task-এর জন্য team বলতে পারে:

Implementation completed

Acceptance criteria satisfied

Relevant automated tests added

Existing tests pass

Code reviewed

Required documentation updated

CI passes

এই list feature-specific behaviour নয়।

এটি team-wide quality expectation।


Acceptance Criteria vs Definition of Done

এই দুইটি concept খুব সহজে confuse হতে পারে।

ধরা যাক story:

As a customer,
I want to cancel an eligible order,
so that I can stop an order I no longer want.

Acceptance Criteria হতে পারে:

A customer may cancel their own unpaid order.

A paid order cannot be cancelled in v1.

Cancelling an order restores reserved inventory.

An already-cancelled order cannot be cancelled again.

এগুলো feature behaviour

অন্যদিকে Definition of Done:

Relevant tests exist.

Code is reviewed.

CI passes.

Documentation is updated where needed.

এগুলো delivery quality

So:

Acceptance Criteria
      ↓
Is the feature behaviour correct?
Definition of Done
      ↓
Has the work been completed to the team's quality standard?

A Feature Can Satisfy Acceptance Criteria but Still Not Be Done

Suppose engineer order cancellation implement করেছে।

Behaviour correct।

Manual testing-এ কাজ করছে।

Acceptance Criteria satisfy করছে।

কিন্তু:

no automated tests
PR review হয়নি
CI failing

তাহলে feature behaviour correct হলেও work team standard অনুযায়ী complete নয়।

এটাই Definition of Done-এর value।


Definition of Done Is Not a Personal Checklist

DoD ideally individual engineer-এর personal preference নয়।

এটি team agreement।

Why?

Because one engineer যদি বলে:

I don't usually write integration tests.

আরেকজন যদি বলে:

I consider every feature incomplete without them.

তাহলে quality inconsistent হবে।

Shared DoD expectation align করে।


Our Course Project Definition of Done

আমাদের Order Management Backend-এর জন্য আমরা একটি practical Definition of Done ব্যবহার করব।

সব item-এর জন্য সব point একইভাবে apply নাও করতে পারে।

কিন্তু default quality bar হবে:

1. The agreed scope is implemented.

2. Acceptance criteria are satisfied.

3. Relevant validation and failure behaviour are handled.

4. Relevant automated tests are added or updated.

5. Existing automated tests pass.

6. The code builds successfully.

7. The change follows the project's established design and conventions.

8. Required database migrations are included when persistence changes.

9. Required API documentation is updated when API behaviour changes.

10. Required technical documentation is updated when the change affects documented decisions or behaviour.

11. The change is reviewed through a Pull Request.

12. Review feedback is resolved.

13. CI passes.

14. The change is safe to merge according to the known scope and risks.

Later, deployment-related work-এর ক্ষেত্রে rollout এবং production verification-এর additional conditions থাকতে পারে।

কিন্তু Module 1-এর জন্য এটিই আমাদের baseline।


1. The Agreed Scope Is Implemented

প্রথম condition obvious মনে হতে পারে।

কিন্তু common problem হলো engineer ticket-এর কিছু অংশ implement করে এবং কিছু silently skip করে।

Example ticket:

Allow administrators to deactivate products.

Suppose acceptance criteria:

Administrator can deactivate a product.

Deactivated products cannot be ordered.

Historical orders remain unchanged.

Engineer শুধু:

product.active = false

implement করল।

কিন্তু order creation এখনও inactive product allow করছে।

তাহলে code আছে, কিন্তু agreed scope implement হয়নি।


Do Not Implement More Than the Agreed Scope Either

Definition of Done শুধু missing behaviour prevent করে না।

Scope creep-ও avoid করতে সাহায্য করে।

Suppose ticket:

Allow administrators to deactivate products.

Engineer additionally implement করল:

product deletion
archiving
scheduled activation
bulk import
product version history

এগুলো useful হতে পারে।

কিন্তু requested work-এর অংশ নয়।

Extra functionality:

more code
more tests
more review
more risk
more maintenance

create করে।

Done হওয়ার goal হলো agreed work complete করা, unrelated feature add করা নয়।


2. Acceptance Criteria Are Satisfied

Acceptance Criteria আমাদের feature-level contract।

Implementation complete বলার আগে engineer ideally প্রতিটি criterion review করবে।

Example:

AC-1
An order must contain at least one item.

AC-2
Every referenced product must exist.

AC-3
Quantity must be positive.

AC-4
Requested inventory must be sufficient.

Completion review:

AC-1 → implemented and tested

AC-2 → implemented and tested

AC-3 → implemented and tested

AC-4 → implemented and tested

এটি simple habit, কিন্তু missed behaviour significantly reduce করতে পারে।


3. Failure Behaviour Must Be Considered

Happy path implementation enough নয়।

Suppose ticket:

Integrate payment provider.

Happy path:

Provider returns success
    ↓
Order marked paid

কিন্তু known failure cases:

payment declined

provider error

timeout

যদি ticket-এর agreed scope এসব include করে, Done হওয়ার আগে behaviour handle করতে হবে।

আমাদের principle:

A backend feature is not complete if only its easiest execution path works.


4. Relevant Automated Tests Must Exist

Testing আমাদের Definition of Done-এর core part।

"Relevant" word important।

প্রতিটি method-এর জন্য test লিখতে হবে—এমন rule নয়।

বরং important behaviour এবং risk protect করতে tests ব্যবহার করব।

Examples:

Order total calculation
→ domain/unit test
Order creation with database
→ integration test
Customer cannot access another customer's order
→ API/security integration test
Payment provider failure behaviour
→ controlled integration/service test

Test type problem-এর উপর depend করবে।


Why Manual Testing Is Not Enough

Manual testing useful।

বিশেষ করে development-এর সময়।

কিন্তু only manual verification-এর problem:

not automatically repeatable
easy to forget
regression detection is poor

আজ feature কাজ করছে।

দুই মাস পরে অন্য engineer change করল।

Automated test থাকলে expected behaviour automatically verify করা যায়।


Tests Should Protect Behaviour

Bad testing mindset:

Every class needs a test because coverage must increase.

Better:

Which behaviour would be expensive or dangerous to break?

For our project:

inventory cannot become invalid
order total must be correct
customer ownership must be enforced
failed payment cannot mark order paid

এগুলো strong candidates।


5. Existing Tests Must Still Pass

New feature-এর tests pass করছে, কিন্তু existing test fail করছে।

Then work is not Done।

Why?

Because software change isolated নয়।

New behaviour existing behaviour break করতে পারে।

Example:

New cancellation logic added

কিন্তু existing test:

Paid orders remain active

fail করছে।

এটি regression।

So DoD includes:

existing automated tests pass

Regression কী?

Regression হলো এমন situation যেখানে নতুন change-এর কারণে previously working behaviour break হয়ে যায়।

Example:

Before:

Product browsing works.

After inventory-related refactor:

Product browsing returns no products.

New feature may work।

But overall system worse হয়েছে।

Automated regression tests এই ধরনের issue catch করতে সাহায্য করে।


6. The Application Must Build Successfully

Developer IDE-তে code run করছে।

কিন্তু clean build fail করছে।

Example:

./gradlew build

fails।

Then change complete নয়।

Why?

Because:

local IDE state

এবং:

reproducible project build

same thing নয়।

Our source repository should contain enough information for automated environment to build the application।


Clean Build Matters

Engineer-এর machine-এ previous generated file বা cached dependency accidentally available থাকতে পারে।

CI clean environment-এ সেই hidden dependency থাকবে না।

এই reason-এ build pipeline গুরুত্বপূর্ণ।


7. Project Conventions Must Be Followed

Suppose project-এর established pattern:

Controller
    ↓
Application/Service logic
    ↓
Domain
    ↓
Persistence

কিন্তু new engineer সব business logic controller-এর মধ্যে লিখে দিল।

Feature work করতে পারে।

Tests pass-ও করতে পারে।

কিন্তু maintainability degrade হয়।

Definition of Done-এ তাই established architecture এবং conventions follow করার expectation থাকে।


Convention Does Not Mean Blind Copying

Project convention follow করা গুরুত্বপূর্ণ।

কিন্তু existing pattern obviously problematic হলে blindly copy করা নয়।

Engineer should raise concern।

For example:

Existing code duplicates validation everywhere.

তখন discussion প্রয়োজন হতে পারে।

কিন্তু একটি ticket implement করার সময় silently completely new architecture introduce করাও risky।


8. Database Changes Need Migrations

Suppose feature নতুন field require করে।

Developer local database manually alter করল:

ALTER TABLE orders ADD COLUMN status VARCHAR(50);

Application তার machine-এ কাজ করছে।

কিন্তু migration file নেই।

Then অন্য environment জানবে না schema কীভাবে update করতে হবে।

Definition of Done:

Persistent schema change হলে corresponding versioned migration থাকতে হবে।

আমাদের project-এ Flyway ব্যবহার করা হবে।


Application Code and Schema Must Move Together

Imagine:

New application version expects orders.status

কিন্তু deployment database-এ column নেই।

Result:

application failure

Versioned migration application evolution এবং database evolution coordinate করতে সাহায্য করে।


9. API Changes Need Documentation

Suppose new endpoint:

POST /orders

implement হলো।

কিন্তু API contract documentation update হয়নি।

অন্য client team কীভাবে জানবে:

request shape

response shape

validation rules

possible errors

?

Later আমরা OpenAPI ব্যবহার করব।

API behaviour change হলে API documentation/code contract sync থাকতে হবে।


Documentation Should Be Relevant

Definition of Done-এ:

Documentation updated

বললেই every ticket-এর জন্য README rewrite করা নয়।

Only relevant documentation।

Examples:

API behaviour change

Update API documentation।

Important architecture decision change

Update ADR/RFC where appropriate।

Deployment configuration change

Update operational documentation where needed।

Pure internal refactor with no external impact

Maybe no documentation update required।


Documentation Is Part of the System

A common mistake:

Code is the real work.
Documentation is optional.

But certain knowledge code থেকে easy বোঝা যায় না।

For example:

Why did we choose this transaction boundary?
Why don't we physically delete products?
Why is retry disabled for this payment call?

এই reasoning ADR/RFC/PR description-এ থাকতে পারে।


10. Technical Decisions Must Stay Consistent

Suppose existing ADR বলে:

Historical products are not physically deleted
because orders must preserve historical references.

New feature এসে product deletion introduce করল, কিন্তু ADR বা design revisit করা হয়নি।

Then change potentially inconsistent।

Done-এর আগে engineer check করবে relevant documented decision violate হচ্ছে কি না।


11. Pull Request Review Is Required

Our simulated engineering workflow direct merge নয়।

Change PR-এর মাধ্যমে review হবে।

Why review?

Reviewer check করতে পারে:

Does behaviour match the requirement?

Are edge cases handled?

Is the design understandable?

Are tests meaningful?

Are there security concerns?

Are there migration risks?

Is scope larger than necessary?

Reviewer শুধু syntax checker নয়।


Code Review Is Not About Proving Who Is Smarter

Healthy review goal:

improve correctness
share context
catch risk
maintain consistency

Bad review culture:

personal preference battles
nitpicking without value
showing superiority

Course-এর later engineering workflow module-এ code review detail করব।

এখন শুধু এটুকু establish করছি:

Review আমাদের Definition of Done-এর অংশ।


12. Review Feedback Must Be Resolved

PR review হয়েছে মানেই Done নয়।

Suppose reviewer comment:

This path can reduce inventory before order persistence.
If persistence fails, state may become inconsistent.

Author comment ignore করে merge করল।

Review process-এর value হারিয়ে গেল।

Feedback resolve করার possible outcome:

code changed

বা:

discussion confirms current design is correct

বা:

follow-up work explicitly agreed

But unresolved meaningful feedback রেখে Done claim করা উচিত নয়।


13. CI Must Pass

Continuous Integration pipeline automatedভাবে verify করবে project-এর key quality checks।

Our initial CI expectation:

build
automated tests

Later additional checks থাকতে পারে, but we will not invent unnecessary pipeline complexity now।

If CI red:

work is not Done

even if:

works on my machine

Why CI Is Trusted More Than Personal Environment

Developer environment unique হতে পারে।

CI standardized।

If:

Developer A
Developer B
CI

সব একই source থেকে reproducibly build/test করতে পারে, confidence বাড়ে।


14. Known Risks Must Be Acceptable

Sometimes code correct এবং tests pass, but change still risky।

Example:

Migration rewrites a huge table.

বা:

Payment behaviour changed.

বা:

Authorization logic changed.

Definition of Done-এর deeper question:

Are known risks understood and appropriately handled?

For small work:

no special rollout concern

হতে পারে।

For risky production change:

rollout plan
monitoring
rollback plan

later প্রয়োজন হতে পারে।

সব task-এর জন্য heavyweight process নয়।

Risk অনুযায়ী process।


Definition of Done Is a Minimum, Not Maximum

Suppose DoD says:

Relevant tests added.

Engineer যদি critical concurrency behaviour নিয়ে কাজ করে, শুধু একটি minimal test enough নাও হতে পারে।

Definition of Done baseline।

Good judgement still প্রয়োজন।


Definition of Done Should Not Become Bureaucracy

Bad DoD:

47 checkboxes
12 mandatory documents
3 approval committees
5 reports

even for trivial typo।

এতে team process follow করতে বেশি সময় spend করবে than delivering value।

Good DoD should protect meaningful quality।

আমাদের course project-এ baseline intentionally compact।


Different Work May Need Additional Conditions

Suppose simple internal refactor।

DoD:

behaviour preserved
tests pass
review complete
CI passes

enough হতে পারে।

কিন্তু database migration:

migration validated

additional consideration।

External payment change:

failure behaviour tested

important।

Production deployment change:

rollback considerations

relevant।

So:

One baseline Definition of Done, plus work-specific completion criteria.


Definition of Ready Is Different

Some teams another concept use করে:

Definition of Ready

এটি বলে work implementation শুরু করার জন্য sufficiently understood কি না।

For example:

scope clear
acceptance criteria available
blocking questions resolved

আমরা এই course-এ separate formal Definition of Ready introduce করছি না।

কারণ unnecessary process layer দরকার নেই।

কিন্তু conceptually Module 1-এর আগের lessons exactly সেই কাজই করছে:

Understand requirement
Clarify behaviour
Define acceptance criteria
Understand context

তারপর implementation planning।


Don't Confuse "Merged" With "Delivered"

Suppose PR merged।

Does that mean customer feature পেয়েছে?

Necessarily না।

Flow হতে পারে:

Code Complete
    ↓
Reviewed
    ↓
Merged
    ↓
Built
    ↓
Deployed
    ↓
Verified

Later shipping module-এ আমরা delivery lifecycle detail করব।

এই stage-এ engineering ticket merge-ready হওয়াকে baseline completion হিসেবে ব্যবহার করতে পারি।

Production-specific change-এর সময় Definition of Done expand হবে।


Ticket Statuses Can Reflect Reality

Real team workflow example:

To Do
  ↓
In Progress
  ↓
In Review
  ↓
Done

Some teams:

Ready for Deployment

বা:

Released

separate রাখে।

Exact workflow company-specific।

আমাদের জন্য important হলো status যেন actual work state communicate করে।


"Code Complete" Can Be a Useful Intermediate State

Engineer বলতে পারে:

Implementation is complete, but the ticket is still in review.

এটি precise communication।

Better than:

It's basically done.

"Basically done" usually ambiguous।


Example: Order Creation Ticket

Suppose future ticket:

BACKEND-125
Implement order creation workflow

Acceptance Criteria:

Order contains at least one item.

Products must exist.

Quantity must be positive.

Inventory must be sufficient.

Backend calculates total.

Any invalid item causes the full request to fail.

Before marking Done:

[✓] Required behaviour implemented

[✓] Domain/business validations implemented

[✓] Unit tests added where relevant

[✓] Integration tests added for workflow

[✓] Existing tests pass

[✓] Build passes

[✓] No unrelated scope added

[✓] API documentation updated if endpoint changed

[✓] PR opened

[✓] Review completed

[✓] Feedback resolved

[✓] CI passes

এখন "Done" meaningful।


Example: Database Migration Ticket

Suppose ticket:

Create persistence schema for products.

Completion should include:

migration file committed

application mapping works with the schema

integration test runs against expected database structure

clean environment can apply migrations

build/tests pass

review completed

Local manually-created table যথেষ্ট নয়।


Example: Documentation-Only Ticket

Suppose ticket:

Document order cancellation design decision.

এখানে:

database migration

irrelevant।

API test

irrelevant।

Definition of Done blindly every checkbox apply করবে না।

Relevant conditions apply করবে।

This is why engineering judgement matters।


Example: Bug Fix

Suppose production bug:

Order total rounds incorrectly.

Good Done expectation:

root behaviour understood

bug fixed

regression test added

existing tests pass

review complete

CI passes

Important:

Bug fix ideally future regression prevent করবে।

শুধু line change নয়।


A Useful Question Before Marking Done

Ask:

If I disappear after merging this change, does the repository contain enough code, tests, migrations, and context for the team to safely own it?

যদি answer no হয়, কাজ probably complete নয়।


Ownership Changes the Meaning of Done

Tutorial mindset:

I made it work.

Professional mindset:

The team can now safely own this change.

Difference huge।

Production code personal code নয়।

Once merged, team collectively maintain করবে।


"Works Today" vs "Can Be Maintained Tomorrow"

A rushed implementation may work today:

// large method
// duplicated logic
// no tests
// hidden assumptions

But next change difficult।

Definition of Done maintainability-এর minimum expectation protect করে।


DoD and Technical Debt

Sometimes deadline-এর কারণে team intentionally compromise করতে পারে।

Example:

We cannot complete the ideal refactor before release.

Then debt should be explicit।

Not:

hide it and mark everything perfect

Potential approach:

Current change is safe for release.

Known limitation documented.

Follow-up ticket created.

But follow-up ticket দিয়ে core acceptance criteria skip করা যাবে না।


Follow-Up Ticket Is Not an Escape Hatch

Bad:

Security validation missing.
We'll create a follow-up.

If security validation required for current feature correctness, ticket Done নয়।

Reasonable follow-up:

Current API satisfies agreed requirement.

Additional performance optimization
is desirable but not required for v1.

Difference হলো:

required correctness

vs:

future improvement

Quality Is Cheaper Before Merge

Bug coding-এর সময় catch করা easiest।

Then:

test

cost একটু বেশি।

Then:

review

Then:

staging

Then:

production

Production incident পর্যন্ত গেলে customer impact এবং investigation cost significantly increase করতে পারে।

Definition of Done early quality gates encourage করে।


Review the Diff, Not Just the Result

Suppose acceptance criteria satisfy হয়েছে।

কিন্তু implementation accidentally:

changes unrelated files
removes validation elsewhere
introduces unnecessary dependencies

PR review change scope inspect করবে।

Small, focused changes review easier করে।


Small Work Items Help Definition of Done

Ticket যদি বিশাল:

Build entire ordering system

তাহলে:

Is it done?

answer difficult।

Small ticket:

Implement product creation API

clearer।

This is one reason আমাদের next lesson-এ backlog smaller engineering tickets-এ break করা হবে।


Definition of Done Helps Planning

Suppose engineer estimate করছে:

This feature is one day of coding.

কিন্তু real completion includes:

implementation
tests
review iteration
migration
documentation

Then one day assumption inaccurate হতে পারে।

DoD planning-এর সময় full work দেখতে সাহায্য করে।


DoD and Team Trust

If every engineer knows:

Done means tested, reviewed, and CI green

then teammates status update trust করতে পারে।

No need to ask:

Did you add tests?

Does it actually build?

Did anyone review it?

Shared standard communication overhead reduce করে।


Our Definition of Done Document

Repository-তে আমরা lightweight document রাখতে পারি:

# Definition of Done

A work item is considered complete when all relevant conditions below are met.

## Behaviour

- Agreed scope is implemented.
- Acceptance criteria are satisfied.
- Relevant failure and validation behaviour is handled.

## Quality

- Relevant automated tests are added or updated.
- Existing tests pass.
- The application builds successfully.
- The change follows established project conventions.

## Data and API Changes

- Required database migrations are included.
- API documentation is updated when API behaviour changes.
- Relevant technical documentation is updated when needed.

## Review

- The change is submitted through a Pull Request.
- Review feedback is resolved.
- CI passes.

## Risk

- Known risks are understood and acceptable for the scope of the change.

এই document আমাদের baseline হবে।


What We Deliberately Did Not Add

আমরা DoD-তে add করিনি:

mandatory multiple approvals
mandatory performance benchmark for every ticket
mandatory ADR for every change
mandatory deployment for every code task
arbitrary coverage percentage

কারণ এগুলো current context-এ justified নয়।


Why We Are Not Setting a Code Coverage Percentage

Example policy:

80% code coverage required.

Simple এবং measurable।

কিন্তু coverage quality guarantee করে না।

You can write tests that execute code without meaningfully verify behaviour।

Example:

service.createOrder(request);

test executes method but meaningful assertion নেই।

Coverage increases।

Confidence not necessarily।

আমাদের approach:

Test important behaviour and risk deliberately.

Coverage metric later useful signal হতে পারে, but we won't use arbitrary percentage as Definition of Done।


Why We Are Not Requiring an RFC for Every Ticket

RFC useful when design scope large বা decision significant।

But ticket:

Add quantity validation

এর জন্য 10-page RFC wasteful।

Our documentation principle remains:

Ticket
for bounded work

ADR
for important architectural decisions

RFC
for larger technical proposals

Use the lightest mechanism that preserves needed context।


Why DoD Will Evolve

Team এবং system mature হলে Definition of Done evolve করতে পারে।

Later we may discover:

deployment verification is essential

বা:

migration rollback planning needs explicit attention

বা:

certain security checks should become standardized

Then team baseline update করতে পারে।

DoD static law নয়।

It is an engineering agreement।


DoD Should Reflect Actual Practice

Worst case:

Documentation says:

All changes require automated tests.

Reality:

Half the team skips them.

Then DoD is fiction।

Better small standard that team actually enforces than huge checklist nobody follows।

Our course project-এ আমরা established DoD consistently use করব।


Completion Review

Ticket Done করার আগে engineer quick self-review করতে পারে:

Did I implement only the agreed scope?

Did I satisfy every acceptance criterion?

Did I consider meaningful failure paths?

Are the important behaviours protected by tests?

Did I accidentally break existing behaviour?

Does the project build cleanly?

Are migrations/documentation included where needed?

Is the change understandable to the reviewer?

Have review comments been resolved?

Is CI green?

Are there known risks I have not communicated?

এই habit practical।


Definition of Done and Production Ownership

Later course-এ system production-এ যাবে।

তখন Done-এর meaning আরও operational হবে।

Example:

Deployment completed

Health checks are healthy

Expected metrics look normal

No obvious error-rate regression

Migration succeeded

আমরা সেই stage-এ appropriate delivery criteria add করব।

এখন implementation workflow-এর baseline establish করছি।


Engineering Principle

এই lesson-এর core principle:

Code written is not the same as work completed.

Professional completion means:

correct behaviour
+
appropriate tests
+
review
+
reproducible build
+
required documentation
+
understood risk

আর সবচেয়ে important mindset:

A change is done when the team can safely own it, not merely when the author stops typing.


Where We Are Now

Module 1-এর journey:

Product Requirement
        ↓
Requirement Analysis
        ↓
Functional vs Non-Functional Requirements
        ↓
User Stories and Acceptance Criteria
        ↓
Engineering Context
        ↓
Definition of Done
        ↓
Initial Engineering Backlog

আমাদের product behaviour sufficiently clear।

Engineering environment clear।

Quality bar-ও clear।

এখন আমরা implementation work plan করতে পারি।


Summary

এই lesson-এ আমরা শিখেছি:

  • "Done" শব্দটির team-wide shared meaning থাকা দরকার।
  • Definition of Done একটি minimum quality bar।
  • Acceptance Criteria feature behaviour define করে; Definition of Done delivery quality define করে।
  • Code লেখা শেষ হলেই work complete নয়।
  • Relevant automated tests completion-এর অংশ।
  • Existing tests এবং clean build pass করতে হবে।
  • Database changes versioned migrations-এর মাধ্যমে deliver করতে হবে।
  • API বা technical documentation relevant হলে update করতে হবে।
  • Pull Request এবং code review আমাদের workflow-এর অংশ।
  • Meaningful review feedback resolve করতে হবে।
  • CI green না হলে work Done নয়।
  • Known risks understand এবং communicate করা দরকার।
  • Definition of Done context অনুযায়ী apply করতে হয়; blindly every checkbox নয়।
  • Arbitrary coverage target, unnecessary RFC, বা excessive approval আমরা baseline-এ যোগ করছি না।
  • Definition of Done bureaucracy নয়; predictable engineering quality তৈরি করার mechanism।
  • A professional change becomes team-owned software, not just author-owned code।

পরের lesson হলো Creating Our Initial Engineering Backlog

সেখানে আমরা এখন পর্যন্ত agreed product stories এবং engineering context ব্যবহার করে project-এর প্রথম বাস্তব engineering tickets তৈরি করব, dependencies বুঝব, work-এর order ঠিক করব, এবং implementation শুরু করার জন্য একটি realistic backlog তৈরি করব।