নতুন tab-এ খুলবে

ভালো design বোঝার ভিত্তি

সমস্যা দেখার আগেই pattern-এর পূজা শুরু করবেন না।

এই page কোনো tutorial library নয়। প্রতিটি ধারণা কেন লাগে, কখন শেখা ভালো, এখন কতটা গভীরতা দরকার আর ছোট করে কী practice করবেন—সেটি বলে।

AI যুগে আসল bottleneck

Code বানানো সহজ হয়েছে। বোঝা, যাচাই করা আর safely বদলানো সহজ হয়নি।

AI output যত বাড়ে, review-এর দায়ও তত বাড়ে। এই ধারণাগুলো fancy vocabulary নয়—generated code merge করার আগে কোথায় প্রশ্ন করবেন, কীভাবে complexity কমাবেন আর failure সামলাবেন, তার practical lens।

  1. 01Clean Codeবুঝুন
  2. 02Code Smellsঝুঁকি দেখুন
  3. 03SOLIDদায় ভাগ করুন
  4. 04PatternsTrade-off বলুন
  5. 05DefensiveFailure সামলান

Merge করার নিয়ম: যে structure, validation বা pattern কেন আছে বোঝাতে পারবে না—শুধু AI আত্মবিশ্বাসের সঙ্গে লিখেছে বলে সেটি ship করবেন না।

01

Clean Code

কেন দরকার
ভালো নাম, ছোট coherent unit আর সহজ flow থাকলে team-এর অন্যরাও code বদলাতে পারে।
AI যুগে কেন আরও জরুরি
AI কয়েক সেকেন্ডে অনেক code দিতে পারে; পরিষ্কার নাম আর সহজ flow না থাকলে review-এর বোঝা আর ভুল—দুটিই দ্রুত বাড়ে।
কখন শিখবেন
দুই-তিনটি ছোট program বানানোর পর থেকেই শেখা শুরু করুন।
এখন কতটা
সমস্যাটি চিনতে পারা, নিজের ভাষায় ধারণাটি বোঝানো এবং ছোট একটি project-এ বুঝে প্রয়োগ করতে পারা।
ছোট্ট অনুশীলন
নিজের project-এর confusing একটি function-এর নাম বদলান বা ছোট ভাগে ভাঙুন।
যা এড়িয়ে চলবে
‘Clean’ করতে গিয়ে এমন clever abstraction বানাবেন না, যা পরে নিজেকেই অভিধান নিয়ে পড়তে হয়।
বাছাই করা guide
Clean Code and Refactoring
02

Code Smells

কেন দরকার
Code smell নিজে bug নয়; code বদলানো কঠিন হতে পারে—তার ইঙ্গিত।
AI যুগে কেন আরও জরুরি
Generated code compile করলেও duplicate logic, long method বা hidden coupling রেখে যেতে পারে। Smell আপনাকে কোথায় প্রশ্ন করতে হবে, সেই radar দেয়।
কখন শিখবেন
একই সমস্যায় বারবার আটকে গেলে।
এখন কতটা
সমস্যাটি চিনতে পারা, নিজের ভাষায় ধারণাটি বোঝানো এবং ছোট একটি project-এ বুঝে প্রয়োগ করতে পারা।
ছোট্ট অনুশীলন
Duplicate logic বা long parameter list খুঁজে cost লিখুন।
যা এড়িয়ে চলবে
Smell catalogue মুখস্থ করে প্রতিটি code-কে আসামির কাঠগড়ায় দাঁড় করিয়ো না।
বাছাই করা guide
Code Smells
03

Refactoring

কেন দরকার
আচরণ না বদলে design উন্নত করার disciplined পদ্ধতি।
AI যুগে কেন আরও জরুরি
AI-কে ‘পুরোটাই rewrite করুন’ বলার বদলে ছোট verified change করতে পারলে regression, token আর review cost নিয়ন্ত্রণে থাকে।
কখন শিখবেন
Testable working code হওয়ার পরে।
এখন কতটা
সমস্যাটি চিনতে পারা, নিজের ভাষায় ধারণাটি বোঝানো এবং ছোট একটি project-এ বুঝে প্রয়োগ করতে পারা।
ছোট্ট অনুশীলন
Characterization test দিয়ে একটি function simplify করুন।
যা এড়িয়ে চলবে
ভাঙা behavior আর architecture—দুটো একসঙ্গে rewrite করবেন না।
04

Defensive Programming

কেন দরকার
Input, dependency আর failure সম্পর্কে assumption স্পষ্ট করে system-কে নিরাপদভাবে ব্যর্থ হতে শেখায়।
AI যুগে কেন আরও জরুরি
AI happy path-এ বেশ বিশ্বাসযোগ্য হতে পারে; malformed input, timeout, missing permission বা অসম্পূর্ণ context-এ কী হবে—সেই দায় engineer-এরই।
কখন শিখবেন
User input, API, file, database বা AI output-এর boundary যোগ হলেই।
এখন কতটা
সমস্যাটি চিনতে পারা, নিজের ভাষায় ধারণাটি বোঝানো এবং ছোট একটি project-এ বুঝে প্রয়োগ করতে পারা।
ছোট্ট অনুশীলন
একটি external input validate করুন, failure result স্পষ্ট করুন এবং malformed case-এর test দিন।
যা এড়িয়ে চলবে
সব exception গিলে ফেলবেন না, secret log করবেন না, আর impossible state চুপচাপ accept করবেন না।
05

SOLID Principles

কেন দরকার
Dependency আর responsibility নিয়ে team-এ কথা বলার একটি vocabulary।
AI যুগে কেন আরও জরুরি
AI advanced abstraction বানাতে পারে; SOLID-এর প্রশ্নগুলো দিয়ে বুঝুন change-এর কারণগুলো মিশেছে কি না এবং dependency বদলানো বা test করা অযথা কঠিন হচ্ছে কি না।
কখন শিখবেন
ছোট application বানিয়ে change-এর কষ্ট নিজে দেখার পরে।
এখন কতটা
সমস্যাটি চিনতে পারা, নিজের ভাষায় ধারণাটি বোঝানো এবং ছোট একটি project-এ বুঝে প্রয়োগ করতে পারা।
ছোট্ট অনুশীলন
একটি class-এর responsibility split justified কি না explain করুন।
যা এড়িয়ে চলবে
SOLID-এর প্রতিটি letter দেখেই একটি করে interface বানাতে বসবেন না।
06

Design Principles

কেন দরকার
Cohesion, coupling, information hiding আর dependency direction change cost কমায়।
AI যুগে কেন আরও জরুরি
AI-এর suggestion বিচার করতে principle দরকার: কোন boundary স্থিতিশীল, কোন dependency উল্টো হওয়া উচিত আর কোথায় simple code-ই যথেষ্ট।
কখন শিখবেন
Multiple module-এর project-এ।
এখন কতটা
সমস্যাটি চিনতে পারা, নিজের ভাষায় ধারণাটি বোঝানো এবং ছোট একটি project-এ বুঝে প্রয়োগ করতে পারা।
ছোট্ট অনুশীলন
একটি dependency arrow উল্টে testability improve করুন।
যা এড়িয়ে চলবে
Diagram সুন্দর হলেই design ভালো—এমন ধরে নেবেন না। আঁকতে ভালো হলেই architect হওয়া যায় না।
07

Design Patterns

কেন দরকার
Recurring design pressure-এর shared vocabulary।
AI যুগে কেন আরও জরুরি
AI pattern-এর নাম জানে, কিন্তু আপনার trade-off জানে না। Pattern বুঝলে suggestion চিনতে, team-এর সঙ্গে আলোচনা করতে এবং অকারণ complexity ফিরিয়ে দিতে পারেন।
কখন শিখবেন
সমস্যাটি নিজের code-এ দেখার পরে।
এখন কতটা
সমস্যাটি চিনতে পারা, নিজের ভাষায় ধারণাটি বোঝানো এবং ছোট একটি project-এ বুঝে প্রয়োগ করতে পারা।
ছোট্ট অনুশীলন
Strategy বা Adapter দিয়ে existing pain solve করে alternative compare করুন।
যা এড়িয়ে চলবে
২৩টি GoF pattern মুখস্থ করে সকালের নাশতাতেও Factory খুঁজতে যাবেন না।
বাছাই করা guide
Design Patterns
08

Testing & Testability

কেন দরকার
Change confidence আর design feedback দেয়।
AI যুগে কেন আরও জরুরি
AI-generated outcome দেখতে ঠিক লাগতে পারে; executable test confidence-এর বদলে evidence দেয় এবং পরের change-এ behavior ধরে রাখে।
কখন শিখবেন
Business rule বা repeated regression শুরু হলেই।
এখন কতটা
সমস্যাটি চিনতে পারা, নিজের ভাষায় ধারণাটি বোঝানো এবং ছোট একটি project-এ বুঝে প্রয়োগ করতে পারা।
ছোট্ট অনুশীলন
Happy path, edge case আর failure behavior-এর test দিন।
যা এড়িয়ে চলবে
Coverage percentage-কে project-এর পরীক্ষার নম্বর বানাবেন না।
09

Architectural Boundaries

কেন দরকার
Policy-কে framework, UI আর external service থেকে আলাদা রাখে।
AI যুগে কেন আরও জরুরি
ভালো boundary দিলে AI-কে ছোট context-এ bounded task দেওয়া যায়; খারাপ boundary হলে একটি change অনেক অজানা জায়গায় ছড়িয়ে পড়ে।
কখন শিখবেন
Project-এর change reason আলাদা হতে শুরু করলে।
এখন কতটা
সমস্যাটি চিনতে পারা, নিজের ভাষায় ধারণাটি বোঝানো এবং ছোট একটি project-এ বুঝে প্রয়োগ করতে পারা।
ছোট্ট অনুশীলন
Core rule-কে I/O ছাড়া testable module-এ নিন।
যা এড়িয়ে চলবে
Tiny CRUD app-এ enterprise clean architecture-এর cosplay করবেন না।

বাছাই করা শেখার উপকরণ

পড়া কম নয়—তবে refactor-ও করুন

ধারণাটি পড়ার পর নিজের code-এ একটি সমস্যা খুঁজে testসহ উন্নত করুন। তখন শব্দ নয়, কারণটাও মনে থাকে।

শিখুনRefactoring.Guru·article·বিনামূল্যে

Clean Code and Refactoring

Readability, simplicity, duplication আর test-কে code maintain করার বাস্তব খরচের সঙ্গে যুক্ত করে—AI দিয়ে draft করা code-ও এর বাইরে নয়।

এতটুকু করুন: Clean code-এর বৈশিষ্ট্যগুলো পড়ে working code-এ naming, duplication বা বড় একটি function improve করুন। বড় refactor-এর আগে test দিয়ে behavior ধরে রাখুন।

শেষবার যাচাই:

PracticeRefactoring.Guru·article·বিনামূল্যে

Code Smells

Compile হওয়া বা AI-এর আত্মবিশ্বাসী output যে maintainability pressure দেখায় না, সেটি ধরার visual vocabulary দেয়।

এতটুকু করুন: Bloaters, Change Preventers আর Couplers দিয়ে শুরু করুন। নিজের project-এ একটি example খুঁজে change cost লিখুন; behavior protect করে তবেই refactor করুন।

শেষবার যাচাই:

আরও গভীরে · optionalRefactoring.Guru·article·বিনামূল্যে

Design Patterns

Pattern-কে adaptable design blueprint আর team-এর shared language হিসেবে বোঝায়; একই সঙ্গে সীমা আর misuse নিয়েও ভাবায়।

এতটুকু করুন: Pattern কী, লাভ কী আর criticism কোথায়—আগে এগুলো পড়ুন। Working code-এ সমস্যা দেখাতে পারলে তবেই Strategy বা Adapter দেখুন; simpler option-এর সঙ্গে compare করুন।

শেষবার যাচাই:

আরও গভীরে · optionalCommunity-maintained open guide·book·বিনামূল্যে

JavaScript Testing Best Practices

Behavior-focused test আর maintainability নিয়ে practical guidance।

এতটুকু করুন: Testing foundation পড়ে ছোট app-এ তিনটি meaningful test দিন।

শেষবার যাচাই:

এবার কী করবেন

একটা working project বেছে characterization test দিন।